This is an exciting time for IT infrastructure. We are witnessing a transition from a world of static partitioning of clusters for different workloads (such as stateless services, data analytics, and datastores) to a world characterized by microservices, containers, and dynamic partitioning.
At the same time, businesses are recognizing the competitive need to quickly deliver features to customers—often under the banner of agile software development. We are also seeing DevOps become a mainstream movement. This means operations is learning how to automate infrastructure (and, along the way, understand software engineering), while application developers increasingly find themselves running their code in production, being responsible for upgrades, monitoring, and troubleshooting.
Containerized architectures are increasingly an important part of this story.
The proliferation of container orchestration tools
Every week, a handful of new container-related projects are announced or open-sourced, and oftentimes it’s hard to tell what should be used, or even which one should be evaluated. With Docker establishing a quasi-standard for container packaging, we still have to consider issues relating to runtime—in particular, how to launch, upgrade, and monitor containers. Established container orchestration systems such as Marathon and Kubernetes as well as newcomers like Hashicorp’s Nomad provide these capabilities.
Based on the experience and best practices acquired by organizations such as Google and Twitter—who have been running containerized workloads for a long time now—these open source container orchestration tools have now gone mainstream. They promise to enable organizations to deploy and operate containerized workloads in a reliable and scalable way. Challenges There are a number of technical challenges to overcome when implementing containerized architectures:
- Using CI/CD pipelines to generate container images
- Security issues
- Networking issues
- Service discovery in its many variants (DNS-based, proxy-based, etc.)
However, in many organizations, the real challenge is a cultural one. Companies that have successfully adopted containerized workloads, regardless of industry or company size, tend to have a few things in common: institutional open-mindedness, a willingness to subscribe to short feedback cycles, and a shared responsibility for the outcome (say, a new app or service). Any new piece of technology, be it a container orchestration tool or a microservices platform, is first used in a very focused area, and in an end-to-end and all-in manner. Once the business value is proven and the organization has gathered some experiences, new use cases are on-boarded, step-by-step.
To learn more, listen to my conversation with O’Reilly editor Brian Anderson in which we discuss these topics, and more:
- The necessary components for delivering applications in a containerized world
- Tips for overcoming the technical—and cultural—challenges of adopting a modern infrastructure
- How to make the best use of lessons learned, and choose the right tool stack for you
To learn more about container orchestration (and how to make sense of Kubernetes, Mesos/Marathon, Docker Swarm, Nomad, and other technologies), check out Michael Hausenblas’ report, Docker Networking and Service Discovery, courtesy of NGINX.