| KV Client | Owns client protocol, request identity, retry, and resume behavior. In this design it participates in: Hash the key to a token and route using the current ring epoch. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents the external caller from also owning the contract and failure behavior of Token-Aware Router. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “Sloppy quorum accepts divergent concurrent writes” to the external caller. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the KV Client boundary before extracting or scaling it. |
| Token-Aware Router | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Coordinator writes WAL/memtable on replica set and waits for configured acknowledgments. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents KV Client from also owning the contract and failure behavior of Membership / Gossip. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “Tombstone removed before lagging replica returns” to KV Client. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Token-Aware Router boundary before extracting or scaling it. |
| Membership / Gossip | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Reads gather enough replicas, reconcile versions, and schedule read repair. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Token-Aware Router from also owning the contract and failure behavior of Partition Coordinator. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “Node joins and streams stale range” to Token-Aware Router. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Membership / Gossip boundary before extracting or scaling it. |
| Partition Coordinator | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Unavailable targets receive bounded hints; anti-entropy compares Merkle ranges later. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Membership / Gossip from also owning the contract and failure behavior of WAL / Memtable. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “Compaction saturates disk” to Membership / Gossip. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Partition Coordinator boundary before extracting or scaling it. |
| WAL / Memtable | Owns authoritative versioned state or immutable evidence. In this design it participates in: Compaction merges versions while retaining tombstones until every replica repair horizon passes. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Partition Coordinator from also owning the contract and failure behavior of SSTable Engine. | Let each service persist its own interpretation. That removes one clear commit boundary and makes retries, support, and reconciliation ambiguous. Here that simpler choice would couple “Ring partitions disagree on ownership epoch” to Partition Coordinator. | Costs schema migration, replication, backup, and shard ownership. Split storage only when access patterns, retention, or compliance boundaries materially differ. Measure the latency, saturation, lag, or mismatch at the WAL / Memtable boundary before extracting or scaling it. |
| SSTable Engine | Owns authoritative versioned state or immutable evidence. In this design it participates in: Hash the key to a token and route using the current ring epoch. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents WAL / Memtable from also owning the contract and failure behavior of Primary Replica. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “Sloppy quorum accepts divergent concurrent writes” to WAL / Memtable. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the SSTable Engine boundary before extracting or scaling it. |
| Primary Replica | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Coordinator writes WAL/memtable on replica set and waits for configured acknowledgments. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents SSTable Engine from also owning the contract and failure behavior of Follower Replicas. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “Tombstone removed before lagging replica returns” to SSTable Engine. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Primary Replica boundary before extracting or scaling it. |
| Follower Replicas | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Reads gather enough replicas, reconcile versions, and schedule read repair. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Primary Replica from also owning the contract and failure behavior of Quorum Tracker. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “Node joins and streams stale range” to Primary Replica. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Follower Replicas boundary before extracting or scaling it. |
| Quorum Tracker | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Unavailable targets receive bounded hints; anti-entropy compares Merkle ranges later. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Follower Replicas from also owning the contract and failure behavior of Hinted Handoff. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “Compaction saturates disk” to Follower Replicas. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Quorum Tracker boundary before extracting or scaling it. |
| Hinted Handoff | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Compaction merges versions while retaining tombstones until every replica repair horizon passes. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Quorum Tracker from also owning the contract and failure behavior of Read Repair. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “Ring partitions disagree on ownership epoch” to Quorum Tracker. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Hinted Handoff boundary before extracting or scaling it. |
| Read Repair | Executes idempotent asynchronous work under lease and retry policy. In this design it participates in: Hash the key to a token and route using the current ring epoch. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Hinted Handoff from also owning the contract and failure behavior of Merkle Anti-Entropy. | Perform the work before acknowledging the caller. This gives simpler consistency but unbounded tail latency and fragile retries. Here that simpler choice would couple “Sloppy quorum accepts divergent concurrent writes” to Hinted Handoff. | Costs leases, checkpoints, retries, DLQs, and lag operations. Separate once execution time or burstiness no longer fits the request deadline. Measure the latency, saturation, lag, or mismatch at the Read Repair boundary before extracting or scaling it. |
| Merkle Anti-Entropy | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Coordinator writes WAL/memtable on replica set and waits for configured acknowledgments. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Read Repair from also owning the contract and failure behavior of Compaction. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “Tombstone removed before lagging replica returns” to Read Repair. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Merkle Anti-Entropy boundary before extracting or scaling it. |
| Compaction | Owns one bounded domain decision, transition, or operational capability. In this design it participates in: Reads gather enough replicas, reconcile versions, and schedule read repair. | Separates a distinct scale, ownership, policy, or failure boundary. It prevents Merkle Anti-Entropy from also owning the contract and failure behavior of Backup / Restore. | Keep this behavior inside an adjacent service. Prefer that simpler option until independent scale, ownership, policy, or failure isolation is measurable. Here that simpler choice would couple “Node joins and streams stale range” to Merkle Anti-Entropy. | Costs an interface, deployment, telemetry, ownership, and failure mode. Keep it in-process first; extract when independent scale or reliability pays for the boundary. Measure the latency, saturation, lag, or mismatch at the Compaction boundary before extracting or scaling it. |
| Backup / Restore | Owns authoritative versioned state or immutable evidence. In this design it participates in: Unavailable targets receive bounded hints; anti-entropy compares Merkle ranges later. | Defines the source of truth and commit boundary. It prevents Compaction from also owning the contract and failure behavior of operators and repair tooling. | Let each service persist its own interpretation. That removes one clear commit boundary and makes retries, support, and reconciliation ambiguous. Here that simpler choice would couple “Compaction saturates disk” to Compaction. | Costs schema migration, replication, backup, and shard ownership. Split storage only when access patterns, retention, or compliance boundaries materially differ. Measure the latency, saturation, lag, or mismatch at the Backup / Restore boundary before extracting or scaling it. |