Distributed Fallacies Impact Lab (Interactive)
Turn RTT, packet loss, and clock drift up and watch each naive assumption break your code live. Sweep the eight operational assumptions engineers make about networks and clocks, and compute the concrete failures each one hides in a fan-out call.
The 8 Fallacies Failure-Domain Lab
An order service fans out 3 parallel RPCs across regions. Bend latency, loss, and clock drift to see which fallacies your design silently assumes.
- ✗ 1. The network is reliable
- ✗ 2. Latency is zero
- · 3. Bandwidth is infinite
- · 4. The network is secure
- · 5. Topology doesn't change
- · 6. There is one administrator
- · 7. Transport cost is zero
- · 8. The network is homogeneous
How It Works Under the Hood
L Peter Deutsch’s eight fallacies — reliable network, zero latency, bandwidth unlimited, topology static, no timeouts, no packet loss, one administrator, homogeneous clocks — are assumptions every early distributed code silently bakes in. This lab drives a three-way service fan-out: packet loss multiplies into request-level failure, latency turns local-looking calls into timeout ambiguity, and clock drift reorders events that application logic trusts to be sequential. Every toggle shows the exact symptom a naive codebase would hit, converting a checklist of folklore into measurable bugs you can reason about at design time.
Core Architectural Principles
- Fan-out success rate computed as (1−p)³: loss compounds with every dependency you add.
- Timeout ambiguity count: requests that finish after the caller gave up and cannot be trusted.
- Clock-drift threshold flips last-write-wins into silently discarding newer user edits.
When justifying retries, circuit breakers, or monotonic clocks, cite the specific fallacy each defends against: “we retry because networks partition, we use server-side timestamps because client clocks drift.” Naming the fallacy shows you understand these are structural properties, not bugs to patch.
Engineering around all eight fallacies costs latency and complexity, but ignoring any one of them costs correctness.