Many of you are no strangers to virtualization. In fact, lots of you have been doing it in some form or fashion since the mainframe days. Virtualization is probably as hot now as it ever has been, thanks in part to the cloud fervor, but also due to the fact that it is making its way up the stack. For so long most of the virtualization focus was at the operating system layer, but now we see many examples of virtualization at the application and application middleware layer. Virtualization’s march up the stack necessarily brings with it an increasing complexity, and thus the increasing need for virtualization management capabilities.
Chances are if you are surveying cloud today, you are likely looking at solutions that entail virtualization and virtualization management. If this is indeed the case, how do you know what to look for in virtualization management capabilities? I’ve got a few functional characteristics that should be top of mind:
1) It is what’s on the inside that counts: The quickest time to value with virtualization management solutions will come from those that understand the software running inside the virtual machines for which it is responsible. For instance, consider the case that you are using images that capture application middleware stacks. The management framework you put in place should know how to configure the software in the virtual image upon activation. It should know how to maintain and update that software over time. In addition, it should provide context appropriate insight into the environments running in the virtual machines. It should do all of this without your having to supply tons of configuration, maintenance, and monitoring scripting. In short, the management solution cannot treat the virtual images and machines as black boxes.
2) No man, or virtual machine, is an island: Back when virtualization was mostly done at the operating system level, it was easy to treat a single virtual machine as a distinct, independent entity. Now that we are talking about virtualization at the application level of the stack that is no longer the case. A logical application environment is likely to be comprised of several virtual machines representing different nodes in the system. To make the virtualized application environments tenable over time, management solutions must understand how the collection of virtual machines maps back to the logical application environment. Users should not interact and maintain the system as separate virtual machines, but instead as a single logical unit. The management system should provide the necessary function to apply a user’s action to the distinct virtual machines.
3) As you decree it so it will be done: Consider the case that you are building a middleware application environment that will be running in a virtualized setting. Do you want a virtualization management solution that requires you to tell it exactly how to create the environment you want? No way. You want a solution that is much more declarative in nature. You tell it the type of application environment you need (i.e. a highly available application cluster), and it understands how that maps back to a set of virtual machines and how those machines need to be configured. This gets you out of the business of the “how” and squarely into the business of “what”.
As I would say with any of my “things to keep in mind” type lists, this is in no way exhaustive. My goal was to point out some of the things I think are most important as you embark down the road of more complex and meaningful virtualization solutions. As I look back on the three main points I covered here, the overarching theme for me is intelligence. As we move forward, virtualization management solutions that provide out-of-the-box intelligence and know-how that otherwise cannot (in a cost effective manner) be supplied by virtualization users will set themselves apart from the pack.