Containers and allied mechanisms for application lifecycle management and orchestration are gaining a huge amount of attention in the tech community. A few recent surveys show that developers are the early adopters of this technology with operational use set to gain further traction in the next twelve months.
Our team first found benefits with containers back in 2013 when we used it to simplify our CI/CD pipelines. Container patterns such as the “build container” and the “test container” helped abstract our integration tests from the underlying environment. In addition the use of docker images as “immutable infrastructure” really helped with promoting applications through different runtime environments as well as with failure recovery and DR scenarios. One of our customers put it at the time “you can deliver faster and more reliably than any of the other teams here…how do you do that?” Containers were a key ingredient.
Fast-forward five years and containers plus Kubernetes have emerged as the de-facto standard for container-based platforms. All the major cloud vendors offer containers as a service, Kubernetes as a service or a combination of the two. In addition, many organisations are running containers and Kubernetes on-premise either directly or with frameworks such as Red Hat OpenShift. We are rapidly moving toward a time where it is possible to build images once and run them anywhere - on any cloud and on-premise. My feeling is that Kubernetes is becoming the new “app server” for the 21st century and the next real manifestation of cloud computing after IaaS - Platform as a Service (PaaS). A recent InfoQ discussion on DevOps trends echoes my hypothesis that Kubernetes will be the foundation for hybrid cloud and that raw cloud brokerage will “become an anti-pattern.”
But perhaps I’m rushing to a conclusion. Containers have been widely embraced by developers but the indicators are that they are not yet mainstream in production operations environments. A recent survey by DigitalOcean found that 49% of their surveyed developers use containers but another survey (PDF link) by Diamanti found that only 12% of organisations currently use containers in production.
This echoes the early experience of our team - developers are finding productivity gains with containers in development and CI/CD environments but the benefits are still filtering through to the operations side of the organization. However, there seems to be momentum in the right direction. The same Diamanti survey finds that 47% of respondents plan to deploy containers in production in 2018. By this time next year we may find the majority of organisations have some containers in production. The business case revolves around reduced license costs for hypervisors (dominated by VMWare), increased performance and increased application density.
The adoption and maturity of container technologies has been breathtaking in just the last 5 years. Accompanied by interest in DevOps and microservices we are seeing a broad change in the way that organisations build, deliver and manage applications. I think this change has a lot of momentum and a long way to go. To quote the Diamanti report:
“As use of containers becomes more widespread, their impact will be profound. Everything will change dramatically, from how applications are deployed as microservices to the underlying infrastructure that runs those applications in the cloud and on-premises”
There’s still an interesting journey ahead with maturing technologies and the need for education and cultural change plus the inevitable struggles with legacy systems, architectures and ways of working. But I think the maritime allusions will continue to propagate and in the end maybe we’ll all become “wharfies”.
And we are certainly still in the early days of this technology. Technical challenges remain around persistence and cross-cutting concerns such as security. The InfoQ discussion I mentioned earlier notes that since Kubernetes has “won the battle,” Service Mesh technology will become the new focal point for developers.