There are only a few markets ideally suited for virtualization. One of them is software development. As the scene is usually
painted, the developer sits at his or her desk, compiles new software, and launches it in a virtual machine so that when it
crashes, it doesn’t take the whole box down.
We hear of developers who keep a Linux instance open on Windows, or vice-versa, either for the sake of cross-platform productivity
or to strike a blow for religious freedom.
But as long as virtualization is viewed as a tool of convenience for individual developers, IT is not likely to stay very
excited about it. The larger reality is, once we get to the point where we can assume that virtualization is a standard component
of every OS, major changes with bottom-line impact will take place miles away from any one developer’s desk.
As a former developer, I get excited about it. Now that I know I can do with virtualization what I always wished I could,
I can’t imagine architecting, developing, or doing QA on SOA and other distributed solutions of scale without virtualization
as a core OS component on every machine my solution might touch.
When a development lead hands a project to QA, technical writers, tech support, or anywhere in any direction in the development
chain, the project should always be passed along as a virtual disk image that’s ready to roll.
That means the virtual disk image would have the OS configured with all of the application’s dependencies in place, the application
itself, and the sample data and scripts required to test it thoroughly.
If I could do that back when I worked in development, I might have stuck with it longer.
If I were still working in IT, I’d declare that any software solution pitched to me could not get through my door as a stack
of install discs, a quick start guide, and a “give me a call if you run into any trouble.”
Leave me with a DVD that has a VM image I can copy to my local drive and execute with the OS’s default virtualization engine.
If it’s a client/server solution, give me two VM images to launch side by side; I can handle that. If it’s SOA, give me one
image I can launch multiple times. I can handle that, too. That’s the kind of task I could hand off to a junior member of
my technical staff.
I would have taken a lot more demos from vendors, and taken looks at a lot more intermediate builds if I could have just double-clicked
on a virtual disk image with 100 percent certainty that the OS and application would just run.
The turnaround time between a problem report to developers, contractors, tech support, or even Web site designers, and the
response could be cut to next to nothing for reproducible problems. You’d run the problematic application or site in a VM,
drive it to the point where the error occurs, freeze the virtual machine, and ship its image and the file containing its running
state to the responsible developer or support tech.
They will be just one click away from experiencing the problem exactly as you saw it, and they will be able to instant-replay
it as many times as suits them, with no chit-chat about what you did to get to that point, and (dare we hope?) no argument
about whether the problem can be reproduced on their end.