Wednesday, March 16, 2011

Here comes the rain again

Technology trends come and go, as do marketing terms. Since the beginning of the commercial Internet, there's been a move towards building applications on the Internet. As time went on, companies started to sell services (directly, or indirectly via advertising) via the Internet too.

email makes for a great example. Third parties have been offering ever improved email services since the start of the Internet. Various models and services were offered, from "store and forward" services for individual mailboxes or entire domains, to entire hosting facilities where companies could contract a company to manage their email, with their employees picking up their individual mailboxes using IMAP, POP, or later on, web applications.

An early adopter of this type of thing was the open source community, as you might imagine. Companies like SourceForge offered "project hosting", where entire software projects could be managed online using their services to do everything from store source code to manage deadlines, bugs, and releases.

The applications have steadily become more numerous and diverse, in part because of improved web browser functionality, and also because of increased demands.

And somewhere along the line, relatively recently, some marketing genius decided to invent a new name for all of this: now it's called "the cloud".

Within the tech community, the term is derided as it's a new term for stuff everyone was already doing, but in some ways labelling these services "the cloud" is a positive thing, as doing so has focussed effort on the entire concept and helped highlight technologies that, prior to the decision to label it as a thing in its own right, might have languished. Companies as diverse as Google, Microsoft, and Amazon have put resources into researching better ways for these applications to interoperate.

"The cloud" doesn't cover one way of doing things. Services on offer over the Internet vary from fully built applications, such as Google Docs or Yahoo Mail, to CPU resources and memory.

Google, Amazon, and Oracle (via Sun) offer the ability to run your own applications remotely, in an environment in which they can demand sudden increases in CPU, memory, and/or bandwidth at a moment's notice without the need to invest in infrastructure that can support all of these resources all of the time. The technologies involved, at this point, are largely proprietary and incompatible, although all three make heavy use of Java.

At the other end of a similar spectrum are companies offering so-called VPS servers, servers that appear to be complete computers, where the benefit is that they're sitting in someone else's data center, using that data center's managed resources, rather than requiring you build your own.

At this point I'm loath to suggest that "the cloud" is something anyone but the smallest company with the simplest needs should adopt wholesale, although anyone can make use of it to provide parts of their computing infrastructure. The major issue, for me, is that the interoperability and standardization is not quite ready yet. Google, for example, is keen to create an infrastructure that is integrated, but it's internally integrated - third parties can certainly write applications that integrate with Google Apps, but those applications need more work to make integrated with other third party services. Custom applications need to either be hosted outside of Google, or if implemented using Google's "App Engine" - the CPU service I mentioned earlier -  need to be written specifically for it.

Part of the problem, I suspect, is deliberate wheel reinvention in order to be able to distinguish between small companies who can't afford to pay much for their services, and giant enterprises. Much of the work that's been done on integrating applications, especially in areas like security, is supported by technologies generally used by enterprises rather than smaller organizations.

Over time, I would hope this will improve. But there are other hurdles likely to come up:
  • Recent actions by Apple, Twitter, Facebook, and others have made developers increasingly nervous of developing for platforms where decisions about what can and can't run are made by third parties, rather than users. Apple's "App Store" has become notorious for arbitrary bans and bizarre rules. Twitter and Facebook have a, uh, flexible approach to rulemaking and APIs that means that an app that was perfectly legitimate a year ago might not even run today, and if it does might be in violation of rules that didn't exist previously.
  • And lest anyone think cloud providers would never undermine the reputation of their own businesses in that way, Amazon recently banned Wikileaks from using its service, providing a sophistry ridden explanation for doing so. There's little doubt that Amazon's decision was based on politics - with the US government announcing a move to "cloud computing", it couldn't afford to host services that were severely critical of that government.
  • The lack of a commitment to so-called "Network neutrality", and more importantly, a lack of a clear definition of Internet access, will continue to raise questions about the reliability of the very infrastructure necessary to provide cloud services. Even wireline ISPs currently block arbitrary ports, throttle arbitrary services, and get into major, disconnection ready, arguments with peers over who pays for what. Mobile Internet access, which is growing in popularity, has even worse problems in that regard.
  • The Web "isn't quite there yet" although it's getting better. Many are pinning their hopes on a standard called HTML 5 to enhance browsers with the necessary technologies, but in my view even that will not be enough for many developers. Still, we're a resourceful lot, and used to building all kinds of workarounds for the issues we come across.
  • IPv4 is woefully inadequate for the exponential increase in Internet usage we hope to see, and IPv6 is suffering from poor adoption and ISP indifference or even opposition.
In the end I think the move towards cloud computing is a good thing, but it's going to be many years before the technologies are ready for a wholesale move, where your "office computer" is whatever machine with a web browser happens to be closest, and your data center is no longer a room in a building, but the ether outside of it.

No comments:

Post a Comment