It looks like pretty soon all computing will be called cloud computing, just because the cloud is “in.” Fortunately, most computer-savvy folks actually have a pretty good idea of what the term “cloud computing” means: outsourced, pay-as-you-go, on-demand, somewhere in the Internet, etc. What is still confusing to many is how the different offerings compare, from Amazon Web Services to Google App Engine to Force.com. I recently heard a characterization of three different levels of clouds which really helps put the various offerings into perspective. Here’s my rephrasing:
Applications in the cloud: This is what almost everyone has already used in the form of Gmail, Yahoo Mail, WordPress.com, Google Apps, the various search engines, Wikipedia, and so on. Some company hosts an application on the Internet that many users sign up for and use without any concern about where, how, or by whom the compute cycles and storage bits are provided. The service being sold (or offered in ad-sponsored form) is a complete end-user application. To me all this is SaaS, Software as a Service, looking to join the cloud craze.
Platforms in the cloud: This is the newest entry, where an application platform is offered to developers in the cloud. Developers write their application to a more or less open specification and then upload their code into the cloud, where the app is run magically somewhere, typically being able to scale up automagically as usage for the app grows. Examples are Mosso, Google App Engine, and Force.com. The service being sold is the machinery that funnels requests to an application and makes the application tick.
Infrastructure in the cloud: This is the most general offering that Amazon pioneered and where RightScale offers its management platform. Developers and system administrators obtain general compute, storage, queueing, and other resources and run their applications with the fewest limitations. This is the most powerful type of cloud in that virtually any application and any configuration that is fit for the Internet can be mapped to this type of service. Of course it also requires more work on the part of the buyer, which is where RightScale comes in to help with setup and automation.
Looking at these different types of clouds, it’s pretty clear that they are geared toward different purposes and that they all have a reason for being. The platforms in the cloud promise to take some of the mundane pain away from dealing with the raw infrastructure. But it’s not at all clear to me that the vendors can live up to the promise of managing everything seamlessly, and that the functional constraints won’t cause applications to have to move up to the infrastructure clouds as they mature and gain complexity. It would not be good if toy apps started on the platform clouds and then moved to the infrastructure clouds as they gain adoption. One possible outcome is a hybrid model where the canonical application core remains in the platform cloud and the odd pieces of functionality and/or the parts that need to scale the most drastically move off to infrastructure clouds.