Home/Labs/Distributed Fallacies Lab
All 280 Labs
INTERACTIVE LAB🌍

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.

Cross-region RTT70ms
Packet loss rate2%
RPC payload size512KB
Max clock drift120ms
Fan-out time (reality)
111.0 ms
vs naive estimate 0 ms (assumes fallacy #2!)
All 3 RPCs succeed
94.1%
Your "reliable network" assumption is off by 5.9%
Ambiguous timeouts / fan-out
0.06
ran but ACK lost → retry needs idempotency
LWW ordering (writers 40ms apart)
INVERTS
2×drift > 40ms commit gap
Fallacy scoreboard
  1. ✗ 1. The network is reliable
  2. ✗ 2. Latency is zero
  3. · 3. Bandwidth is infinite
  4. · 4. The network is secure
  5. · 5. Topology doesn't change
  6. · 6. There is one administrator
  7. · 7. Transport cost is zero
  8. · 8. The network is homogeneous
A single node is crash-stop: it runs or it dies. This fan-out fails partially — Node B may have charged the card while the coordinator only saw a timeout. Timeouts, retries, backoff, and bounded-clock protocols (TrueTime, vector clocks) exist precisely because these eight assumptions are false.

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.
Interview Round Script

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.

Key Trade-Offs

Engineering around all eight fallacies costs latency and complexity, but ignoring any one of them costs correctness.

Related Curriculum Chapter

What Makes a System "Distributed" & Why It Is Hard

Read Full Chapter Blueprint

Explore More Interactive Labs

View All 280 Labs