Lately I’m getting asked to explain the difference between virtualization and cloud computing. I like answering this question because it shows that the person asking the question has at least enough knowledge to identify that there are similarities but that they are probably not the same. Explaining the difference to this type of questioner is not usually a problem.
What bothers me a little more is when so called IT professionals use the terms VM and cloud interchangeably and then claim that they are pretty much the same thing or that if it works in one it should work in another. It is easy to get into a debate and find specific examples to bolster most claims on either side. Reality is not quite so simple. The right answer will usually start with “it depends”
With the rest of this post I’ll try to explain some of what it depends on and why there aren’t any simple answers. I’ll also give some examples of the beginnings of some more complicated answers without getting too technical.
The question worded a little differently: Aren’t Virtualization and Cloud Computing the same thing?
Before we begin, let’s get a couple of things straight:
- Remember that Cloud Computing is a delivery model and that Virtualization is a technology. Virtualization as a technology may be used at the back end of a service that is delivered with a Cloud Computing service offering but not necessarily.
- Virtualization is only one of the building blocks for cloud computing and there are many types of virtualization (server, desktop, application, storage, network, etc.) so categorical statements about virtualization and cloud computing is risky. It really depends on what is being virtualized an how it is made available by the cloud provider.
- There are different Cloud styles (fabric based, instance based, etc.), service models (Saas, PaaS, IaaS) and deployment models (private, public, hybrid, community). Thus, an answer with any significant depth that is correct when describing a fabric based community PaaS will most likely be incorrect when applied to an instance based private IaaS.
At the risk of oversimplifying let’s just consider a simple VM running on a bare metal hypervisor based virtualization platform. Although the hypervisor abstracts the hardware and makes it available to the VM, the VM is still bounded by the physical server itself. What I mean by this is that although you may be able to move a live VM from one physical server to another, the entire VM (memory and processor resources) must reside on one physical server and a single virtual LUN is required for storage.
Something very similar is the instance based cloud (in fact Amazon’s EC2 uses Xen based VMs at it’s core). This one-to-many relationship between physical resources and user containers (call them VMs if you like but technically they should be referred to as instances) obviously puts limits on the linear scalability and redundancy of this cloud approach. For many, this scalability limitation is offset by the ease of porting an application to an instance based cloud.
Fabric based clouds achieve higher scalability through the use of a fabric controller that keeps track all of the computing resources (memory, processor, storage, network, etc.) and allocates them as services to applications. The physical resources can be distributed among many physical systems. Again, at the risk of oversimplifying, the fabric controller is like an operating system kernel and the fabric itself acts similarly to a traditional OS as far as its relationship to a specific application. Fabric based clouds have a Many-to-Many relationship that allows a many applications to use resources on many physical resources. This model results in superior scalability and theoretically less downtime. However, this comes at the cost of application compatibility as applications must be designed to run in a fabric.
So yes, in some instances (pun intended) cloud computing is just large scale server virtualization but cloud computing is not necessarily the same as virtualization and there are many examples of cloud computing that are significantly different from traditional virtualization.
- Is Virtualization the Same as Cloud Computing? (informationweek.com)
- The Inevitable Eventual Consistency of Cloud Computing (devcentral.f5.com)