Thursday, October 05, 2006

Mental Explorations in the Land of Virtualization - MELV

I work on the team responsible for delivering VMware's hosted suite of products (Workstation, ACE, Server, Player). Looking at that line-up of products you could say our part of the company is focused on delivering solutions that push the envelope of things that can be done with virtualization. I personally have come to think that virtualization will provide the computer industry with it's next paradigm shift; how very back to the future! I think part of the reason has to do with how nascent computing (the industry, field of research, and trade) really is compared to what else is around. Many of the things that are needed to make virtualization worth while are just starting to come together.

A particular interest of mine is how virtualization will fundamentally affect the way Joe Consumer uses his computer; how does virtualization affect the end consumer's computing experience. At this point it's a no brainer to me that virtualization should be used in the data centre and if you are a developer (web designer, software engineer, or any other flavour) and are not using Workstation then you are at a disadvantage to your competition that are using Workstation to be more productive. Plain and Simple!

With the easy part out of the way let's move onto the harder questions. The issue I'll target in this blog post is application packaging and virtual appliances.

I think virtual machines provide an interesting way of viewing how applications should be packaged for consumers and enterprise alike. Imagine if Oracle developed their next database engine tied to a specific kernel that they tuned to meet their needs and then shipped as a VM that could simply be copied onto a SAN and there were barely nothing else to do to get it up and running. Better yet, imagine a game publisher having complete control over the run time environment by compiling a custom system into a VM; no more need to worry about what other cruft is already on the gamer's system since the game runs inside the VM.

VMware is promoting this concept under the moniker "virtual appliance." As far as I'm concerned, there have been a few imaginative examples of virtual appliances but most are designed with virtualization as a peripheral thought. Another huge issue is the size of these appliances often ranging in the hundreds of megabytes to gigabytes. They are often full distros plus a few other tools that are actually pertinent to the appliance.

In some ways I see this as an opportunity for the second coming of micro-kernels (I know I'm painfully abusing the meaning of micro-kernels here). If there would be some streamlined way to create a VM with an open source kernel that contains only the bits you need to run the VM and then include your pertinent additions you would end up with a truly streamlined solution. There might be some wasted hard drive space but we are taking in the 10s or maybe, maybe couple 100s of megabytes. RAM is even less of an issue because of shared memory page techniques that the VMware platform can offer.

All right, enough rambling. I've decided to put my money where my mouth is and personally explore various applications. The basic premise is that you can be creative by well... being creative. You need to jump into things and experiment with solutions, try them on for size. These are the sorts of ideas that grow organically. You start with some basic stuff and slowly your mind starts to form a mental model. I personally think that the concept of properly using virtual machines is so radically different from how most of us have grown to think of computing that we literally need to boot-strap a new model.

That's quite literally what I've set out to do. I'm going to start very simple (conceptually anyway) and explore the various ideas I come up with that I think may be interesting to pursue. I suppose I should also set a few ground rules but nothing too limiting that it will keep me from exploring an idea.

1 - I'll try and keep a series of blog posts about my experiences. All these blog entries will have subject lines that end in - MELV for easy searching.
2 - When applicable (if a usable VM is produced out of an exploration) I'll do my best to make it available in some form.
3 - The initial exploration will be focused on application packaging and virtual appliances. Given my current mental model and ideas that have been brewing in my head this is an easy place to start my bootstrapping process.

Note that I've made no promise that an exploration should end in a usable VM of sorts. That would sort of defeat the purpose of exploration now wouldn't it.

Shawn Morel works for VMware but eats sleeps and blogs for himself... He certainly doesn't speak for VMware.