It seems so simple, but we’re in a real arms race regarding virtualization techniques and technologies.

The difficulty is not so much to get something working, the main problem is to find the right tool for the right job.

Here I try to get a little order into the confusing forest of different technologies, maybe just to have something to use myself.

VMware, HyperV etc. pp

You could call this “legacy virtualization”. Big, chunky virtual machines, sharing resources with other virtual machines. We’ve had them since the 90s and they’re quite robust by now (well, HyperV being the newcomer isn’t that stable, but they’re working on it).

To be used: as a hardware server replacement as long as it doesn’t need “excess” amounts of:

  • CPU
  • memory
  • I/O

Explanation: if it uses much of one or more of the resources given, your VM will have an impact on other VMs on the same host, or it will be throttled. You don’t want either of those.

Vagrant

Can be used to provide “legacy virtualization” VMs in a half-automated manner, with possibilities to update a kind of template (the box) for whole groups of servers.

Usable in training or testing, but I wouldn’t build a production service on it. Why? For starters, rollback is - if possible - a real pain-in-the-behind process. Not that it should be, there is versioning and stuff but it’s not as easy as telling vagrant to just use the one-older-than-newest version of that image to build your service. It’s more of an automated way to build predefined VM installations.

Docker

Buzzword-bingo! Containers are in everybody’s mouth and on everybody’s machines. The question is if it is a technology to build your operations on. I’d argue that it is as long as you lock everything down, which in turn removes most of the advantages of containers.

There’s one exception: dynamic services (think kubernetes or swarm or something like that). If you have a (preferably stateless) service that can grow and shrink more or less on its own (this may come as a shock, but most can’t) there’s a lot of potential that containers can leverage underlying infrastructure to some kind of breathing mechanism.

However, techniques and software to do that are still quite young, and thus not that well tested.

Oh, btw. the technology itself isn’t that new, heard of BSD jails before? Yup, same thing.