Why replicate?
Replication serves two distinct goals that are often conflated:
- Fault tolerance: if one node dies, another holds the data. Even a single replica raises durability from one hard drive's MTBF to the product of two independent failures.
- Read throughput: serving reads from multiple replicas linearly scales read capacity. Writes still require coordination.
These goals pull in different directions. Maximizing fault tolerance (many replicas, synchronous) adds write latency. Maximizing read throughput (many replicas, async) risks serving stale data. Every replication strategy is a trade-off between these two axes. Before choosing a topology, decide which failure scenarios you're designing for and what staleness the application can tolerate.
