With 193 international representatives, the United Nations is about as heterogeneous a network of people as there is. The constituents of its member states make up just about all the world’s races, creeds, cultures and, of course, dialects. Facilitating communication amongst all these ambassadors — which is essentially the UN’s raison d’être — isn’t always an easy task.
To make sure everyone can understand one another, the organization adopted translation standards that include six official languages — English, French, Spanish, Russian, Arabic and Chinese — for which it provides interpreters. These rules are in place to help overcome the linguistic barriers, but people don’t always follow the rules. Fortunately, they considered these exceptions and put a safeguard in place: Members who don’t use one of the official languages are required to provide their own interpreters for translation.
In this way, the web environment is like a more chaotic version of the UN. It consists of vastly different components trying to exchange information with each other, yet they don’t all speak the same language. Interaction standards have to maintain effective dialogue and keep everything running smoothly. And of course, the same exceptions apply as well — you can’t count of everyone to follow the rules.
This is the final installment in our series investigating the significance of the Fallacies of Distributed Computing to applications in the current cloud environment. We’ve explored both thought-provoking arguments for the freedom to ignore or accept some of the Fallacies and compelling reasons why developers should never disregard them. Our last post covered the impact of increasing transport costs, and today we’ll look at how well web architecture addresses the complexity of heterogeneous networks. This could just be the one Fallacy the web has actually made come true.
Well, almost true. The reality is: networks are not homogeneous, and are in fact far more diverse than they were when James Gosling — the creator of Java — added this Fallacy to Deutsch’s original list in 1997. However, whether or not this matters anymore is still up for debate. These days, even simple home networks are markedly heterogeneous. It’s not unusual to have both Mac and Windows-based PCs, smart phones, tablets, TVs, even game consoles all linked on a personal network. In a small business or enterprise environment…fuhgeddaboutit.
For the web, it’s a given that numerous operating systems, servers, and devices will be interacting at all times. Yet, to a large degree, web architecture functions as a great equalizer. Web standards like REST, XML and JSON provide a framework for clients of all different types to exchange messages, so web application builders aren’t often faced with interoperability challenges. It’s like having a universal translator working on everyone’s behalf. So the question is: If web technologies allow everyone to speak the same language, then do their differences really matter?
Sun veteran and systems expert Tim Bray, who we’ve cited throughout this series, says no. In his article ‘The Web vs. The Fallacies,’ he argues that this blueprint for standardizing communication is “perhaps the Web’s single greatest triumph.” By merely establishing a set of agreements about message protocols, web architecture enables applications to achieve seamless interoperability in a diverse environment — so even if it doesn’t technically make the Fallacy true, it still “makes heterogeneity a non-issue.”
Without a doubt, interoperability is arguably the biggest advantage of working in the cloud. But there are still important reasons for application developers to consider the fallacy of network homogeneity. Relying on web technologies to alleviate the problem entirely has been described by other Fallacies evangelists as “overly optimistic,” and we agree with that assessment. Because, as with several of the other Fallacies, overlooking this natural condition of distributed computing gives developers less control over the fate of their applications. Once again, that means you’re relying on every other part of the system to adhere to the standards – which, of course, isn’t always the case.
Moreover, some parts of an application may require specific protocols — due to security concerns or intellectual property issues — and therefore be unable to employ standard web services. We think the best approach is to address the fallacy of homogeneity up-front by: 1) planning ahead for any integration challenges and 2) testing everything thoroughly before you go to production. That way, any deviations from or inconsistencies with web standards won’t catch you by surprise and derail your app. It all goes back to the original theme in our introductory post. Plan for the worst-case scenario, so you have solutions prepared in case of disaster. If doomsday never comes, then you’ve lost nothing. But if calamity does eventually strike, those extra precautions are sure to pay off.