2 posts tagged “virtualization”
Today I came across a question about virtualizing web servers and databases. It caught my eye because I'd asked a similar question back in November.
To understand what virtualization is, let's start by looking at a server. You can thing of a server just like a regular desktop computer. It has resources like memory, a processor, and a hard drive, with an operating system that runs on top of all that. Now let's twist things up a bit. You take the server hardware and install a special operating system. This operating system provides a new base onto which you can install your regular operating system. Not only that, you could install several operating systems side by side-- all on one set of hardware. You gain an advantage this way because servers tend to be either way underutilized for simple tasks or way overburdened for complex or frequent tasks. You can now easily combine several underutilized servers in one place, freeing up hardware to share the load for the overworked servers.
Additionally, virtualization enables a number of new things that were not possible before, but I won't go into that here. I think the benefits for larger enterprises are pretty well documented. But what about smaller businesses? Here are two scenarios that show how virtualization can improve reliability and help promote growth for even the smallest businesses.
First, let's imagine you run a smallish business. You have between 15 and 50 computer users-- just big enough to need a full-time IT guy, or at least keep him busy enough he's cheaper than paying a consulting firm all the time. You probably have one server that acts as your domain controller, file server, and print server. You have another server running your web site, e-mail, intranet, and perhaps a custom business application. You have a third server running your database. This is a very common set up. Each of these servers is a single point of failure that can stop your business in it's tracks. Unfortunately, you're not big enough to really justify redundancy for all of those machines, but you do have a good UPS and overall they're pretty reliable. In fact, you run for months at a time with no trouble at all. However, when something happens, it happens big.
Enter virtualization. Now you set it up so that each server is a virtual host. Each host runs an instance of what used to run on each server, and they're configured to do load balancing and fail-over with the other two. Part of setting up the hosts is creating a virtual SAN so that the disks are shared in an efficient way. Now if a server goes down it's no big deal. More than that, as your business grows it scales up by just adding new boxes to the cluster- the hard work is already done. About the only thing you'll want to do later is add a real SAN to replace the virtual one.
This also adds flexibility to your setup with regards to deploying new systems. You can add servers for new features or test new OS or software versions in an isolated environment without having to purchase any additional hardware. You can take a system down for maintenance or upgrade during business hours without any loss of service.
Unfortunately, at this point getting the clustering to work is much easier said than done, but that is improving. And while still classified as a small business, the business in this example was still big enough to require a full-time IT staff member. So let's try another example.
Let's say I have a small software business. Since I hope to do that one day, this isn't far off. I have fewer than four users, but because I'm selling software I'm at the very least providing large downloads. I probably also need source control somewhere, and possibly provide a computer intensive service over the web. I also have a need for a testing environment that is guaranteed not to interfere with my production site. In short, I have processing needs that far outstrip what you'd normally need for this size user base.
In the past, to solve these problems I probably kept one server on site that's really more of a glorified workstation. This computer functions as source repository, pint server, and test environment. My web site, e-mail, and important backups are kept on a machine leased in a datacenter somewhere. This machine will automatically take care of backups, have a high quality internet connection, and have a qualified system administrator looking after it. If something goes wrong it the support contract ensures a replacement is up and running fairly quickly. If my needs grow beyond one production server, I can lease another machine
This setup is pretty good, but we can do a little better. I'll start by virtualizing the on-site server. Now I can isolate my test environment in it's own virtual machine. This will allow me to prevent my test system from bringing down my source control and print server. Even if I just do something that tries to claim all the resources I can protect myself by setting a quota. It also allows me to easily re-configure my test environment without interfering with the other system. In that past some people would have even required a second server to accomplish these same goals. Now I know I only need one.
Now let's look at the hosted server. There are two problems with this situation. First, you have to buy computing power a whole machine at a time. Secondly, occasional brief outages are still possible. These days, you don't have to lease a whole server. You lease a virtual server. You'll have to share the physical box with a few other people, but it's okay because you don't know who they are, they don't know who you are, and no one can see anyone's system but their own. You are protected from a peer grabbing all of the resources on the machine because your virtual server is actually running in a cluster on several machines. This also minimizes the danger of outages due to upgrades or individual machine failure. You save money because you pay a base rate for the virtual server, and then only pay for the computing resources you actually use. This could seem to get expensive depending on rates, but if you're using more computing power it's likely because you have more customers or sales leads, and this is a good thing. In fact, virtualized servers start for much less than leased physical servers.
In short, virtualization can save you money, increase reliability, and allow you to do more, no matter what size your business is.