In our recent 2017 Developer Predictions, we predicted that containers will become more popular than VMs.It seems like everywhere you turn today, someone is talking about containers. If you’ve been to a developer meetup recently, it seems like pretty much every topic on the agenda has something to do with containers or Docker, the company that brought Linux-based containers back into the limelight. And not without good reason. According to Docker’s own survey of technology professionals, almost two thirds of respondents listed Accelerating Software Development as the key objective for Docker and container adoption, and the same percentage indicated Development as the key use case. Moving off of the laptop and into production deployments however is proving to be more challenging, requiring multi-host container environments to be built supporting enterprise feature sets.
Source: Docker Survey
Containers then have been a hit with developers. While Linux container technology had been around for a while, Docker did a great job at making containers easy for developers to consume with the requisite APIs and tooling. They are extremely lightweight, booting typically in seconds, and they are portable for replay across environments, in a way which VMs before them never really were. In many ways, containers have provided developers with a means to perform the ultimate “integration test,” allowing them to test their code, and code from others, all packaged up in a set of lightweight containers running on their laptop. And since these containers are portable across modern infrastructure, other teams can pick them up and run with them without encountering the typical “but it worked in dev!” syndrome. For these reasons, we can fully expect that soon containers will surpass VMs in development and test scenarios.
Which means that containers have to move off of the laptop. As developers have become comfortable with developing and packaging their code in containers, they expect to be able to hand those off to other parts of the organization. Even with the move to automate the software delivery process with things like Continuous Integration and Deployment (CI/CD), there are still other stakeholders in an organization that need to consume, test, stage and deploy new versions of software, containers or no. This all adds up to the fact that enterprises need container-based environments for developers to hand off too. And these environments will be substantial—typically, the volume of development/test environments can be anywhere from 3 to 10 times as much as those used in production.
VM Deja Vu?
For those of you following so far, the trajectory being taken by Containers should sound familiar. After all, VMs started off primarily with developers and the ease of creating lab based environments for demos, training, testing, etc. in the early 2000s. VMs and virtualization went on a journey, spanning many years, developing in maturity on their way to predominant usage in enterprise production environments today.
Modern containers have been following this same path over the last few years, except the journey has been faster, much faster. What seemed to take years for VMs, now seems to take months. Enterprise features are being adopted rapidly across container platforms, covering things like security, networking, storage, monitoring, logging, management and others. A survey by Rightscale showed Docker to be the fastest growing tool in the DevOps community, proving that containers are no longer confined to the laptop, but are moving to DevOps and Operations teams on their journey to production.
Some of the reasons for the modern Container “fast path” are described previously—the easy consumption and appeal to developers, the lightweight nature and portability and so on. Another big reason is that modern containers were born in the “cloud era,” and the move to microservices and cloud native applications. As enterprises have struggled with so called “shadow IT,” developers have migrated to what is easy, and allows them to produce and deliver their applications more quickly. Containers have been another technology to this end.
Lessons from the Past?
Containers are at somewhat of a crossroads—as they move off of the developer laptop and into enterprise container environments, they look to container platforms to help orchestrate, schedule and manage containers. Open source platforms such as Kubernetes and Docker Swarm promise to help, as do standards from bodies such as the Open Container Initiative, Cloud Native Computing Foundation and others.
In the VM world, we went through a similar transition. We had Cloud Management Platforms (CMP) that would help us build Private Clouds. Private Clouds were difficult, if not exceedingly difficult to pull off. With an almost inordinate number of moving parts across software and hardware, private clouds required that all these piece parts be integrated and work in unison. It also required companies to maintain, patch and upgrade these components on an ongoing basis. These observations and others, led Gartner to famously claim that 95% of private clouds fail.
In the container world, Containers-as-a-Service (CaaS) offerings have emerged to offer developers and enterprises a quick and easy way to build out container based environments. Sitting somewhere in between Infrastructure (IaaS) and Platform (PaaS)—they offer developers the agility benefits of containers without the headache of building out and maintaining their own infrastructure. In short, it allows developers to focus on their container applications, and not on infrastructure plumbing.
History has taught us that developers vote with their feet, and for any container platform to be successful, it must begin and end with the developer experience, while meeting enterprise needs for governance and control. It must integrate with the developer workflow, hide complexity, and make it seamless for developers to deploy their container based applications. Any container platform or container cloud service must adhere to these principles to be successful. 2017 promises to be the year in which container platforms come of age.