Imagine carrying around a bag of cell phones everywhere because you needed to use a new and separate piece of hardware for every single app — games, email, etc. — that you currently run on a single smartphone today.
Seems crazy, but that’s essentially what our model for computing used to be, with standalone silos of hardware for separate applications. When an application wasn’t being used, the hardware and operating system dedicated to it was still sucking power and resources. It was highly inefficient. (In our bag of cellphones analogy, this would be like having one cellphone dedicated to games and still carrying it around with you everywhere all day — even though you only needed to do email during the day).
Then along came virtual machines (VMs), which allowed many applications to run on top of a single piece of hardware (by making it look like multiple physical computers). This led to anywhere from 3-10x more capacity utilization. Because the software could run independently of its underlying hardware, virtual machines in data centers meant we weren’t limited to one particular operating system; we could host both Linux and Windows on the same physical machine. The downside of that flexibility is that it introduced an entirely new layer of software (and an entirely new practice of systems management to care for it) that sat between the hardware and the operating system. Having what was essentially “an operating system on top of an operating system” caused some performance issues.
The holy grail here would have been virtualization, but with bare-metal performance … as if the operating system were running right on top of the CPU without the middle virtual layer.
That’s where containers come in. Containers are another way of isolating an application from the underlying hardware. They’re objects that serve the same purpose as a virtual machine — instantiations or clones of the host operating system with a self-standing, self-executing application inside — but they also provide bare-metal performance, because there’s no virtualization layer between.
Why now and what next?
Containers aren’t actually a new thing. They’ve been around for a long time, but are taking off for a few reasons. One reason is because Windows has become less prevalent in the datacenter; one of the downsides of containers compared to VMs is that they can’t run multiple operating systems, like Windows on top of Linux. Another reason is “microservices” app architecture driving enthusiasm for containers; these app architectures are especially suited to containers because they have discrete pieces of functionality that can scale independently, like LEGO building blocks.
System administrators and people deploying code find containerization convenient because every part of the application — including device drivers, operating systems, and other dependencies — is part of a single, self-contained entity. This also makes it very easy to host many containers and move them around, for redundancy/ failure tolerance, capacity, feature testing, and other reasons.
For me, the next step in containerization is treating the datacenter, with all its containers, like one giant computer or server. Many applications today are really just distributed systems: Applications aren’t necessarily confined to just one container. We might have an application that consists of ten containers running together. We could have 1,000 applications running across 10,000 containers. Or we might have a single big data job that involves multiple, interdependent applications.
So there needs to be a simple abstraction to run the operating environment and manage how all this stuff gets utilized for the right capacity, reliability, and performance (the key metrics by which a datacenter operates). And the key to that is comprehensive management of the entire operating environment. That’s what needs to happen.
— Peter Levine
The views expressed here are those of the individual AH Capital Management, L.L.C. (“a16z”) personnel quoted and are not the views of a16z or its affiliates. Certain information contained in here has been obtained from third-party sources, including from portfolio companies of funds managed by a16z. While taken from sources believed to be reliable, a16z has not independently verified such information and makes no representations about the enduring accuracy of the information or its appropriateness for a given situation.
This content is provided for informational purposes only, and should not be relied upon as legal, business, investment, or tax advice. You should consult your own advisers as to those matters. References to any securities or digital assets are for illustrative purposes only, and do not constitute an investment recommendation or offer to provide investment advisory services. Furthermore, this content is not directed at nor intended for use by any investors or prospective investors, and may not under any circumstances be relied upon when making a decision to invest in any fund managed by a16z. (An offering to invest in an a16z fund will be made only by the private placement memorandum, subscription agreement, and other relevant documentation of any such fund and should be read in their entirety.) Any investments or portfolio companies mentioned, referred to, or described are not representative of all investments in vehicles managed by a16z, and there can be no assurance that the investments will be profitable or that other investments made in the future will have similar characteristics or results. A list of investments made by funds managed by Andreessen Horowitz (excluding investments and certain publicly traded cryptocurrencies/ digital assets for which the issuer has not provided permission for a16z to disclose publicly) is available at https://a16z.com/investments/.
Charts and graphs provided within are for informational purposes solely and should not be relied upon when making any investment decision. Past performance is not indicative of future results. The content speaks only as of the date indicated. Any projections, estimates, forecasts, targets, prospects, and/or opinions expressed in these materials are subject to change without notice and may differ or be contrary to opinions expressed by others. Please see https://a16z.com/disclosures for additional important information.