Chris Hoff, my friend and colleague at Cisco Systems, has reached enlightenment regarding the role of the operating system and, subsequently, the need for the virtual machine in a cloud-centric world.
His post last week reflects a realization attained by those who consider the big picture of cloud computing long enough.
He summarizes his thoughts nicely at the opening of the post:
Virtual machines (VMs) represent the symptoms of a set of legacy problems packaged up to provide a placebo effect as an answer that in some cases we have, until lately, appeared disinclined and not technologically empowered to solve.
If I had a wish, it would be that VM's end up being the short-term gap-filler they deserve to be and ultimately become a legacy technology so we can solve some of our real architectural issues the way they ought to be solved.
Hoff goes on to note that the real problem isn't the VM, but the modern operating system:
The approach we've taken today is that the VMM/Hypervisor abstracts the hardware from the OS. The applications are still stuck on top of operating systems that don't provide much in the way of any benefit given the emergence of development frameworks/languages such as J2EE, PHP, Ruby, .NET, etc. that were built around the notions of decoupled, distributed and mashable application "fabrics."
My own observation here is that our current spate of operating systems were designed when competitors were pushing to use the OS as a differentiator--a way of distinguishing one company's product experience from another. OSes started out being targeted at software, providing a way for applications to use a generalized API to acquire and consume the resources they needed.
At the time, computers had one CPU and the logical thing to do was to design a single OS that could run multiple applications, preferably at once. This created the need for additional functionality to both manage resources and manage the applications themselves.
Furthermore, the operating system increasingly targeted not the needs of software, but the needs of people; more specifically, the needs of computing buyers. Take a look at OS X, or Windows, or even "enterprise" Linux distributions today. The number of features and packages that are included to entice software developers, system administrators, or even consumers to consume the product is overwhelming.
However, any given application doesn't need all those bells and whistles, and most OSes are unfortunately not designed to adjust their footprint to the needs of a specific application.
So, the problem isn't that OS capabilities are not needed, just that they are ridiculously packaged, and could in fact be wrapped into software frameworks that hide any division between the application and the systems it runs on.
By the way, that this is exactly why EMC purchased Fastscale last month, as noted by Chuck Hollis, EMC's CTO of global marketing, on the day the acquisition was announced. Simon Crosby, CTO of the data center and cloud division at Citrix, also notes that this change is coming but sees the OS playing a more important transitional role.
This is a critical concept for application developers wondering how cloud computing will affect software architectures. It is also a critical concept for why IT operations professionals need to understand that their roles and responsibilities are changing.
Because of this, I'll be following up with a few posts this week that will expand on this concept and give you much more of a sense of why the operating system, along with most server, network, and storage virtualization is a stop-gap measure as we move to a cloud experience centered on the application user and the developer.
Next on the list is an explanation of why cloud computing drives infrastructure toward homogeneity (at least within a data center) and why that is the bane of server virtualization.