An Introduction to Virtualization
So I’m in Dayton for two weeks for company training, and meeting people from other offices. Jim, from the Seattle office, asked me if I would write a post about virtualization, a topic he isn’t familiar with. I’ve been using virtualization tools for a few years now, so here we go with a brief introduction on the topic of virtualization (in exchange for him teaching me about Windows Phone 7, since I know NOTHING about that!)
Virtualization, as it pertains to computing, is the act of running an operating system inside of an operating system. The name comes from the fact that you simulate, or “virtualize” the underlying hardware with software. There are a couple of very nice advantages this gives us, such as being able to easily save the state of the virtual machine, move it to another computer, and even run multiple computers on a single physical computer!
So why would we want to run multiple computers on a single physical computer? One use, as I’m finding out today, is when you need a computer for a short amount of time. For instance, I’m working toward getting my Microsoft Sharepoint 2010 certification. I need a server to practice with it on. Rather than spend several hundred dollars on another computer that’s going to take up space and power, then go unused after I get the certification, I can quickly create a virtual server, play with it, then discard it afterwards without spending a dime. (thanks MSDN license!)
On the business side, one of the buzzwords out there today is “consolidation.” In the business sense, consolidation refers to moving your physical servers into virtual machines, and running several servers on a single physical computer. This reduces costs both in power, but also space and cooling costs as well, so there’s a lot of money to be saved in switching to a virtualized environment. The reason this is possible is because very few resources, whether they are load balancers, storage servers, or web hosts, are ever fully utilized. Many times you may have those resources running at a much lower utilization rate, say 20%. That means that you’re wasting 80% of that server’s power. So it makes sense to take four or five of these underutilized resources and have them share the physical computer so that they utilize near-100% of that computer’s resources.
There are two more benefits to virtualization that your business can get from virtualization: near-zero downtime and resource re-allocation. In a traditional physical set-up, if your server crashes, be it from a bad motherboard or a bad hard drive, you are out of luck until you either get a spare server set up (a process that at the soonest is going to take an hour) or until you bring up the backup system (which, with a decreasing increase in IT budgets is becoming an extraordinary thing). Imagine, instead, that all you had to do was copy the files that contain the virtual server to another server, and turn it on. It turns what could be a several hour process into several minutes, saving you time and money.
The converse of crashes is investment, which brings us to the issue of re-allocation. In traditional infrastructure, any investment in a specific area, such as firewalls or load balancers, or even in specific functions within the infrastructure, such as databases or web servers, are more or less permanent. Any alteration to the structure is going to be a large undertaking, involving your engineers and administrators re-imaging machines and altering configuration files. With virtualization, if you need to move around resources, it’s as simple as turning off resources you don’t need and replacing them with resources you do. This takes a few minutes at most, and since you spin up “fresh” images that are already configured and ready to do, and whether you need one extra resource or ten, the same image is used. This leads to greater flexibility in your IT utilization, meaning that instead of having to invest all of your money in the computing power to hit the maximum usage of all your resources, you only have to have enough dedicated power to meet the minimum needs of the infrastructure, then having the rest in a virtual, mobile environment where you can meet peak demands on resources.
Now, as with anything, it’s not all sunshine and roses with virtualization. For one thing, servers which are running in a virtual machine will have a performance hit inherent in the fact they are not actually running on the hardware. And if you want to go whole hog and virtualize your entire infrastructure to be a dynamic as possible, you will have to redesign how you do your IT business, and design new services to scale your resources, store these images, and all of that. I don’t recommend by any stretch of the imagination that you could switch to a virtualized environment in a weekend. Most likely you will want a specialize to come in and help you in the process. Obviously since I work for Sogeti I’d prefer you call on Sogeti, since we have lots of experience in cloud computing and virtualization (cloud computing is just virtualization in someone else’s data center).
There are a lot of resources you can check out to learn more about virtualization. Amazon has a surprisingly good offering of cloud products that come with explanation as to why you would want to invest in some of their solutions. Amazon has their cloud, and so does Microsoft if you are invested in Microsoft products. There are also cloud offerings from Rackspace and GoGrid. Amazon and Microsoft are probably the biggest providers. I’d also look up “hybrid cloud” since that’s becoming a great cost-saving measure over letting Amazon take care of all of your virtualization needs.
If you want to just make a cloud real fast and see if it’s right for you and how it all behaves, I recommend getting StackOps’ cloud-in-a-CD, which lets you install all the stuff you need to run a cloud in one CD and a web configuration form (see this post). It emulates Amazon’s EC2 offering and that’s about it, but that’s really the core of migrating to a virtualized environment.
As per usual, if you have any questions, you can drop me a line or comment on this post!