How to use this reference
- Work through topics top to bottom — Raft assumes you understand replication; sagas assume you understand at-least-once delivery from messaging.
- DDIA is the anchor book — each subtopic points to specific chapters, not cover-to-cover reading. Fowler's Patterns of Distributed Systems complements for concise pattern names.
- We deliberately do not repeat Networking (TCP, DNS, LB), OS (processes, clocks), or Concurrency (mutexes on one machine) — those are prerequisites.
- Optional tasks favor paper drills and browser visualizers (Raft); one optional Docker Kafka exercise if you already run containers.
- Topic 9 — Deep Cuts (Infra) is optional. Skip it for standard backend system design; do it for storage, platform, or consistency-heavy roles (Spanner-style loops, etcd/Kafka platform teams). Adds ≈10h on top of the core path.
- Topic 10 — Optional Coding Practice maps concepts to in-memory coding exercises and a few LeetCode problems — no cluster required. Skip if your loop is design-only.
The Reference
- 1
Partial failure, CAP/PACELC, and how to estimate scale and assemble building blocks in a design round.
- 2
What "consistent" means to clients — from linearizability to eventual.
- 3
Multiple copies of data — leaders, followers, lag, and quorum math.
- 4
Splitting data across nodes — partition keys, hot spots, and resharding.
- 5
Clocks lie, events need order — Lamport, vectors, and conflict detection.
- 6
Agreeing on one answer — Raft, leader election, locks, and fencing.
- 7
Atomicity across services and databases — 2PC limits, Sagas, and the outbox.
- 8
Commit logs, Kafka semantics, and delivery guarantees across distributed components.
- 9
Optional hard-core material for storage, platform, and consistency-heavy loops — skip unless your target role needs it.
- 10
In-memory exercises and autograded problems — no cluster, Docker, or cloud setup required.