From "Designing Data-Intensive Applications"
🎧 Listen to Summary
Free 10-min PreviewNetwork Reliability and Resource Utilization Trade-offs
Key Insight
Modern datacenter networks and the internet employ packet-switched protocols like Ethernet and IP, which are optimized for bursty traffic. This means bandwidth is shared dynamically, with packets jostling for space, leading to variable delays due to queueing at switches and receiving machines. While this approach maximizes network utilization, it inherently sacrifices predictable latency, as there's no upper limit on packet arrival times.
In contrast, traditional fixed-line telephone networks are synchronous, establishing a dedicated 'circuit' with guaranteed bandwidth and fixed, bounded delays for the duration of a call. This prevents queueing and ensures predictable latency, as a fixed allocation of resources is reserved exclusively. However, using circuits for bursty data transfers would lead to wasted network capacity if the allocated bandwidth is too high, or unnecessarily slow transfers if too low.
This trade-off between predictable delays and resource utilization is a general principle. Static resource partitioning (e.g., dedicated circuits, guaranteed CPU time in real-time systems) provides latency guarantees but often results in lower utilization and higher cost. Dynamic partitioning (e.g., packet switching, shared CPU cores in multi-tenant environments) offers better utilization and cost-effectiveness, but at the expense of variable delays and less predictable response times. Therefore, the unreliability of modern networks is not inevitable but a consequence of deliberate cost-benefit design choices.
📚 Continue Your Learning Journey — No Payment Required
Access the complete Designing Data-Intensive Applications summary with audio narration, key takeaways, and actionable insights from Martin Kleppmann.