One year ago I attended Cloud Camp, a gathering of early adopters of cloud computing. Primary questions there centered on: “How do we define cloud computing?”
Last Thursday, I attended GigaOm Structure 09 and the discussions were full of cloud computing success stories, explanations of deployments, insights about how to scale bigger, offerings of cloud services at various levels, and more. Below I summarize my takeaways from the day’s events.
Is cloud computing real or just a new term for old technologies?
The short answer: yes.
Many of the concepts of cloud computing have existed for years: large data centers, hosted servers, online service offerings (think Yahoo! Mail), and even multi-tenancy (in most mainframes). In part, cloud computing is a packaging of these into a term renovated for today.
However, cloud computing is more than just marketing. It is both a business model and technological change for the providers and consumers of these computing services. While startups could have always avoided directly deploying hardware by paying a hosting provider, the ability to pay for usage rather than signing year-long contracts dramatically changes the playing field when launching a new service with unpredictable demand.
What are the tiers of cloud computing?
Cloud computing is standardizing on three key tiers:
Amazon Web Services’ EC2 and S3 are primary examples in this category where raw computing power such as processing and storage can be rented. GoGrid, Nirvanix, Rackspace, Savvis, and 3Tera are other examples. Some of these offer the infrastructure as a web-service, where you simply purchase “1GB of space.” Others offer a hardware-as-a-service model in which you actually specify how many servers you want and how they are configured. Control versus the desire for hands-off outsourcing will drive which of these two models is ideal for your organization.
Google AppEngine, Force.com, and Microsoft Azure are primary examples in this category where a hosted development environment is provided upon which applications can be built and the underlying hardware is abstracted out. These platforms are ideal for developers wishing to get products to market quickly, but lock-in to the platform can be a concern. Some vendors are attempting to offer the ability to use standardized frameworks that could be portable, but this is in its infancy. Facebook Platform is also an example of a platform-as-a-service, though one in which applications would be deployed only within the Facebook experience rather than on the public web.
Examples of this category are all around us: online banking, Yahoo! Mail, Google Apps, and, of course, Salesforce.com.
What level should you engage in? As a consumer, the answer is obvious: you are simply a user of numerous software-as-a-service offerings. As a developer, you may choose to build upon an infrastructure-as-a-service or platform-as-a-service, depending largely on your desire to tradeoff control versus speed of deployment.
Will there be a segmentation amongst clouds?
Scale is a critical component of clouds since the ability to scale up and down quickly relies on having both a large deployment and multiple tenants across which spikes are smoothed out. However, companies consuming cloud services may have differing requirements that would push vendors to offer different clouds types. A basic examples of this segmentation is the different size server instances offered through EC2. However, other possible needs include quality-of-service guarantees, HIPAA or SAS70 compliance, or specific geographic or hardware requirements.
We are already starting to see cloud differences appearing:
- Amazon focuses on a broad-based offering.
- Nirvanix focuses on clouds for enterprises.
- RackSpace focuses on customer support.
Will clouds segment? Yes, but likely into a handful of major sites that still allow for the scale required to extract the benefits of cloud computing.
Does cloud computing mean the end of scalability issues?
Startups bringing the next high-definition-video-social-network may become wildly successful and require quickly scaling to millions of users. Cloud computing purports to easily address this by enabling these companies to simply add servers and storage as quickly as they are needed. While this may seem to solve all scalability issues, developers that have dealt with scale in the past understand that the fundamental architecture of the application needs to be developed to handle scale issues and cannot purely rely on scaling hardware.
If a program requires significant computation and the code is written to allow parallel processing, adding CPUs in the cloud can enable the computation to happen much quicker. Alternatively, if the code were written single-threaded, no amount of extra hardware will help speed the process. Cloud computing may reduce the need for system administrators on staff, but it does not negate the requirement for top-tier engineers.
And finally, is cloud computing inevitable?
Cloud computing is certainly in a phase of dramatic growth, with vendors providing new offerings and customers experimenting and adopting. There is no doubt that this trend will continue due to the benefits of scale, cost, operations, and segmentation of skill-sets. However, it is not inevitable that everything will move to the cloud. Certain organizations will have needs that are too custom-tailored to create a segmented cloud and will retain their internal systems—potentially building a ‘private cloud.’ Of course, companies should evaluate the pros and cons for their own environments and for most there are likely many opportunities to move applications into the cloud and derive significant benefits.