This week I had the privilege of attending the Cloud Computing Expo in New York at the Jacob Javits Center.
I was very impressed with how the attendance and interest had increased from last years' event. There were scores of vendors there hawking everything from Public and Private Cloud offerings to management tools and services to in fact anything that could remotely be branded (or rebranded) "Cloud". It reminded me of the early days of SOA when every vendor was rushing to rebrand whatever they had as "SOA".
But I do sympathize with the attendees who were there to learn and understand what the Cloud is all about and how they can leverage the new paradigm of cloud computing in their businesses. Many of the keynotes were thinly disguised (and in some case totally undisguised) sales pitches for one vendor’s product or another. Some of the breakout session were less sales pitchey but there too many of them were.
First a disclaimer: What follow is strictly JMHO (Just my humble opinion) and not the position of Microsoft, my employer. But it is based on my observations as an architect and a fair amount of sympathy for the attendees. It is an attempt to look at the conference from their point of view. To be clear, I am a Microsoft Architect Evangelists and a strong believer in the Microsoft Cloud and in our hybrid (on-premises + cloud) based approach to supporting our customers.
At this event I also had the privilege of presenting the session on Cloud Design Patterns and I do pride myself that, although we used Azure to illustrate the patterns, the beauty of these patterns is that they can be applied to building applications on almost any vendor's cloud platform.
One thing that seemed abundantly clear to me: A lot of the vendors represented there were new startups. By next year I fully expect that 60-70% of them will be gone having merged, been acquired or failed. As a customer, therefore, I would be hesitant to put my trust in a company that might not be around a year from now. So when evaluating public cloud providers (which is the focus of this post) I would limit my consideration to what I call the Big 4: Amazon, Microsoft, Force, and Google. I realize that there are others (like RackSpace) that will be offended by not being included and that will definitely be around in the future, but I had to draw the line somewhere. 🙂
Looking at the Big 4 from a 30,000 foot level we can loosely divide them into XaaS categories such as IaaS (Infrastructure as a Service), PaaS(Platform as a Service) and SaaS(Software as a Service). Although new XaaS categories keep popping up all the time such as DaaS (Data as a Service), DBaaS,(Database as a Service) and an unfortunate acronym overload: SaaS (Also for Storage as a Service :-)).
When you drill down however things get less clear and various offerings can only be said to more-or less fit those categories. Still it does give us a place to start evaluating them. Bear in mind that absolute categorization ignores the reality that each of the services is starting to encroach on each other's space and become more Ptatformey, Infrastructurey, Servicey, etc. 🙂
I also want to restrict my evaluation here to application support platforms that customers can use to develop, deploy and run cloud based and/or hybrid cloud + on premise applications. I realize that ignores SaaS (Software as a Service) offerings from companies such as Google (Google Docs), Microsoft (Business Productivity Online Services), etc. but space here is limited.
Here are my opinions on how to look at these offerings:
Amazon: Amazon Web Services provides IaaS (mostly). Good for moving an existing legacy server into the cloud. The reason I qualify it this way that they are moving towards the platform space with framework and add-ons from partners such as RightScale.
Microsoft: (Here is where my bias will definitely bleed through.:-))
Microsoft has the broadest range of on-premises, cloud-based and combined offerings bar none. It encompasses pretty much everything that you have now on premises and everything that you might want to put in the cloud. There is not enough space here to enumerate everything they offer so I will just mention BPOS, The Windows Azure Platform, The Windows Server Platform as well as Development tools such as Visual Studio and Cross-Platform Integration tools such as the Windows Azure AppFabric Service Bus and Access Control Service. (OK: I realize that I am cheating. Here. I said that I would consider only application platforms but I could not resist. :-))
Anyway, The Windows Azure Platform, which can be used to develop, deploy and run cloud based applications is a high level Platform as a Service (PaaS) offering. It allows you to focus on solving your business problem and relieves you of all the plumbing/infrastructure details such as operating system configuration, patching, health monitoring, etc. Although it currently fits the PaaS model very well it has been announced that more infrastructurey features are coming later this year. Even now it supports massively distributed computation and data storage as well as relational SQL Server databases in the cloud. It also provides tools (such as the Service Bus and the Access Control Service) that allow integration of cloud based components with on premise applications and services.
Force: Force.com is a proprietary development environment and language that runs nowhere else but on their servers. It provides a platform that allows quick implementation of data-oriented business applications with browser interfaces. These applications can be built by less technical people (in some cases non-developers). Their programming language is called Apex and again it runs nowhere else but on Force.com.
Contrast that with support for more available programming languages such as C#, VB.NET, F#, Python, Ruby and others and development platforms such as Visual Studio and Eclipse that are supported by Azure as well as Python and Java that are supported by Google.
Google: Google AppEngine supports development of Python and Java applications. It is very good for Web 2.0 type applications that increase the use of the Internet and thus help Google’s advertising business. 🙂
So that is my admittedly somewhat biased but hopefully useful categorization of the key players. Feel free to disagree. 🙂
I would be interested in your thoughts as well.