Scaling with Virtual Machines

One new thing since my real-world hiatus in the music industry is the prevalence of low-cost (like free) virtual machine software. They’re cheap, they’re stable, now we have linux and windows wherever we want, we can all own macbooks.

This idea is extremely intriguing when you start applying it to deploying server software. It seems to me like we would ideally be deploying a new virtual machine for every app in order to sandbox the application and it’s environment. Yeah, a lot of us are stuck in the old timeshare paradigm, but let’s look at it in terms of the next level.
The Desktop
Start with a developer’s desktop machine. I have a maxed-out i7 macbook pro, and run Windows under VirtualBox for IIS/Visual Studio/Office/etc. Then, whenever I start a new linux app, I just tack on a new virtual machine with a hostname matching the project.
With all machines using a single Mac shared folder, I get to use my favorite app to write code (Coda, in my case) and work within my mac environment. I generally never even look at the virtual hosts’ window, just use them as if they were a server somewhere in the closet.
Slick.
The Servers

Now this gets really interesting when you start thinking about deploying servers. Ideally we would have one box with an infinite number of virtual machines. Ideally, the OS overhead would be negligible. When you release a new project, you fire up a new virtual machine, install yer stuff, and add a DNS entry. No more site-wide broken apache configs, no more runaway processes, everyone has sudo where they need it with none of the risk. Once you own the hardware, you can do this as much as you want.
In that world hosting is not a problem anymore. You buy hardware resources in bulk and parcel out the pieces.
This is where we are going. I wonder how long it’s going to take us to get there?
By | 2011-07-02T20:14:00+00:00 July 2nd, 2011|Uncategorized|1 Comment

One Comment

  1. Florian Schulze July 3, 2011 at 8:59 am - Reply

    Another way to do this, which is less resource intensive, are containers. I think on BSD they are called jails, for Linux there is for example OpenVZ. Personally I use OpenVZ on a Debian host (because there everything is available in the default package repository) and Ubuntu in the containers. On the host I add iptable rules to forward outside ports to the internal (private IPs) network as necessary (should become easier once IPv6 is available everywhere).

Leave A Comment

+ 18 = 24