Are you using virtualization tools? As a Micro-ISV, you should be. Virtualization is the ability to emulate computer hardware virtually, in software. This is called a Virtual Machine (VM). With Microsoft Virtual PC, Microsoft Virtual Server, VMware Server, VMware Fusion and VirtualBox, all available for free, there is no excuse to not be using them.
What’s the Difference?
Virtualization solutions are available for desktops and servers and they are both immensely useful. As a Micro-ISV, using virtualization will save you from buying a lots of hardware. Just get a decent box to use at as a server and put either Microsoft Virtual Server or VMware Server on it and you can now pretend you have a bunch of servers. This is great for testing, for hosting source control repositories and database servers.
The desktop solutions, usually have a nicer UI than the server products and are a bit easier to work with. I use them for managing different development and test environments from a single computer, which is a great time-saver.
Which Should You Use?
You should probably be using both. Some things I use virtualization for include:
- Clean test environment for software
- Development of patches to older software
- Testing of new software, such as Visual Studio 2005
- Testing with Windows Vista
- Testing with Internet Explorer 7
- Remote debugging
- Testing Linux
Some of the things I use Virtual Server for include:
- Team Foundation Server
- Build machines
- Unit test machines
- Customer support VMs
- Wiki server
- Databases
This works great for me because not all of the above VMs are needed all the time so I can take them on and offline as needed. It’s a better use of hardware resources.
As long as you’re appropriately licensed, I also recommend setting up master VMs with each OS you use regularly. With a master vm, I can just make a copy of it and be up and running rather than installing the OS from scratch each time.
What’s the Catch?
Yes, there’s a catch. There’s always a catch. The first catch is that a VM will not generally run as fast as your native hardware, which makes sense because it is actually sharing your hardware. In most cases it is not noticeable, as long as you have enough RAM, which is easily the biggest obstacle to using VMs effectively. You really want at least 1GB of RAM, but I’d recommend you get at least 2GB. Another thing that can help with performance is to have a multi-core processor. The new Intel Core Duo chips are great for this, but older Pentium 4s can handle it as well. Just make sure you enable HyperThreading if you CPU supports it.
Another catch is to not try to run too many VMs on a single machine. The limit is really the amount of RAM you have, but it also depends on what each VM is doing. Hard drive access can also cause a bottleneck.
And one last thing to keep in mind. Although the VM software is usually free, Windows is not. If you intend to run Windows in your VMs, then you need to be appropriately licensed. If you have an MSDN subscription you’re probably all set for Windows licenses.
What Do I Use?
Primarily, I use Parallels Desktop as my virtualization solution within Mac OS X. Parallels Desktop works great on Mac OS X and runs Windows with aplomb. If you have an Intel Mac, you should look into Parallels Desktop (it’s also available for Windows and Linux).
I also use VMware Fusion Beta on Mac OS X for running Linux. Fusion, even in beta, runs Linux much better than Parallels does.
When I’m using Windows, I stick with Virtual PC and Virtual Server.
May 21st, 2007 at 11:58 am
From what I understand, it is against the Apple EULA to run OS X in a VM. Is that correct?
May 21st, 2007 at 12:10 pm
Correct. That’s why it makes the most sense to use OS X as your host OS. Then you can run Linux and Windows in VMs and have all three OS platforms at your fingertips!
May 21st, 2007 at 12:53 pm
It makes the most sense to be locked in to an OS that is preventing choice? For Apple, this is very M$ of them! {vbg}
May 21st, 2007 at 1:43 pm
Nce post Kevin - My new MacBook Pro is the best Windows notebook I’ve had to date :).
May 21st, 2007 at 1:44 pm
Well, sure there’s that. But if you can get past the whole “vendor lock-in” thing, then OS X is great! Go on, drink the Kool-Aid!
May 21st, 2007 at 4:05 pm
Hmmm. I’m just weaning off of the M$ Kool-aid, and you’re trying to entice me to the Apple Kool-aid? Nancy Reagan told me to “Just say NO!!!”
I’m liking the Linux Kool-aid. Sure it’s a bit bitter sometimes, and every now and then there’s a fly doing the backstroke, but it’s also (almost) all you can drink!
I like Linux in a box
I like Linux with a fox
I like Linux in my house
I like Linux with a mouse
I like Linux here and there
I like Linux everywhere
I like Linux, that’s not a sham
I do like Linux, Paul-I-am.
(Sorry Dr. Seuss!!)
May 21st, 2007 at 4:07 pm
Doh! Can I switch the next to last line to read:
“I like Linux, running VM”
It makes it tie in with the topic better!
May 23rd, 2007 at 12:28 pm
The recommendation I always give to people is this:
1) Actual hardware is the preferred way to go. You simply *cannot* get the same experience without it. For instance, some things are hardware specific (for instance, the boot camp drivers for video cards on Vista are not something you’ll ever run into on a real Win32 machine with Vista — dual monitor support is all messed up). Other things are experience based (Macs have a Help key on their keyboards which don’t exist on a PC keyboard).
2) If you cannot afford actual hardware, then use virtualization. It’s the next best thing. But keep in mind that your experience is not the same as someone running on real hardware. So be certain to get some testing on real-world machines.
This applies to cross platform dev work. If you’re doing single-platform work, the points are a lot less pressing. But for cross platform work, you better be doing #1 or #2, or you’re screwed.
June 20th, 2007 at 4:02 pm
[…] Visual Studio 2003 and are now getting new computers with Vista. They’re forced to set up virtual machines in order to do their work. It’s […]