Docker

Container based virtualization can revolutionize the way we deliver software. They simplify

running the exact same software stack in all environments

running the exact same software stack on all servers (even on our development machines)

do rapid deployments and rollbacks, as often as we want

do canary or red/green deployments

better utilize available resources

Docker (www.docker.io) makes it easy to manage LXC containers (the same technology Heroku is using behind the scenes) and enables us to build our own "private Heroku" to test and deliver our software. And the best thing: you can decide yourself if you want to run them on bare metal servers, the cloud or any cheap VPS. You can even use those advanced deployment techniques when your site still fits on one physical server.