You know, there has been a lot of controversy lately (from developers I respect who should know better) about the news that Visual Studio .NET 2002/2005 will "mostly work but be unsupported" on Windows Vista. They claim that the answer "Just move your environment to Virtual PC and develop on VS.NET 2003 there" is unacceptable, claiming that virtualization is "slow, even on great hardware". Are the people complaining really going to be moving to Vista anyways? Or do they just like having stuff to complain about? Hmmm, I wonder...
First off, who is still developing on Windows XP in the first place? Most developers I know work on Windows Server 2003. It's faster, more responsive, and is more locked-down... plus you can develop and test on the same machine with IIS 6 built-in. You can say "well, my shop can't afford that many license of Windows Server", but every Microsoft shop should have at least one MSDN subscription. It's the single most cost-effective way to build testing environments.
But I digress. The bottom line is, if you're a develpment shop, and you're NOT using virtualization yet, you are wasting valuable time and money. How can I make such a bold and audacious claim? Well, consider the following scenario:
"Scott" is a .NET developer working for a Web 2.0 company. They are working on the next generation of their web platform, and they want to be able to leverage ASP.NET AJAX Extensions for the browser, and WCF & WPF for richer applications on the desktop. He's constantly evaluating new bits as they are released, and managing his system is a pain. The .NET 3.0 installer has hosed his system more times than he can count, and he's had to delay his project several times to rebuild his machine. He only has one machine at his desk, and between waiting for the Windows XP installer and the VS 2005 installer, he has burned through plenty of company money waiting around. He knows it is a pain, but he and his manager have accepted it as the price you pay for staying on the bleeding edge.
Sounds like a lot of fun, right? <rolls eyes>
Now consider my setup. I test several new Vista builds every month, and yet I spend less than an hour of downtime for every system wipe I undergo. Why? Because I'm using Virtual Server 2005 R2 SP1 Beta 2 (say that 5x fast), and I make extensive use of virtual machines for my development environment. On my hard drive, I currently have the following virtual machines:
- Base Machine: Clean install of Windows XP SP2 that has no programs on it and is fully patched.
- Base Machine: Clean install of Windows Server 2003 R2 that has no programs installed and is fully patched.
- Base Machine: Clean install of WS2003 R2 and SQL Server 2005 that is fully patched.
- Base Machine: Clean install of WS2003 R2, SQL Server 2005, and Visual Studio 2005 that is fully patched.
- Dev Machine: Windows Server 2003 R2 with Visual Studio Team Suite and SQL Server 2005 installed.
- Dev 2: Windows Server 2003 R2 machine with a single-server installation of Team Foundation Server installed.
- The recent Visual Studio "Orcas" September CTP VM that Microsoft just put out.
This gives me a wide array of VMs to choose from for experimentation. If I need to try something new, like say the latest .NET 3.0 CTP, I just make a copy of one of my existing VMs to a new folder, fire it up, and go to town... all without affecting my main installation. Plus, I keep my source code on a separate virtual hard drive that all my VMs share, so I don't have to worry about VS2005 throwing access violations or any crap like that. If I need to access it on my Host PC, I can use the new VHDMount tool to mount the VHD as if it were a physical hard drive. It has made my life orders of mangitude simpler.
Still think that virtualization is slow? Most new Intel and AMD processors have some kind of hardware-based virtualization acceleration baked right into the chip. Virtual Server 2005 R2 SP1 Beta 2 has support for both, and is extremely fast. You may need to spend a couple hundred bucks to max out your RAM, but it is totally worth it. Using it on Vista is even better because you can use a USB key and utilize ReadyBoost to increase your performance. And if you use Remote Desktop instead of Microsoft's terrible VM clients, you shoud hardly experience any lagging. Oh yeah, and don't run your Virtual Machines off your primary hard drive. Invest $150 into an external USB 2.0 drive that is at least 200GB. That way, you won't have IO writes on your VM interfering with your primary HD. That's what's probably slowing most people down.
Virtualization in a development shop allows for all developers to have a uniform environment without having to deploy RIS or WDS. In a couple years, I can easily see development shops deploying servers running Windows Server 2007 with the Windows Virtualization add-on, and will leverage 64-bit processing and hardware virtualization to run the machines for the entire development group on one box. Forget having to buy immensely powerful desktops for the development staff... just get a decent Vista machine with Gigabit ethernet and Remote Desktop into your Virtual Development Machine from across the network.
As much as Virtual PC 2007 is probably going to suck, Microsoft's other virtualization efforts are impressive (and so are VMWare's for that matter). If you haven't invested in a virtualized environment, soon you may find yourself... virtually left behind.