Let the Cloud Developer Wars begin
Damn right it's better than yours
Microsoft is all for the cloud, says chief executive Steve Ballmer. IBM has its new Smart Business Cloud. Oracle has its Exalogic cloud in a box. Amazon’s cloud services are growing apace. Salesforce.com and Google have always been cloud.
The economic arguments are unassailable. Economies of scale make cloud computing more cost effective than running their own servers for all but the largest organisations. Cloud computing is also a perfect fit for the smart mobile devices that are eating into PC and laptop market.
Cloud computing is a fuzzy concept, though, and analysts distinguish between several models.
The first is infrastructure as a service (IaaS), where the customer replaces physical servers with virtual ones accessed over the internet. IaaS scales up or down on demand and replaces capital expenditure with operating expenditure, but customers still have to maintain the operating system, select and install applications, and solve dependency problems.
Amazon dominates the IaaS market. Its Elastic Compute Cloud (EC2) became a production service in October 2008, and offers virtual machine instances of various sizes managed by a web services API. Most run some variety of Linux but EC2 also offers Windows Server.
Platform as a service (PaaS) abstracts much of the infrastructure away. You deploy an application onto a pre-existing platform which provides services such as data management, transactions, identity and authentication.
Google’s App Engine is an example of PaaS. You write your application in Java or Python and upload it. The application can use services such as a transactional datastore, task queue, user management, email, caching, and more. You have to trust Google to do these services right, but the benefit is zero maintenance. Also, if Google improves its implementation your application runs better automatically.
Like it or lump it
The third model, software as a service (SaaS), is the most abstracted form of cloud computing. Even the code that runs the application is managed by the provider and the customer simply signs up as a user. Salesforce.com and its customer relationship management application, Microsoft’s Business Productivity Online Suite, soon to be revised as Office 365, and Google Apps for email and document collaboration are all examples of SaaS.
SaaS enables the cloud provider to exploit another aspect of the cloud: multi-tenancy, where multiple customers run the same application. As features are added, all customers benefit, and the cloud provider can use its hardware at a high level of efficiency by tuning the workload across its servers.
There are several downsides to SaaS, however. One is that the application is fixed, so if you need some new feature you have to beg the cloud provider to modify it for you, or write a separate application and try to integrate it, or do without.
Lock-in is a risk with any cloud computing model but most acute with SaaS because you cannot move your application to another provider. You would have to export your data and import to a new application running elsewhere.
Another issue is that one customer’s excessive usage of a shared application can damage performance for others. The problem is more obvious in SaaS because customers are not isolated from one another.
Security is also a concern. Speaking at Oracle’s OpenWorld conference in September 2010, the company’s chief executive Larry Ellison talked down the merits of Salesforce.com. “Thousands of customers co-mingle their data in the same exact database. It’s really a very weak security model,” he said.
Ellison said he prefers the Amazon model, but since he was launching Oracle’s Exalogic Elastic Cloud, a sort of packaged version of EC2, he would say that. And in fact Salesforce.com has a good security record. But he still has a point.
IaaS, PaaS and SaaS seem neat and tidy divisions but the distinctions between them are blurring as cloud vendors extend their offerings.
Take Microsoft Azure, for example. Microsoft positions Azure as PaaS, since its focus is on hosting applications built by its customers.
You can open up the Visual Studio development tool, select an Azure project and start building an application based on one or more roles: a web role for a web front end or for publishing a web services API, a worker role for background processing and a virtual machine role. This is where the PaaS/IaaS distinction begins to blur.
Azure is a platform play that started with enterprise focus and is now attracting small organisations.. In contrast, Google has targeted smaller organisations first with App Engine, and is only now aiming at enterprise customers with its App Engine for Business, currently in preview.
App Engine for Business introduces a 99.9 per cent service-level agreement, an Enterprise Administration Console, and hosted SQL, all features which already have an equivalent in Azure.
At the same time, there are elements of IaaS in Microsoft’s offering. Azure computing is purchased in instances of varying capacity, and each instance is in fact a Windows server virtual machine. You can even remote desktop into an instance, giving full access to Windows. Microsoft has also introduced a role which lets you build a virtual machine on your own system and upload it to run on Azure.
Meanwhile, Salesforce.com has taken its SaaS offering and extended it to look more like PaaS. The product is called force.com and was extended last year to provide generic data services, called database.com.
There’s also a partnership with VMWare, called VMForce, which lets you run Java applications on a managed application server using the Spring development framework; and Salesforce.com has acquired Heroku which offers a platform for cloud-hosted Ruby applications.
Coming from the other end, Amazon is building PaaS on its IaaS foundation. In January Amazon announced its Elastic Beanstalk product, a Java application server where all you provide is the application; Amazon provisions a load balancer and deploys your app to one or more instances of Apache Tomcat. Elastic Beanstalk features automatic scaling on demand.
IaaS remains important but PaaS has more potential for shifting the burden of IT administration from customers to cloud providers and makes it easier for them to scale their IT resources according to needs.
Place your bets
PaaS is the sweet spot in cases where IaaS is too demanding and SaaS too inflexible. The distinctions between cloud platforms are breaking down but PaaS is increasingly prominent in many of them.
That leaves the question: who will win the cloud wars? Amazon is in an enviable position, with no legacy business to cannibalise and a strong foothold in the market. Google is also legacy-free, though App Engine has had a mixed reception and it is late in its enterprise play.
Microsoft by contrast is all legacy, and while Azure is technically a strong offering, the challenge lies in shifting its massive partner network and enterprise business from selling servers to cloud computing. Furthermore, the start-up community tends to look towards Linux and open-source platforms rather than Windows.
One thing that Microsoft and Salesforce.com have in common is their enterprise focus. At its Dreamforce conference late last year, when Database.com was introduced, Salesforce.com focused on Azure rather than Google or Amazon as a key competitor.
In theory, Azure seems a natural choice for the myriad Microsoft-platform businesses considering cloud computing but the transition might be hard to achieve. ®