The Scenario:
Say you've spent a few months working on a project. You have setup your workstation in very specific ways. You've installed specific software tools, specific drivers. You've setup areas in your hard drive(s) for code and for testing. You may have spent countless hours tweaking and configuring this very special environment. On "delivery day", you rollout your application with great success. The boss is happy, the customer is happy! A job well done!
Now, you get your next assignment. It's a complete 180 from the previous project. You need different drivers, you may even be developing for a different OS! Of course, you are still expected to support the previous project. What do you do?
The Technology: Software Virtualization using Microsoft Virtual PC
So, what is Microsoft Virtual PC? The answer to that question is not a short answer so the Microsoft website (http://www.microsoft.com/windows/virtualpc/default.mspx) explains their product in great detail. However, in a nutshell, the Virtual PC software allows you to run a computer within your computer. This "virtual" computer, the Virtual PC, acts and behaves just like a normal computer. It has drives, network cards, etc. As a matter of fact, if you choose to do allow it, the Virtual PC can even connect to the network and from the network, the Virtual PC and your "host" PC (the real computer hosting the virtual computer) will look like two separate computers!
Because you can install software to this Virtual PC, just like you can to any computer, you can configure the Virtual PC in any way you need, including the installation of any software tools you may need for your project. Furthermore, the Virtual PC is stored in two files in your host computer, which you can move from computer to computer or archive easily.
At present, Virtual PC supports virtualization of the "sanctioned" Microsoft operating systems (including good old DOS). Also, although not listed in the supported operating systems, it is a well known "secret" that certain Linux distributions can also be virtualized on VPC. I've never installed one, though, but I've heard that others have!
A Solution: Virtual PCs for each (or like) projects:
Now going back to the problem, topic of this post. If you are a developer (especially a developer for hire) the above scenario is one that you are familiar with. Of course, I introduced Virtualization technology above for a reason. A great way to be able to manage different projects with different workstation needs is to use different Virtual PCs (VPCs) to work on different projects, calling up the different virtual environments where needed.
For example, say you have the following projects you are responsible for:
- An ASP.NET web application that relies on Active Directory for user registration (Production Target: Windows 2003 with Active Directory).
- An ASP.NET web application that makes extensive use of a certain vendor's components (Production Target: Windows 2000).
- A legacy Coldfusion / PHP web application that you are stuck supporting for a client that won't chage (Production Target: Windows 2000).
- A VB.NET Windows application, targeting Windows XP.
To support the above, you could have a few VPCs configured as follows:
- Windows 2003 with Active Directory and IIS (project #1 above)
- Windows 2000 with IIS (projects #2 & #3 above)
- Windows XP (project #4 above)
Through the use of Virtual PC technology, specifically Microsoft's Virtual PC 2004, you can have an unliited number of environments "ready" to satisfy the need of any old (and new) projects that you are responsible for. Although there is a little more required to execute the strategy here correctly (for example, managing what can sometimes be very large VPC "image" files), the concept is simple yet powerful enough to be used to your advantage.
1 comment
Indeed, you are somewhat correct. The same technique explained here with Virtual PC should work as well with Virtual Server 2005. The difference is in the GUI and usability of each product. Virtual PC has a phenomenal GUI and is quite simple to setup and use (in minutes for even a beginning developer). Also in VPC, the guest and host PCs can share resources easily (low security). In Virtual Server, the GUI is replaced with a WEB Based console that is a bit harder to setup and use and resources are not easily shared between guest and host (high security). A good article that compares both can be found here.In the end, though, I think it really depends on the individual developer's needs, but either product should do the trick. Thank you for your post!
December 28, 2006 at 11:01:00 PM ESTPost a Comment