How Relevant Are The Fallacies Of Distributed Computing Today?

Tim Bray of Sun Microsystems writes of the Fallacies of Distributed Computing; He observes that despite its profound implications when designing distributed systems, “you don’t often find them coming up in conversations about building big networked systems”.

Tim believes that the reason that some of the fallacies may not seem as relevant is probably because a multitude of applications today are built on web technologies; and the web lets youbelieve some of them (fallacies). He examines each of the fallacies in the context of the web, and explains why some of them continue to remain fallacies but are somewhat mitigated or at least appear to be mitigated by web technologies.

1. The network is reliable

HTTP […] connections are brief; Compared to a traditional networked system with connections whose lifetime approximates that of the application.

Second, the clarity about GET, PUT, and DELETE being idempotent, while POST isn’t, helps hugely. [for e.g.] if a GET gets a network blowup, just do it again. [T]his places very clear boundaries around the repair and recovery that an app needs to handle.

2. Latency is zero

The Web […] requires connection setup/teardown [and] users ha[ve] internalized this, and [are] aware of the difference between the normal single-digit number of seconds it takes for a nicely-functioning server to assemble request results and get them to you, and behavior under overload.

3. Bandwidth is infinite

4. Transport cost is zero

These are quite evident by news of recent bandwidth caps. Or As Tim puts it “Time after time, you’ll see messages, between computing civilians, of the form “Sorry that this picture is so big””.

5. The network is secure

This is probably the fallacy least-well-addressed by the Web. Anyhow, the Web technologies mean that application builders can survive even while subject to one or more of The Fallacies. But not this one.

6. Topology doesn't change

By making almost all our apps Web-based, and thus having everyone address everything with URIs, we all agree to share solutions to routing and addressing problems; [which] means that application builders almost never have to think about the problem.

7. There is one administrator

Well yeah, there isn’t. But who cares, any more? Web architecture makes addressing decentralized.

8. The network is homogeneous

The Web doesn’t do APIs and object models, it’s just a set of agreements over what messages you’re going to send and what messages expect back in return. Which, as a side-effect, makes heterogeneity a non-issue.

if you’re building Web technology, you have to worry about these things. But if you’re building applicationsON it, mostly you don’t. Well, except for security; please don’t stop worrying about security.

I think Tim is overly optimistic - even according to his count only 4 fallacies are covered. I also think that the fact that the web standards cover some of the fallacies doesn't mean that those who build web application comply with the standards - That's a really big assumption right there and the difference between something that considers the fallacies and a solution that fails miserably I also blogged that in a little more detail

I think what Tim's trying to say is that web technology has become a useful abstraction that simplifies many of the things that might go wrong for developers (where they are building on it and not in it) rather than hides things. JINI was Sun's famous (notorious?) attempt to build an abstraction layer to deal with The Fallacies and it didn't take me long to discover that Tim had his concerns about that due primarily to what he called its "barrier to entry".

As we all know abstractions can be hugely powerful but they can leak and we forget this at our peril. So, like Arnon and Dilip, I'm somewhat confused by Tim's conclusion that "mostly" you don't need to worry about these things, unless by mostly he means that most web apps aren't critical, time-sensitive or in need of bullet-proof reliability so simplification is more appropriate than hiding.

I'd tend to agree with Arnon's statement in his excellent PDF on The Fallacies "the more things change the more they stay the same". Whilst I'm all for anything that makes my job simpler (I'm still a JINI fan), because it allows me to concentrate on the value-adding aspects rather than the plumbing, I think I'll continue to worry about the fallacies for some time to come...