Google and The Evolution from Virtualization to Containerization
Category : Uncategorized
In 2005, Google was struggling with the problems of delivering a web-based services at scale; specifically how to scale consumption of resources in their data center elastically to give all users of the service a great experience however many (or few) of them were using the service at any given instant, while simultaneously using any leftover resources for background jobs.
Google experimented with virtualization for this task but quickly found it unsuitable; the main problems being that the performance penalty for virtualizing was too high (equivalent to the density being too low) and the response wasn’t elastic enough to support a web-based service at scale. This latter point is interesting because web services cannot predict at any given time whether they’ll be servicing 10, 100 or one million requests.
However, the users sitting on the other end expect instant response regardless of how many others are simultaneously using the service. With the average spin-up time of a hypervisor being measured in tens of seconds, it’s clear that the user expectations of results within a second simply cannot be met. At the same time, a group of engineers were experimenting in Linux with a concept based on cgroups called process containers. Within a matter of months, Google hired this group and set about containerizing its data centers to solve the elasticity at scale problem.
In January 2008, some of the cgroup technology used by Google made its way into the Linux Kernel and the LXC (LinuX Containers) project was born. At around this same time, SWSoft became Parallels, and Virtuozzo was released into Open Source as the OpenVZ project. In 2011, Google and Parallels agreed to collaborate on their respective container technologies, resulting in the 2013 release of Linux Kernel 3.8, in which all the Linux container technologies (at least as far as the kernel goes) were unified, thus avoiding a repeat of the damaging Xen/KVM split within the kernel.
When looking at your enterprise today, everywhere you see a V for
virtualization could now be replaced in terms of C, as the resulting benefits of containerization emerges.