When the network partitions, what breaks — availability or consistency? And even when it doesn’t, what do you trade for lower latency?
- If a partition happens, can this system reject writes/reads (favoring consistency) or must it keep serving (favoring availability)?
- Absent a partition, is there still a latency-vs-consistency trade being made on every request (PACELC’s "else" clause)?
- Is a partition actually likely for this deployment topology, or is this a single-region system where the P in CAP rarely fires in practice?
CP (consistency over availability)
When to use: Financial ledgers, inventory counts, anything where serving stale or conflicting data is worse than an error page.
Trade-offs: Nodes on the minority side of a partition refuse requests until they can confirm they have the latest state — real, user-visible downtime during a partition.
AP (availability over consistency)
When to use: Social feeds, shopping carts, presence indicators — anywhere a slightly stale read is acceptable and staying up matters more.
Trade-offs: Every node keeps serving during a partition, but different nodes can disagree until they reconcile — requires a conflict-resolution strategy (last-write-wins, CRDTs, application-level merge).
PACELC’s "else": latency vs consistency with no partition at all
When to use: Any system, at all times — this is the trade you’re making on the happy path, not just during failures.
Trade-offs: Synchronous replication for strong consistency adds round-trip latency to every write; async replication is fast but leaves a window where a reader can see stale data.
Go deeper
CAP is a partition-time statement, not a permanent system label
A system can be CP during a partition and still make a separate latency/consistency trade the rest of the time — PACELC exists precisely because CAP alone underspecifies steady-state behavior.