Book Exercise Lanes
This module's exercise system is book-driven. Use these local chunks for targeted volume after you have already learned the concept from the guide.
How To Use This Page
- Finish the relevant concept page first.
- Solve at least one problem of your own from memory.
- Only then open the matching exercise lane.
- Keep a mistake log with tags such as
fallacy missed,wall-clock used for ordering,vector clock compare wrong,phi threshold too tight,quorum miscounted,Raft invariant confused,fencing token missing,retry without idempotency key.
Lane 1: The Inescapable Reality
Use this lane when the issue is still "thinking like a single-machine developer."
- DDIA: Faults and Partial Failures
- DDIA: Cloud Computing and Supercomputing
- DDIA: Unreliable Networks
- DDIA: Timeouts and Unbounded Delays
- DDIA: Synchronous Versus Asynchronous Networks
- DDIA: Process Pauses (Part 1)
- DDIA: Process Pauses (Part 2)
- Database Internals: Fallacies of Distributed Computing
- Database Internals: Two Generals' Problem
- Database Internals: System Synchrony
- Coulouris: Challenges (Part 1)
- Coulouris: Challenges (Part 2)
- Coulouris: Challenges (Part 3)
- Coulouris: Fundamental Models (Part 3)
Target outcomes:
- 1 fallacy audit of a real system you know (each of the eight labeled "handled by X" or "latent bug").
- 1 written enumeration of the partial-failure outcome set for a real RPC in your stack.
- 3 timeout/tail-latency traces produced on a small test bed (varying GC/pause injection).
Lane 2: Clocks and Ordering
Use this lane when you know the rules but cannot apply them quickly mid-discussion.
- DDIA: Unreliable Clocks
- DDIA: Clock Synchronization and Accuracy
- DDIA: Relying on Synchronized Clocks (Part 1)
- DDIA: Relying on Synchronized Clocks (Part 2)
- DDIA: Ordering and Causality (Part 1)
- DDIA: Ordering and Causality (Part 2)
- DDIA: Sequence Number Ordering (Part 1)
- DDIA: Sequence Number Ordering (Part 2)
- Database Internals: Clocks and Time
- Database Internals: Ordering
- Coulouris: Synchronizing Physical Clocks (Part 1)
- Coulouris: Logical Time and Logical Clocks
Target outcomes:
- 5 traces of 3-process systems with Lamport and vector stamps filled in by hand.
- 3 concurrency-detection exercises where you must identify every concurrent pair from the vector clocks.
- 1 written analysis of a production LWW design that breaks because of clock skew.
- 1 NTP vs monotonic vs logical decision memo for a real system.
Lane 3: Failure Detection and Membership
Use this lane when the abstract idea of a failure detector doesn't translate into concrete timeout choices.
- Database Internals: Chapter 9 - Failure Detection
- Database Internals: Phi-Accrual Failure Detector
- Database Internals: Summary (Chapter 9 - Failure Detection)
- Database Internals: Omission Faults
- Database Internals: Gossip Dissemination
- Database Internals: Hybrid Gossip
- Database Internals: Chapter 12 - Anti-entropy and Dissemination
- Database Internals: PBFT Algorithm
- DDIA: Byzantine Faults
- DDIA: System Model and Reality
- Coulouris: Gossip architecture (Part 1)
Target outcomes:
- 1 heartbeat-tuning worksheet: given a workload, compute heartbeat interval, timeout or phi threshold, and expected false positives.
- 1 comparison of fixed-timeout vs phi-accrual for a real cluster you know.
- 1 SWIM-style membership walkthrough: draw how a membership update propagates across 100 nodes.
- 1 written decision about whether a system needs BFT or crash-stop is sufficient, with justification.
Lane 4: Consensus
Use this lane when concept pages are clear but mid-trace reasoning falls apart.
- DDIA: Distributed Transactions and Consensus
- DDIA: Fault-Tolerant Consensus (Part 1)
- DDIA: Fault-Tolerant Consensus (Part 2)
- DDIA: Fault-Tolerant Consensus (Part 3)
- Database Internals: Chapter 14 - Consensus
- Database Internals: Paxos
- Database Internals: Quorums in Paxos
- Database Internals: Multi-Paxos
- Database Internals: Egalitarian Paxos
- Database Internals: Raft
- Database Internals: Leader Role in Raft
- Database Internals: ZAB
- Coulouris: Consensus and related problems (Part 1)
- Coulouris: Consensus and related problems (Part 2)
- Coulouris: Consensus and related problems (Part 3)
Target outcomes:
- 3 Paxos traces with quorum-intersection check, at least one with a competing proposer.
- 3 Raft traces with one failure injection each (leader crash, follower crash, partition).
- 1 decision memo comparing Multi-Paxos, Raft, and a coordination-service abstraction for a specific use case.
- 1 FLP-aware written argument for why your chosen protocol is safe (preserves agreement) at the cost of occasional unavailability.
Lane 5: Distributed Patterns
Use this lane when the individual concepts are solid but you still can't compose them into an end-to-end design.
- DDIA: The Truth Is Defined by the Majority
- DDIA: Membership and Coordination Services
- DDIA: The End-to-End Argument for Databases (Part 1)
- DDIA: The End-to-End Argument for Databases (Part 2)
- Database Internals: Chapter 10 - Leader Election
- Database Internals: Bully Algorithm
- Database Internals: Coordination Avoidance
- Coulouris: Elections (Part 1)
- Coulouris: Data storage and coordination services (Part 1)
- Coulouris: Data storage and coordination services (Part 2)
Target outcomes:
- 1 full split-brain prevention design: quorum election, lease, fencing token, all composed.
- 1 idempotent HTTP endpoint design document with idempotency-key schema and failure-mode table.
- 1 coordination-service selection memo (ZK vs etcd vs Consul) for a real hypothetical system.
- 1 postmortem analysis citing specific concepts from this module.
Self-Curated Problem Set
Build a custom set with these minimums:
- 3 fallacy audits on 3 different systems.
- 3 Lamport + vector trace exercises from scratch.
- 3 phi-accrual tuning exercises.
- 3 Paxos traces with quorum check.
- 3 Raft traces including at least one partition and one crash.
- 2 split-brain prevention designs (one with lease, one with fencing).
- 2 idempotent-API designs for different domains (payments, scheduling).
Completion Checklist
- Completed at least one lane in full.
- Logged at least 12 real mistakes and corrections.
- Traced both Paxos and Raft runs by hand end to end, including failure injection.
- Wrote a split-brain prevention design composing quorum, lease, and fencing.
- Designed at least one end-to-end idempotent API.
- Analyzed at least one real postmortem using the module vocabulary.