Surfing Â a couple of blogs today, jumping from another analyst commenting that virtualization is not cloud (a fair, if unexplored, post), I came across William Vambenepeâ€™s post from September on the confusion between virtualization and Cloud Computing. As he did on my blog recently, I started to post a reply to his site, and then as it expanded, decided to post it as a full reply on my own blog.
I like the thinking, and agree with a lot of the principles involved. Without doubt, virtualization is not cloud. But I can’t agree with it all. Apart from technical quibbles (like the part about mainframe LPARs not running on a hypervisor), I simply find it unreasonable, if not impossible, to think of implementing cloud computing without virtualization.
My key sticking point in most of these discussions [edit: not necessarily William’s post – see comments below] is that they continually assume that â€˜virtualizationâ€™ is synonymous with â€˜hypervisorâ€™, or at best with ‘server virtualization’. Neither is true. When EMA first defined virtualization (a definition that has taken hold more or less throughout the industry), we defined it as:
â€œa technique for abstracting or hiding the physical characteristics of computing resources from the way in which other systems, applications, or end users interact with those resources.â€
Even now, Wikipedia defines virtualization as â€œthe abstraction of computer resourcesâ€ and â€œhid[ing] the physical characteristics of a computing platform from users.â€
No mention of a hypervisor there, and with good reason. Virtualization is much more than a hypervisor, and applies to much more than servers. In fact, EMAâ€™s original definition made this clear by including the following clarifying note:
“This includes making a single physiÂcal resource (such as a server, an operating system, an application, or storage device) appear to function as multiple logical resources; or it can include making multiple physical resources (such as storage devices or servers) appear as a single logical resource.”
Indeed, many forms of virtualization (and cloud) are possible without a hypervisor â€“ like OS virtualization, storage virtualization, grid and cluster computing, terminal services, and more. So while it is widely known that Amazon runs its cloud on a classic server virtualization platform (Xen), even a Google-like cloud, which is based (as I understand it) entirely on a fully hardware-based deployment, without any hypervisors, is still using another virtualization technology – grid computing.
So cloud is definitely possible without a hypervisor, but is it possible without virtualization?
Perhaps, but it is far less than ideal.
William cited SoftLayer Technologies Â as doing cloud on bare metal; and Â Loudcloud as being cloud before it was in vogue. Although I am not sure the latter is true, and Softlayer provide few details about their bare-metal cloud, it seems to be possible to provide cloud computing without virtualization.
Yet with very few exceptions, it is ill-advised at best. In implementation, if not in theory, the many essential characteristics noted in the NIST cloud definition (EMAâ€™s preferred definition) are only barely possible in a purely physical environment.
Sure, you could get rapid elasticity, rapid provisioning, minimal human interaction, dynamic resource assignment, location independence, resource abstraction, etc. with a physical deployment. While they were both substantially unsuccessful with customers, IBMâ€™s On-Demand and HPâ€™s Adaptive Infrastructure both accommodated these elements primarily through automation, and without virtualization (or at least with virtualization as only an optional component). Even without automation, you could imaginably provision and manage physical servers manually to achieve this on-demand, adaptive, cloud infrastructure. In theory, all things are possible.
In practice though, cloud computing without virtualization is barely realistic. It is an edge case at best. Given what virtualization can do â€“ for resource pooling, rapid provisioning, reducing intervention, resource abstraction, workload elasticity, and more â€“ why would you try to implement cloud without it?
And that is just on the server! Given the different types of virtualization â€“ especially network virtualization and storage virtualization â€“ it seems that cloud without virtualization is not just ill-advised, but positively crazy.
For example, would anyone really copy all the data from one DAS drive to another in order to â€˜dynamicallyâ€™ scale a workload onto a bigger machine? Would you uninstall a drive from one server, and put it into another? Would you physically switch or reprovision a network in order to abstract a new server located in a different data center? Even to the biggest skeptic, cloud without any virtualization must seem a ridiculous notion, if not an impossible one.
So yes, William is technically correct (â€œthe best kind of correct!â€) â€“ virtualization is not cloud, and it is possible to provide cloud services without virtualization.
But (with apologies to Samuel Johnson) it is like a dog walking on his hind legs â€“ it is not done well; but you are surprised to find it done at all.