Single machine vs distributed
On one host, failure is mostly binary: the process is up or down. In a distributed system, partial failure is normal — one replica is slow, one AZ is unreachable, one message is duplicated. Your design must assume components fail independently while others keep running.
Failure modes (interview vocabulary)
| Failure | What happens |
|---|---|
| Crash | Node stops; others may not notice immediately |
| Omission | Messages dropped (network, overloaded receiver) |
| Timing / performance | Node or link is slow — indistinguishable from crash without timeouts |
| Byzantine | Node behaves arbitrarily wrong — rarely assumed in backend interviews unless crypto/blockchain |
Cascading failure — one slow dependency backs up callers; thread pools exhaust; the blast radius grows. Timeouts and backpressure exist partly to limit this (Concurrency roadmap covers single-machine sync; here the failure crosses the network).
The eight fallacies (know the top four)
Peter Deutsch's fallacies — statements that are false in distributed systems:
- The network is reliable
- Latency is zero
- Bandwidth is infinite
- The network is secure
- Topology doesn't change
- There is one administrator
- Transport cost is zero
- The network is homogeneous
Interviewers use these to probe whether you design for retries, timeouts, idempotency, and explicit failure handling — not whether you can recite all eight.
What you already know from sibling tracks
- Networking — TCP retries, DNS TTL, partitions at the transport layer.
- OS — processes, scheduling, clocks that drift.
- Concurrency — races on one machine; distributed systems add independent failures and no shared memory.
Senior signal
Say "partial failure" instead of "the service went down." Distinguish unavailable (can't reach a quorum) from degraded (stale reads allowed). That's the mindset every later topic builds on.
Further Reading
- Designing Data-Intensive Applications — Ch. 1: Reliable, Scalable, and Maintainable Applications (§1.3 reliability, §1.4 scalability)Book30m
- DDIA — Ch. 2: Data Models and Query Languages (skim §2.1); then Ch. 8 intro: the trouble with distributed systems (§8.1 faults and partial failures)Book25m
- Martin Fowler — Patterns of Distributed Systems: Introduction (partial failure mindset)Article15m
Hands-On Tasks (Optional)
Low-setup exercises — browser visualizers, paper drills, or optional Docker. No autograding; the goal is interview fluency.
- Sketch a three-service failure scenario20m
Draw Client → API → DB + Cache. Mark three realistic failure modes (process crash, slow network, split partition). For each, note what the client sees and what must be true for correctness. Paper only.