Friday, February 3, 2012

Cloud Myth #5: Clouds Require Virtualization


Everywhere I look, I see clouds and virtualization mentioned together. They seem to be the peanut butter and jelly of the technology world. Certainly, clouds and virtualization taste good together, but surely we can separate them, right? Can you build a cloud without virtualization? Does peanut butter taste good without jelly? The short answer is, “You betcha,” but let’s examine why that’s true.
(I should probably note that I covered some of these ideas last year in my post titled “Internal Cloud vs. Virtualization: What’s the Diff?” You would do well to go back and read that material as well.)
The most important thing to keep in mind is that virtualization is primarily a description of technology. In particular, hypervisors are small software shims that slip between the physical machine hardware and a guest operating system and give the guest the illusion that it is running directly on the hardware. This allows the hypervisor to create this illusion for multiple guests at the same time, allowing multiple virtual machines to share the same physical hardware. Many IaaS clouds use virtualization. Certainly, all the major IaaS public clouds — AWS, Terremark, Rackspace, Fujitsu, Savvis, etc. — as well as most IaaS private clouds.
So, doesn’t that suggest that IaaS clouds and virtualization are inseparable? The answer is no, in the same way that finding a bunch of peanut butter and jelly sandwiches in an elementary school cafeteria at noon doesn’t imply that peanut butter isn’t tasty by itself (Thai chicken satay, anybody?).
The fundamental difference is that while “virtualization” describes a technology used to allow different virtual instances to share a common piece of hardware, “cloud” really describes an operating model for IT. So the next logical question is, “What’s an operating model?”
An operating model describes how an enterprise functions across process, operations, and technology domains in order to business deliver value. How do those things interact to create a desirable outcome? A cloud operating model is one focused on using clouds, as-a-service delivery, and agile IT to enable efficient IT utilization as the foundation for increased business value. At ServiceMesh we sometimes call this an “agile IT operating model” to indicate that it’s really about more than clouds, as well, but that’s another post altogether. Whether we call it a cloud operating model or an agile IT operating model, it’s important to note that an operating model can utilize a lot of different underlying technology for its implementation — it’s a completely generic notion at a top level.
Users of a cloud operating model access resources through self-service interfaces. They request resources with certain characteristics (amount of CPU, RAM, and disk space, for instance), and they receive access some time later (hopefully in less than a minute or two). But when they access those resources they don’t have any expectation of which exact physical machine they are using. From a user point of view, there is no way to tell (not totally true) that a given “server” they have requested is backed by a virtual machine or a physical machine. For all the user knows, the server might be a physical server in a huge server farm or it might be an “equivalent” virtual machine being run alongside others on a larger physical machine. At ServiceMesh, we call a cloud that uses physical systems without hypervisors a “bare metal cloud.”
“But, but…” I hear you cry, “Without a hypervisor don’t you lose a lot of manageability?” The answer is yes. But that’s not an argument for why clouds and virtualization are inseparable. You’re merely observing that some cloud implementations are more manageable than others. Virtualization brings many benefits, such as the ability to transparently shift workloads to different hardware within the cloud in a transparent fashion, for load balancing and disaster recovery (think of the live migration technologies supported by the various hypervisors).
But bare metal clouds also have interesting properties such as increased performance. If you want every CPU cycle your cloud can deliver (think large data analytics workloads), you might want to ditch the hypervisor and run your application directly on the metal. You can still manage your physical servers as a pooled resource within a cloud operating model, offering self-service access with accounting and charge-back of resource usage.
Interestingly, if you use an advanced cloud platform like Agility Platform, you can have multiple clouds of each type, virtualized or non-virtualized, running side-by-side, and you move applications and workloads from one to another. You might want to do this, for instance, to allow software development to occur in a lower-cost cloud using virtualization. That saves cost when you don’t really need performance. Then, when development and testing is completely, you can move the final workloads into production on a bare metal cloud. The only difference in user experience is the performance and cost.
So, while the cloud and virtualization combo is certainly as popular as peanut butter and jelly, don’t mistake popularity for inseparability. “Virtualization” describes one cloud implementation technology choice. “Cloud” describes an overall operating model. For many, bare metal clouds that eschew performance-stealing hypervisors are an interesting choice for some percentage of the cloud landscape.
Are you using or interested in bare metal clouds or do you see no value in them whatsoever? Weigh in with a comment and let us know.