Understanding infrastructure in the cloud June 4, 2009
Posted by inukonda in Uncategorized.trackback
There are several definitions of what makes up “Cloud Computing” but everyone agrees that at the bottom of the stack, someone needs to provide the core hardware resources. This layer has come to be known as “Infrastructure as a Service” (IaaS). Cloud Security Alliance has provided a great definition for IaaS:
The capability provided to the consumer (by IaaS) is to rent processing, storage, networks, and other fundamental computing resources where the consumer is able to deploy and run arbitrary software, which can include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure but has control over operating systems, storage, deployed applications, and possibly select networking components (e.g., firewalls, load balancers).
Note: in the above definition, consumer is typically an independent software vendor – one who is developing software applications or services.
Taking it one step further, IaaS is in turn made up of several different architectural models: (Note: when I use “buy” below – I refer to “buy” in the sense of pay-per-use of that resource)
1. Shared platform with virtualized resources: In this model, the consumer ends up buying and sharing resources with other consumers. The hardware resources are virtualized using platforms such as VMWare, Xen etc. and think slices of compute power are offered to the consumers. Each slice maps to a certain processing capacity (CPU cores) and memory. You pay on a per-slice basis. While the model is very flexible, the downside is that it is not truly elastic – in the sense that if you need more resources, you have to get another slice. So, the slice is the minimum denomination. Examples: Amazon EC2, ServePath GoGrid.
2. Non-shared platform with non-virtualized resources: In this the consumer buys dedicated servers but the servers are located in the cloud. Typically the servers are not virtualized. This is very similar to hosting environments, but the main difference (also huge) is that if you need more capacity, you can get an additional server in a very short amount of time. The provider gives API’s to provision new servers instantaneously. This gives greater control but is also more expensive. Examples: IronScale, AppNexus.
3. Non-shared platform with virtualized resources: In this model, the consumer buys a bunch of hardware resources and then virtualizes them using platforms such as VMWare etc. and then uses the server slices as needed. The hardware resources are not shared with other consumers. This is also an expensive model and new resources can be provisioned & virtualized instantaneously. Examples: GridLayer
4. Hosted server: This is the traditional model that has been available till recently. In this model, consumer specifies the # of servers he needs, types of servers and buys server space. The consumer gets full access to the server via remote login and he has to typically manage the server himself. If he needs additional capacity, he has to go to the vendor and get more servers which might take some time. Examples: RackSpace (though RackSpace has cloud offerings as well). The next phase of evolution of these platforms is going to be their interaction with on-premise resources and the hybridization of internal and external data centers.
The bottom of the stack is evolving pretty nicely and I believe that we have made significant progress in giving the adminstrators the ‘warm n fuzzy’ about migrating their applications to the cloud. However, I think SMB’s will lead the pack in adopting the cloud and large enterprises will move very slowly over a long period of time. The next phase of evolution will be the hybridization of internal and external data centers and how the IaaS layer interacts with on-premise resources.
Very good summary Ravi.. I saw this whitepaper from Platform Computing detailing their solution. Very elegant.
http://www.platform.com/resources/datasheets/platformisf_datasht_fnl_web.pdf