As interesting as virtual client system and virtual server systems are, they're not the panacea that some in the industry present when speaking about their products. Why is it that when I speak to a Kusnetzky Group client, I almost always have to help them understand that virtualization is a much bigger topic than just virtual machine software?
If we stick to the virtual processing layer, there are at least five different technologies that either become part of or get underneath an operating system to offer some interesting, albeit mutually exclusive, benefits. Virtual machine software just must be easier for some to understand.
Other forms of virtual processing software
If we wander through the different types of virtual processing software, it soon becomes apparent that each of them has been developed to achieve a different goal. The goals are high performance, high levels of scalability, high levels of reliability, consolidation and agility. Virtual machine software is wonderful in its place and is just not the right choice when an organization's own goals mean that another choice else would be better.
- Parallel processing monitors/Grid computing - software that allows an organization to segment applications into components or allow multiple instances of an application to all run on separate, independent machines in order to vastly extend overall performance. A side effect of this technology is an improvement in overall reliability and availability of that software. If a unit of work doesn't complete because of an outage, it is simply reassigned to another machine. The work that was being done by the first machine is lost but, in the end, is recreated.
This is a technology that has been around for decades and so, there are many single-vendor and open source entries in this category. If one needed high levels of performance, this would be the appropriate choice, not virtual machine software. Virtual machine software isn't really designed to allow a single application to use as much processing power as possible.
- Workload management monitors - increasing overall scalability is the goal of this type of software. It makes it possible for organizations to deploy the same application on many independent systems and then feed the next "unit" of work to the machine having the most available capacity. As with the previous category, this approach has a side effect of improving the reliability and availability of an application. If one unit of work doesn't complete properly, it is simply reassigned to another machine.
This type of software typically is made available as part of a clustering monitor (see the next category). Once again, virtual machine software would not be the best choice for this need since it is designed to run all instances of an application on a single computer. This, of course, is not a recipe for increased scalability.
- Clustering monitors - software that "marries" several computers into a single computing resource. There are two forms this software takes shared everything, "single system image", clustering and "shared nothing" clustering.
Single system image clustering makes it possible for the machines to act very much like a symmetric multiprocessing computer that just happens to have been configured in multiple cabinets. Shared nothing clusters are made up of machine that basically do their own work but will pick up work that has been dropped by an outage somewhere in the cluster. In both cases, the systems are much more tightly integrated and often have to run the same exact version of the operating system on nearly identical machines. In many cases, this configuration may also be known as a "high availability" or HA cluster.
- Operating system virtualization/partitioning - software that partitions the resources of a single computer running a single operating system so that each "partition" or "container" can be isolated from all of the others. This is a very efficient form approach to workload consolidation and agility because only a single operating system is being deployed. Memory, storage and other system resources needed to host multiple operating systems need not be acquired. Depending upon the tasks at hand, this might be a better choice than deploying virtual machine software.
- Virtual machine software - software that either runs on the physical system or software that runs on a host operating system and allows other guest operating systems to run. In either case, the goal is to partition the resources of a single physical computer so that many different "capsules" or "virtual machines" can run.
Each of these "virtual machines" runs its own operating system and manages the resources provided by the underlying machine or operating system. This is often the best choice when an organization wants to consolidate independent workloads that formally ran on separate machines onto a newer, much faster single machine.
New technology muddies the waters
Just to add a bit of spice, many suppliers have decided that with the addition of some sophisticated management software, it would be possible for virtual machines and physical machines to be orchestrated in ways that offered capabilities similar to those offered by clustered computers.
Multiple applications can be running and when an outage occurs or service level objectives are not being met, virtual machines can be 1) moved to another physical machine having more available resources or 2) moved from a virtual machine onto an available physical machine.
It must be noted that keeping workloads in virtual machines often imposes more overhead on the environment in exchange for a greater level of flexibility.
Although it used to be pretty clear when virtual machine software was or wasn't the appropriate choice, the advances made over the last few years in the area of management software for virtualized resources has that choice much more difficult. When would an organization select an cluster manager over an environment based upon virtual machine software and an orchestration manager?
The technical answer revolves around the whether the organization is seeking the highest level of efficiency or the need to support workloads running on different operating environments. The virtual machine software-based approach allows applications running on different operating environments or different versions of operating environments to all play together.
With a vague reference to an old Dilbert comic strip, it is difficult for an executive who doesn't understand whether it would be better to use a "red" or a "blue" database to understand the distinction. So, they'll almost always choose the most publicized approach over another approach that might be technically better.
How does your organization see this?