Preface: this post is actually sitting at around 6 months old now, I figure it’s time to wrap it up (yep, still eating away at those drafts in my wordpress). Now onto the show.
I’ve been advocating for Virtualization at my workplace (has since become my old workplace); why? Because it just makes sense for so many reasons. To name a few…
- Disaster Recovery
- Environment collisions
- Resources (hardware, space, etc)
Sure, there are some doubters. Of the concerns, performance is most often the greatest concern. While I don’t have any hard numbers myself, I can say that the savings for: deployment time, rackspace, disaster recovery plans and administration savings, can easily open up the budget to the point where you can purchase a single or couple more beefy machines, drop ESX Server on there and I’m quite confident that your performance is more than sufficient for the wide array of internal (non-mission-critical systems).
Granted you plan and manage production hardware, virtualization also makes great sense in terms of production web systems, which generally don’t require the high-end performance that their database counterparts would. Not to mention, the relative simplicity of a farm of webservers vs a farm of database servers (which would require an intelligent and fail-safe replication system).
Now, I attended a VMWare workshop a couple years back and there were some big players who boasted about how virtualization has decreased time and costs administering hardware and servers. Not only was virtualization a great savings, it also performed well enough for production deployment.
Sorry, no hard data here.. just a lot of hand-waving. Do your own research, it’s worth it!
How do I use Virtualization
For myself, I use it primarily to keep environments clean, organized and separated. For instance, I keep several ‘maintenance’-ish Windows installs.
- As the name suggests, this image is the base windows xp installation. Prior to any windows updates, software installs, etc
- WindowsXP box with a fresh install of MSSQL 2005
- A ready-to-go IIS server with ASP.NET, PHP and Perl ready to go. Sorry, no use for Python or Ruby (gasp).
- The equivalent of WinXP_IIS but with Apache. Also thrown in is MySQL on this box
- This is my DMZ in a sense. A place where I don’t need to think twice about installing trial software or those annoying, yet essential clients such as BitComet and Limewire.
All of the above are essential for client/contract work. Not only does it keep resources separated, it also makes for a much easier process of matching my environment to a clients environment.
Wait a minute… what about the Junk partition? Well, that one made the list above simply cause it’s Windows.
Virtualization for Testing
Another big use I have for virtualization is for testing. I find it essential that I can run old versions of IE, Firefox, Netscape, and Opera all within their own environment. Better to be safe than sorry, I’ve found running IE 5 and 6 on the same box to be somewhat flaky at times.
Virtualization also means I can roll other platforms very easily. While I don’t use them as much at the moment, I do have Ubuntu_5.10, Gentoo, FreeBSD_6.0 and… yes, MacOSX_10.4.1 running on my PC. This gives me fairly good flexibility when it comes to testing for the web.
In closing, I have included some resources below for those interested in more of the nitty-gritty details.