As one analyst covering the tech industry commented to me, cloud computing, or “the cloud”, seems to have risen on the hype curve at an amazing speed. A few months back the term hardly but now every technical analyst, journal, vendor and conference seems to be abuzz about it. Given all this hype, it is surprising we don’t have an agreed upon definition of just what the cloud is. At times it is compared with utility and grid computing and other times confused with SaaS and virtualization.
The simplest way to understand cloud computing is to think of it in a usage scenario. In this paradigm, a provider hosts a service and provides access to consumers over the Internet via standard protocols like HTTP, REST or SOAP. The service may be end-user software, a compute facility, a storage facility, a development platform, a business process or a hosting platform. The service is typically off-premise from the consumer and the consumer should not have to worry about installation of software or administration or management headaches.
Applications that utilize the cloud also come in multiple flavors. They may range from an end to end application hosted in the cloud (like Salesforce.com) to an on-premise application using some services from the cloud (e.g., an application that utilizes Amazon’s S3 service for data storage), to a custom application totally written for and hosted on one of the cloud platforms (e.g., an application written and hosted on Bungee Connect or Microsoft’s Azure offering).
Just like most new paradigms, cloud computing is more of an evolution rather than a revolution. It has really come about due to the evolving trends surrounding the Internet, service oriented architecture (SOA) and virtualization. The Internet is evolving from a medium that is purely used to access documents into a network of applications that provide access to a rich set of functionalities for the end users.
Similarly, with the advent of SOA in the enterprise and beyond, many of the tightly bound applications have become decoupled into smaller modules that can be served via services over private networks and the Internet. Finally, virtualization is not only allowing enterprises to consolidate their infrastructure but also allows service providers to offer a shared-infrastructure environment that acts as a foundation for cloud computing.
So, is cloud computing really ready for the enterprise? Before we answer the question, let’s examine the typical advantages that cloud computing will provide:
- Usage based payment model: In the cloud computing paradigm, an end user should only pay for a service based on the amount of usage. This lowers the barrier of entry for an application to be deployed on a cloud infrastructure and allows a small business as well as a large enterprise to avail of the same service.
- Scalability and Elasticity: Many applications in a given enterprise are sized and built for the maximum usage scenarios like the Christmas season. Many times the infrastructure they are deployed on has very low usage during normal hours. A cloud computing environment should be massively and seamlessly scalable to handle the up-tick in usage of a given application. Most service providers like Amazon, Google, Salesforce.com, Yahoo, Microsoft have architected their environments to handle these surges. However, the smaller and newer players need to be evaluated to see how well they fare against this criterion.
- Support from vendors: Some vendors have just renamed their SaaS or infrastructure offering and call it a “Cloud” offering but many players (large and small) are making a genuine effort to offer solutions that embody the key tenants of a cloud computing paradigm. Amazon with its EC2, S3, SimpleDB and other services has been providing a cloud computing infrastructure for some time.
Similarly, Google has its AppEngine and file store (GFS) and data store (“Big Table”) services and Salesforce.com provides Force.com as a general purpose platform for building cloud applications. Microsoft has recently announced its Azure offering that will allow the creation and deployment of applications in a Microsoft (or partner) infrastructure. Azure will also contain data, security, workflow, messaging and Microsoft Live services that will allow enterprises to create richly featured custom applications in the cloud. Such support from the leading vendors bodes well for this paradigm.