Virtual Machines have been around for years. VMWare and Microsoft have been the main competitors for a while, both offering somewhat similar products. Parallels for Mac is another, and Virtual Box for pretty much everything. I have used them all. When it comes right down to it, VMWare, to me, is ahead of the rest, so I am going to focus on that. Heck, I did a P2V (Physical to Virtual) on my girlfriends wacked out laptop and that is working great, 2 months later :)
What is a typical scenario for most people? They go buy a machine, set it up, use it. It works great. It crashes or gets hosed. They lose most if not everything, spend a week redoing the machine and start the process over. This goes on for a few years, then they get a new machine, and start the cycle over
What if you thought “virtually”? So, you go buy (or build) your beefy development machine. But then didn’t install anything but Windows Updates (of course), and VMWare Workstation. Now granted your want your physical box to have 8, 12, or 16 GB of RAM, and loads of fast disk space, but yeah, just need to have a beefy machine.
Now, you set up your actual dev machine as a virtual machine, you give it 8 GB of RAM. You install the OS, and take a snapshot (In VMWare). You install VS2010, take a snapshot. You install SQL Server 2008 R2 Dev, snapshot. You install each browser you need to test with, snapshot, snapshot, snapshot. You get the idea.
Now, if something is totally wacked, you can revert to a snapshot. You can even have multiple paths of snapshots, this type of thing is very VERY cool if you get it going correctly.
You can also just grab the entire VM hard disk and settings and copy off to your trusty 2 TB USB drive or whatever and you can do this once a week and you have a complete backup of your dev machine.
You can then set up another VM, say, “Web Server” or whatever you desire, give it 2 GB or whatever it needs to run, do the same thing. You can have both running, and do your testing. You can create a separate SQL Machine for testing. Try to set up your environment as you would for your development. If you need an Active Directory? Set that up, set up 3 VM’s or whatever, you don’t need to have them all running all the time. You need Exchange? Or SharePoint? Same thing. You have a Technet or MSDN Subscription, right? No? Go get one NOW.
What is even better then best, is that 3 years later, when you get an even better machine, you know what? You just install VMWorkstation, and copy or locate your VM’s and you are set. No resetting things up, etc, etc. It just works.
You want to create a smaller dev VM for holiday travel? Take it on USB, use Mom’s PC with VMWare Player and give your VM 1 GB of RAM. You just need enough to get by on. No laptop needed, just bring up your USB. You get the idea.. you can do pretty much anything you’d like.
If a salesperson came up to you and said “I have a way for you to configure multiple environments, multiple computers, setups, and have ways to revert back to things you did while configuring, and take backups of everything easily, etc, etc” How much would you pay? $1k? $5k? More?
How about roughly $200, for VMWare Workstation (if you already have Technet/MSDN – which you would have already). I’m sold.
If you really want to get complicated, you can set up VM Farms, and run VMWare Servers, and have multiple VM’s going and easily accessible. But using VMWorkstation to start is good enough, and good enough is fine :)