⇥ Going virtual

November 13, 2009
4 comments
 
⇥ Permalink

Even as a relatively small company, we’re drawing huge benefits from virtualization.

Even small companies can draw huge benefits from virtualization.

Even small companies can draw huge benefits from virtualization.

As I write this, about 50% of all our web-based systems are deployed on a completely virtualized environment. Even as a pretty small company, we’re drawing huge practical benefits from this move that I think every business owner should be aware of.

First of all, a bit of background: why did we decide on virtualization?

The answer is actually quite simple: our old machines were dying. Our IT needs are relatively modest, and we use software that is pretty efficient at what it does; as a result, our servers tend to stick around for a rather long time (properly patched and maintained, of course)—in fact, our software tends to outlast the machines it runs on, so that we often find ourselves having to deal with unexpected hardware upgrades when, for example, a hardware component fails and there are no replacements around.

Every now and then, therefore, it happens that the fine folks at ServerBeach, who have hosted our systems for many years now, will drop us an e-mail to let us know that one or more of our machines has reached its End of Life and making us a special offer for switching to a newer server—one that won’t send them scrambling for parts when it goes belly-up.

When we received the latest of these offers last August, a cursory look at their latest offering showed that  we could rent a server that’s probably four times as powerful as any of the ones that we had at the time for about half the monthly fee; thus, moving everything to new machines would have halved our costs, but consolidating our systems would have yielded even greater savings—after all, we didn’t actually need the additional power, since our systems ran just fine on the old configurations.

That was easier said than done, however, as we couldn’t simply start aggregating systems willy-nilly: our PCI certification is predicated on the isolation of certain critical applications from the others, so that we only need to certify that those systems are entirely PCI compliant. Thus, we can’t just move our frontend to (say) the machine that hosts the store, or make our service layer coexist with Vulcan, and so on.

This is where virtualization comes into play. By virtualizing our severs, we have been able to combine at least three of our old servers onto a single physical machine, so that our costs ended up going down sixfolda combination of servers that used to cost us around $600 a month now costs around $110 a month. Forget, for a moment, about all the hype surrounding virtualization solutions—this is as real a saving as it gets.

In the process, we have also gained a number of additional advantages:

  • Better system isolation—the host server now acts as a firewall, giving us one more level of isolation between the actual applications and the net.
  • Easier backups—we can make backups of entire servers at the click of a button (or at the run of a script). If one of them goes bye-bye, all we need to do is restart it.
  • Peace of mind—mistakes are an option with the new setup, because they can be easily undone. A snapshot before an upgrade is cheap insurance if said upgrade goes south.
  • Shorter deployment time—we now have our own set of “standard” images that we can deploy in a heartbeat. Need one more frontend server? No problem—make a copy of our default image and you’re in business!

Of course, our ability to scale is limited by the hardware we use—at some point, we will have to get a new machine just so that we can add our virtual server, so our costs are not linear.

Yet, I like this solution better than using a completely virtualized environment, like EC2—mostly because the smallest EC2 instance costs around $90 a month, which is financially unreasonable for our needs. We have, instead, settled on VMWare Server, which, at least for the moment, suits our needs perfectly and has a reasonably easy-to-use, set-it-and-forget-it interface that runs inside a browser (although I need to protest here, because it only works on Windows and Linux… which leaves us poor OSX fanboys in the lurch). VMWare is running very well and handling the traffic quite easily; plus, it’s good to know that we always have the opportunity to scale up to ESX if we ever need its more advanced functionality—and that (although it’s not cheap) doing so won’t break the bank.

Edit: this blog is not currently (November 13, 2009) hosted on our virtualized environment; however, judging by how often the load on this shared server goes up to 700 and how many times the hosting company has completely ignored my requests to be moved to another server, it will be very soon.

Image credits: Virtual Legos by fdecomite