Wednesday, December 8, 2010

Cloud Computing - 10 min Introduction

In my previous post on Virtualization I discussed various options adopted by vendors for virtualizing infrastructure and I/O ancillaries. Taking a step further, one can achieve cloud computing which is generally defined as "leveraging a pool of computing resources living within a datacenter with no sharing". The last two words "no sharing" is the key in cloud computing. Currently in most data centers, resources such as CPU, Memory, I/O are sliced and partitioned across applications based on anticipated capacity plans. However, these resources on nodes have a tight coupling to the applications and cannot be assigned to other applications without some serious deployment re-image. Think of Turbotax.com or other online retailers who have seasonal peak capacities for a month or two followed by very low volume for rest of the year. Capacity planning for these sites will involve building costlier hardware with utlization levels that will be low for most part of the year. There is simply no ability of scale up or down based on demand. The other business case could be your pre-production lower level environments that need to be juggled across many LOB's. Having a  cloud based infrastructure provides enormous advantage in these situations, where demand based scalability can be achieved at minimum cost. A cloud is composed of 5 essential characteristics, 3 service models and 4 deployment models. Key characteristics being on-demand self service, broad network access, resource pooling, rapid scaling, and measured service.

The two major service models defining cloud are, Infrastructure as a Service (IaaS) and Platform as a service (PaaS).
          IaaS involves building a distribution stack comprising of hardware and virutalized instance (the first two tiers), and rolling it out to users. Users are then free to install any OS on top of this stack with services, frameworks, and servers that can be tailored to support their needs. An example of this model is Amazon's EC2 public cloud. Under this model, user has freedom to choose anything from and above the operating system.
           PaaS involves a service model with its distribution stack composed of hardware, VMM and elements from all other tiers upto frameworks; user applications are deployed on top of vendor provided framework, an example is windows Azure. Users do not manage servers or storage and can only deploy apps on the cloud; above all their apps need to be coded to the framework built in PaaS.



These two models are quite different from another existing one, Software as a Service (SaaS), which is more of an utility computing where users can only use and not modify/install apps or any components in the underlying stack.

The 4 deployment models can be categorized into private, public, community and hybrid.

Private cloud. The cloud infrastructure is operated solely for an organization. It may be managed by the organization or a third party and may exist on premise or off premise. (eg. your data center)
Community cloud. The cloud infrastructure is shared by several organizations and supports a specific community that has shared concerns (e.g., mission, security requirements, policy, and compliance considerations). It may be managed by the organizations or a third party and may exist on premise or off premise.
Public cloud. The cloud infrastructure is made available to the general public or a large industry group and is owned by an organization selling cloud services.
Hybrid cloud. The cloud infrastructure is a composition of two or more clouds (private, community, or public) that remain unique entities but are bound together by standardized or proprietary technology that enables data and application portability (e.g., cloud bursting for load-balancing between clouds).

The cloud computing industry represents a large ecosystem of many models, and vendors. These definitions attempt to encompass all of the various cloud approaches.

No comments:

Post a Comment