I'm still amazed when I mention virtualization or VMware to IT recruiters or colleagues and am met with, "What's that?".
In my opinion, virtualization is the biggest thing to happen to Information Technology since the integrated circuit (until Quantum computing becomes mainstream :) ....what about virtual Quantum computers...mmmm) Put simply, (platform or computer) virtualization is the emulation of PC hardware components in software. Virtualization software allows you to run multiple 'virtual' machines (installed with various operating systems) on a single, physical host (the PC with the virtualization software installed).
My first exposure to virtualization technology was back in 2003 when I saw Microsoft's Virtual PC product, however, the company leading the way in virtualization is VMware (by at least a 5 year margin). Since then, I've incorporated virtualization into almost every aspect of my professional (and personal) life.
In fact, the blog you're reading right now is hosted on a Windows 2003 server virtual machine running in VMware ESX server along side 7 other virtual machines (3 Windows Server, 1 WinXP, and 4 Linux / FreeBSD)!!! All of this on a single box with only 2GB of RAM and 2 - dual core Xeon processors. With the amazing virtual machine memory sharing / swapping technology that VMware has built into their product, the host workstation is only starting to hit 90% memory usage during peak load. That's pretty amazing.
Since finding out that I could run multiple "virtual" machines from within Windows (and Linux and Mac), I've been exploring ways to incorporate this technology and accompanying processes into the development side of my career. I now develop solely within a virtual environment. Some of the benefits to this are:
Portable development environment - I have my full development environment available on anyone's machine with a quick install of the free VMware Player and my external laptop drive.
Encapsulated environments - develop against a full 'virtual' network infrastructure complete with Active Directory, Exchange, Continuous Integration server, etc. all on one machine, completely isolated from other networks.
Environment reset - After you've finished tests, roll-back your entire environment to a pre-defined "snapshot".
Non-polluting beta testing - Want to try out that new beta technology but are scared it would mess up your platform? Fire up a virtual machine, install your beta and play in your isolated sandbox.
I also use virtual machines to quickly test my slipstreamed operating system installations, setup virtual training environments, play with different Linux distributions, or house a specialized function such as financial software applications or media encoding.
Virtualization is only going to continue to revolutionize the IT industry, forcing us to constantly change the way we approach computing, which begs the question:
Are you "virtual"? ...