© 2019 Strange Loop
The wild growth of the web and mobile has driven the need for scalability in server architectures. Scalability is generally achieved by building distributed solutions, yet we developers still make some pretty simple mistakes due to what are often common misconceptions. Many of these misconceptions are summarized by the eight fallacies of distributed computing.
I first heard about these fallacies in an off-hand remark by James Gosling at JavaOne in 2000. Gosling attributed them to Peter Deutsch. Although the eight fallacies are not widely known, as a group they summarize many of the dangers faced by distributed application developers.
The eight fallacies are listed as simple statements that express important concepts in distributed computing:
Fallacy 1: The Network Is Reliable. Fallacy 2: Latency Is Zero. Fallacy 3: Bandwidth Is Infinite. Fallacy 4: The Network Is Secure. Fallacy 5: Topology Doesn't Change. Fallacy 6: There Is One Administrator. Fallacy 7: Transport Cost Is Zero. Fallacy 8: The Network is Homogeneous.
In this talk I will expand on each fallacy by providing context, examples and a sprinkling of some real world experiences from my time at NeXT, PRI, TIBCO and Fog Creek. Hopefully most of the examples will be humorous, but others may likely seem tragic. My ultimate goal is to provide you with new ways to visualize possible problems in your distributed architectures, and motivate you to re-evaluate your designs while maintaining a healthy fear of back-hoes.
Stephen is a member of the Kiln product group at Fog Creek Software. Before joining Fog Creek, Stephen was a principal architect in TIBCO's messaging group, working on ultra-low latency messaging and distributed configuration. As a member of TIBCO's Horizontal Architecture Committee, Stephen helped evaluate technology for TIBCOs product lines. Prior to joining TIBCO, Stephen co-founded a training, software development and consulting company named Paradigm Research (PRI) with a number of his co-workers from NeXT Computer. Stephen holds a BA from the University of Chicago and a PhD in Nuclear Engineering from the University of Michigan where he completed his dissertation entitled "Multi-Grid Genetic Algorithms For Optimal Radiation Shield Design." He is the author or co-author of eight books, ranging from discussions of CGI and Perl to distributed Java applications.