The first iterations of the cloud used virtualization technology because it was relatively mature, secure, and offered a way to improve utilization of existing hardware while providing increased agility to clients. As we’ve discussed many times before, there were prices to pay for those benefits, most obviously in performance. In recent years, a combination of technologies has reached maturity that allow us to build platforms with the benefits of the virtualized cloud and none of the drawbacks of virtualization: I’m talking about bare metal clouds combined with container technology, of which Docker is currently the most prominent implementation.
Containers are not new; they’ve been around for years, but it’s only now that they’re seeing widespread traction because previous implementations were flawed compared to virtual machines. Containers have been described as a form of light-weight virtualization by analogy with current virtualization technology, but it’s better to go back to first principles when thinking about containers, because there are significant differences between a container and a virtual machine. In essence, containers provide an environment that packages up everything an application needs to run, allowing it to run anywhere, including on virtual machines, developer’s laptops, and bare metal. So far, so similar to virtualization. Where containers differ is that they do not contain a full operating system: each relies on the host operating system’s kernel and a service like Docker running on the host. That allows them to be massively more resource efficient than a virtual machine.
Recent advances in bare metal cloud technology, like that offered by InterWorx, make it feasible to deploy bare metal clouds to run collections of containers that offer all the flexibility of the virtualized cloud with barely any of the performance degradation typically associated with virtualization.
Companies like Google have long been aware of the advantages of using containers. In fact, Google’s entire infrastructure runs on them: billions of containers every day. They use container technology rather than virtualization because it’s so much more resource efficient — allowing them to extract the maximum ROI from infrastructure investments while maintaining the flexibility that they require.
An example of a scenario more typical to hosting providers is that of Pantheon, a managed Drupal hosting company that offers hosting plans built entirely on containers. As the company’s Zack Rosen says:
“We believe that the future cloud will run on containers, not virtual machines. Pantheon’s container based infrastructure is a huge departure from traditional virtual machine and server based “hosting” model.”
At the time of that post’s publication, Pantheon were running 100,000 instances of Drupal, which would have required 200,000 virtual machines (for production and testing) if they were to meet their hosting requirement. That would have been massively expensive and hugely complex to manage. Instead the company runs entirely on containers.
Some of the advantages of running containerized infrastructure include:
- Faster deployments — containers start-ups are almost instantaneous because there is no boot-up process; containers all use the host operating system’s kernel. Applications and services can be provisioned in fractions of a second.
- More efficient resource use — each guest operating system in a virtual machine uses up resources like RAM and processing power. Containers require a fraction of the resources, and the vast majority are used for running the application in question, not for operating system overhead.
- Easier patch management — the consequences of a vulnerability in the operating system kernel are dire, and they’re made more so by the burden of having to patch the host operating system and the dozens of virtual machines it may be running. With containers only the “host” has a running kernel, making patch applications much simpler.
We’re on the cusp of a revolution in the hosting and cloud spaces. Virtualized infrastructure-as-a-service platforms will be replaced by bare metal cloud platforms that offer far greater price-performance profiles. Virtual machines themselves will be replaced by container technologies that allow tremendous versatility without the overhead of a hypervisor and guest operating systems.