With Docker leading the charge, containers have skyrocketed in popularity over the last year. Container technology provides componentized environments that help applications migrate between clouds without significant rework. And when it comes to building cloud and non-cloud applications, containers' battle cry is portability and simplicity.
As containers continue to gain traction in the enterprise, vendors will add new features that allow users to create scalable container-based environments -- and these features will largely focus on container orchestration.
Container orchestration tools offer scheduling and clustering technologies that provide the basic mechanisms for scalability of container-based applications. These tools use the container services and orchestrate them to determine how the containers interact. Moreover, orchestration allows containers to exist and execute in clusters, which enables them to scale to accommodate increased processing loads.
Choosing from two popular container orchestration tools
The first step for container orchestration is choosing the right tool, and most organizations pick one of two major options:
Docker Swarm: a container orchestration tool from Docker that provides clustering, scheduling and integration capabilities. It helps developers build and ship multi-container and multi-host distributed applications, while providing the scale and management that container-based systems need. Swarm is designed to compete with Google Kubernetes, which has a larger market share.
Google Kubernetes: an open source container cluster manager, much like Docker Swarm. Kubernetes can schedule any number of container replicas across a group of node instances. As a result, the tool's container replication and distribution model is typically enough to scale most large container-based applications. Other tools take a similar approach to scaling containers.
Consider both Swarm and Kubernetes to massively scale containers, and do a proof-of-concept with each, using true-to-life workloads.
Application architecture, testing also key
The second best practice for container orchestration is to spend time on your application architecture. Many organizations rush through container-based application development, especially since orchestration tools remove some of the underlying complexity. But it pays to think carefully about how to divide up the application within the containers that the orchestration tool will manage.
For instance, if the containers are too fine-grained, the container services will be overly distributed and complex. But if the containers are too coarse-grained, the containers themselves will be too complex. Based on their application requirements, organizations need to find a balance.
Finally, test and properly operationalize the container orchestrations. At the end of the day, you have to provide users with something that functions correctly and provides nearly 100% uptime. Perform component and regression tests, performance tests and penetration tests for security reasons.
Next, ensure the containers and container clusters give administrators access to the right management and monitoring capabilities. Drive toward zero downtime or continuous operations as the standard of productivity. This allows you to update containers without having to stop serving users.
Container orchestration is relatively new. Most best practices are already proven in other arenas, which may or may not meet your requirements -- but don't get caught up in the hype. Understand containers' true functionality and how you can best employ them within your enterprise.
David "Dave" S. Linthicum is senior vice president of Cloud Technology Partners and an internationally recognized cloud industry expert and thought leader. He is the author or co-author of 13 books on computing, including the best-selling Enterprise Application Integration. Linthicum keynotes at many leading technology conferences on cloud computing, SOA, enterprise application integration and enterprise architecture.
Is Docker right for all apps?
Exploring Docker and Kubernetes' open source containerization
Choosing the right container technology for your needs
Three apps that really benefit from Docker containers
Address scalability with Docker orchestration