The Fallacies of Distributed Computing

The Fallacies of Distributed Computing are a set of eight assumptions that look obviously true to a programmer used to writing code for a single machine, but that quietly break any system once it is spread across a network. The canonical writeup is Arnon Rotem-Gal-Oz’s whitepaper “Fallacies of Distributed Computing Explained,” which gathers the list and explains why each assumption fails.

Rotem-Gal-Oz credits the origin to L. Peter Deutsch, a Sun Microsystems Fellow, who around 1994 drafted seven assumptions that designers of distributed systems are likely to make and that prove wrong in the long run. James Gosling, the creator of Java and also at Sun, is credited with adding the eighth. The final list reads: 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; and the network is homogeneous.

Each fallacy maps to a class of real-world failure. Assuming the network is reliable leads to code with no retry or timeout logic that hangs the first time a packet is dropped. Assuming latency is zero produces chatty designs that make hundreds of remote calls where one would do, fine on a local loopback and catastrophic across a continent. Assuming bandwidth is infinite or transport is free invites moving huge payloads that saturate links and inflate cost. Assuming the network is secure, static, homogeneous, and centrally administered ignores firewalls, address changes, mismatched protocols, and the many independent owners of the path between two services.

The lasting value of the list is as a checklist. It does not tell a designer what to build, but it names the comfortable illusions that, left unexamined, turn a working prototype into a production outage. Rotem-Gal-Oz’s paper remains the standard reference that ties the eight short slogans to the design decisions they should change.

Sources

Last verified June 8, 2026