The Eight Fallacies of Distributed Computing
by
Peter Deutsch∞
Essentially everyone, when they first build a distributed application, makes the following eight assumptions. All prove to be false in the long run and all cause big trouble and painful learning experiences.
- 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
Attribution
The true origins of this list are somewhat mythic, being largely based on the collective experience of many hackers in the early days of building distributed systems. Peter Deutsch is the one who first enumerated them as a clear way to frame thinking about why distributed systems are fundamentally different. He says the following on his home page:
I first published the "8 Fallacies of Networking" internally while working at Sun Microsystems Labs in 1991-92. (The first 4 were originally described by either Bill or Dick Lyon; I added the other 4.)
I'm pretty sure that Tom (Pugs) Lyon had a hand in the list too.
Further reading:
- Martin Fowler published an article in Software Development magazine called Errant Architectures∞ which is in the same vein as this list. He talks about the lure of distributing each piece of functionality on a different node in the system, without realizing what the performance impact might be. Martin's article is adapted from Chapter 7 from
Warning: file(http://xml.amazon.com/onca/xml3?t=performanc0ec-20&dev-t=D2A4M8KV5P9GZU&AsinSearch=0321127420&mode=books&sort=+pmrank&offer=All&type=lite&page=&f=http;//www.performancetester.com/amazon/1.xsl) [function.file]: failed to open stream: HTTP request failed! HTTP/1.1 410 Gone
in /home/stensca/public_html/kb/actions/isbn.php on line 12
Warning: implode() [function.implode]: Invalid arguments passed in /home/stensca/public_html/kb/actions/isbn.php on line 12
.
- Ted Neward actually expands this list to 10 fallacies in this presentation∞.
There are no comments on this page. [Add comment]