All laws

47Distributed Systems

Fallacies of Distributed Computing

The hidden assumptions of networked code.

If

Newcomers to distributed systems silently assume the network is reliable, latency is zero, bandwidth is infinite, the network is secure, topology is stable, there is one administrator, transport cost is zero, and the network is homogeneous. Every one of these eight assumptions fails in production.

Then

Before shipping any cross-process call, name which of the eight assumptions you are relying on and add an explicit timeout, retry, and failure path for each.

Unless

Design for Failure — without gold-plating against impossible modes

Improve this article on GitHub