Designing Distributed Systems
Designing Distributed Systems: Patterns and Paradigms for Scalable, Reliable Services is by Brendan Burns, a co-founder of the Kubernetes project and a Corporate Vice President at Microsoft Azure. Just as the “Gang of Four” design patterns gave object-oriented programmers a shared vocabulary, this book collects reusable patterns for building distributed systems out of containers. The second edition (O’Reilly) updates the original and adds new chapters on AI inference, AI training, and making systems robust in the real world.
What it covers
- Single-node patterns: how containers on one machine work together: the sidecar (adding features such as TLS or logging to an existing app), the ambassador (proxying a service’s communication with the outside world) and the adapter (standardizing monitoring and logging output).
- Serving patterns: replicated load-balanced services, sharded services, scatter/gather, functions-as-a-service and event-driven processing, and ownership election (leader election and distributed locks).
- Batch patterns: work-queue systems, event-driven batch pipelines, and coordinated batch processing such as join, reduce and MapReduce-style workflows.
- Second-edition material: patterns for serving and training AI models, and the practical concerns of operating systems in production, such as monitoring, failure handling and reliability.
Why it’s worth reading
Each pattern comes with a concrete example, usually deployed on Kubernetes, so the ideas move quickly from diagram to running system. It’s short and practical, and especially relevant to modern ML infrastructure: model servers, request routers, sharded indexes and batch training pipelines are all built from these same patterns.