System Design Space
Knowledge graphSettings

Updated: June 25, 2026 at 1:55 AM

Designing Distributed Systems (short summary)

medium

This book matters because it makes distributed systems tangible through small composable building blocks rather than through abstract diagrams of ten services.

In real design work, the chapter shows how neighboring containers, local mediators, request fan-out, work queues, and batch processing combine into practical flows.

In interviews and engineering discussions, it helps present patterns as a way to simplify a system without hiding the real constraints and weak spots behind them.

Practical value of this chapter

Design in practice

Build distributed flows from small patterns with clear ownership boundaries.

Decision quality

Stress-test patterns for idempotency, safe retries, and observability in complex processing chains.

Interview articulation

Explain the design through neighboring containers, local mediators, adapters, queues, and request fan-out.

Trade-off framing

Call out when patterns truly reduce complexity and when they only mask deeper system issues.

Related book

Kubernetes Patterns

A pattern catalog for application lifecycle, configuration, Jobs, and Kubernetes operators.

Read review

Designing Distributed Systems

Authors: Brendan Burns
Publisher: O'Reilly Media, 2018
Length: 162 pages

A review of Brendan Burns's book: composable distributed-system patterns for Pod composition, replication, sharding, scatter/gather, work queues, and team responsibility.

Original
Translated

A distributed system is easy to reduce to boxes and arrows and lose the point. Brendan Burns takes the opposite route: build it from ready-made patterns — Pod and container composition, Sidecar, Ambassador, Adapter, replicated services, sharding, Scatter/Gather, work queues, event-triggered batch processing, and responsibility tables. Once a block has a name and a known cost, the architecture argument is about trade-offs rather than a random collection of Kubernetes manifests.

Documentaries

Book structure

Single-Node Patterns

Sidecar, Ambassador, and Adapter solve one problem — add behavior without rewriting the application. The base is container composition inside a single Pod.

Multi-Node Patterns

When one node stops keeping up, you spread the load across several: replication, sharding, and scatter/gather.

Batch Patterns

Work queues, event-triggered batch processing, and coordination of multi-step computational workflows.

Single-node patterns

Logs, TLS termination, config reads — you want all of it out of the application code. Single-node patterns place sibling containers next to the main one and keep cross-cutting behavior separate, without touching the business logic itself.

Sidecar Pattern

The Sidecar pattern puts a second container alongside the first: it takes on the infrastructure work while the application code stays untouched.

Where it fits:

  • Log shipping with Fluentd or Filebeat
  • Configuration synchronization with git-sync
  • TLS termination close to the application

Pod

App
business logic
+
Sidecar
logs, TLS, config

Two containers share one Pod lifecycle but own different responsibilities.

Multi-node serving patterns

Deep dive

Designing Data-Intensive Applications, 2nd Edition

DDIA on replication, sharding, and consistency guarantees.

Read review

Replicated Load-Balanced Services

A replicated service runs identical instances behind load balancing. It is the baseline path for scaling stateless services.

horizontal scalinghigh availabilityrolling updates
Load balancing
Replica A
Replica B
Replica C

Batch computational patterns

Related book

Building Microservices

Sam Newman on business-process coordination and service interaction.

Read review

Work Queue Systems

The producer-consumer pattern puts work items into a queue, while workers consume them in parallel.

Where it fits:

  • The source creates tasks
  • The queue smooths different rates between stages
  • Workers scale independently of the source
Source
Queue
Worker 1
Worker 2
Worker 3

Team responsibility and functions as a service

Hands-Off Table

At three in the morning you should not have to guess who to wake. A responsibility table records which team owns a component, who supports it, and who gets called during an incident.

Team A
Team B
API Gateway
owns
supports
Payments
supports
owns
Data Lake
owns
-

Applying it in system design interviews

Useful concepts

  • Sidecar for cross-cutting concerns
  • Ambassador for service mesh integration
  • Sharded services for data and traffic growth
  • Scatter/Gather for parallel search and analytics
  • Work queues for batch processing

Where it helps

  • How would you add log collection without changing application code?
  • How would you scale a stateful service?
  • How would you implement distributed search?
  • How would you process millions of events without overwhelming consumers?

Main takeaways

Single-node patterns start with container composition.
Replicated services are the cheapest path to growth — but only while state lives outside them.
Sharding is needed when one node can no longer hold the data volume or request flow.
Scatter/Gather can speed up distributed queries.
A queue between stages absorbs load spikes: producer and consumers scale independently.
A good pattern reduces coupling, while a poor fit adds operational complexity.

Related chapters

Where to find the book

Enable tracking in Settings