In the early days of web hosting things were very simple. A web server contained everything needed to host multiple web sites; the web server itself, an email server, database server(s), log analyzing programs for visitor statistics, and a number of other more specialized gimmicks and gizmos.
Simple and inexpensive, but ineffective. If a database spins out of control or someone dumps half a million email messages into the queue, the entire server is affected. Meaning your site slows, your database slows, your email slows. Then you contact the host and say, “What the hell, man?” and the host responds with something profound like, “Ah, well, you know…”
So in order to combat that kind of rickety infrastructure, most hosts began running discreet, application-based servers. So your web site would live on a box that was strictly a web server, your database on a separate piece of hardware, your mail, etc., all separate but equal. So if there’s a problem with one service, the others stay up and running.
That was a vast improvement over the old way of doing things. But it multiplied costs and potential points of failure. And it left us with many of the same problems. For instance, if your database driven web site is up but your database server is down, that web server isn’t doing you much good.
Around the turn of the century a new option became available; virtual machines (VMs). A virtual machine is, to put it simply, a computer within a computer. The VM runs an operating system just like a hardware machine, but it’s possible to run multiple VMs on a single piece of heavy-duty hardware.
You may have used something like VMWare to run Windows on your Mac computer, or Linux on your Windows machine, etc. Web hosts use VMs in much the same way, but usually the VMs are all identical operating systems running different applications, depending on the host’s specialties.
It might not surprise you to learn that performance on early commercial VMs was not equal to the discreet, application-based servers that most hosts were running. It also may not surprise you to learn that many hosts adopted them anyway, in an effort to cut costs.
That resulted in VMs getting a reputation as a lesser service. A reputation that spread to web hosting consumers, who, when shopping for a new host would often ask, “You aren’t running your web servers on VMs, are you? I don’t want anything to do with those things!”
But a lot has changed in the past decade. As the Internet has grown, data centers have been forced to become a lot more stingy with power. Five years ago if we needed to add racks of servers to our data centers all we had to worry about was space. Now they’ll give us all the space we want, but we have to negotiate a price for additional power. And that power has become more expensive (surprise!) as a result.
Luckily, at the same time that power has been harder to come by, VMs have become much more stable and reliable, and their core functionality – multiple servers on a single physical machine – actually decreases power consumption. You could go so far as to say that VMs are “green.”
But aside from being less resource hungry, VMs provide another critical and wonderful advantage; they are easily and quickly replicable. In the past, if we had a hardware failure, the server would be down until we could drive over to the data center and fix or replace it. If it had to be replaced, you could be in for an outage of several hours. With VMs, and entire dead server can be “moved” in minutes.
It sounds great, what are you waiting for?
It is that capability to quickly replicate – along with the power savings as a bonus – that made us decide a few years ago to pursue virtualization. It took a long time to get a system in place that we were satisfied with, but we feel like we’ve got just such a system now.
We started off virtualizing some of the database servers that were running on older hardware that we wanted to retire. When that was successful, we put a plan in place to virtualize all of the older Windows 2003/IIS 6 web servers. That started in September and is still ongoing. When we finish with those early next year, more than 50% of the DiscountASP.NET servers will be running on VMs.
Will we eventually virtualize everything? Probably. We’re confident that we can continue to provide the same high quality service that we have become known for (or provide even better and more flexible service), so it makes sense on just about every level.
But we run a lot of servers, and virtualization, at least at the moment, isn’t a good fit for all of them. Mail servers, for instance, typically have high I/O, memory and storage requirements, and VMs don’t outperform physical hardware in those circumstances.
Also, virtualization of a server that’s actively being used by hundreds or thousands of users takes a lot of time to do properly and with the least amount of disruption. But it’s something that we’re committed to, so we’ll likely be at it for some time to come.
Here’s to the virtual world! Sometimes it can be a great and glorious thing to be a part of it. We continue to live in interesting times.