The Doppler Quarterly Winter 2016 | Page 39

performance efficiencies. • Provide automation services that leverage policy-based optimization. There needs to be an automation layer that can locate the best platform to execute on, and auto-migrate to that platform. At the same time, it must automatically deal with needed configuration changes. How To Scale Container-Based Applications Most who look to make containers scale take one of two basic approaches. The first approach is to create a custom system to manage the containers. This means a one-off system that you build to automatically launch new container instances as needed to handle an increasing processing load. But remember that if you build it, you own it. As with many DIY approaches, the maintenance will become labor- and cost-intensive. The second approach is to leverage one of the container orchestration, sched- uling, and clustering technologies that will provide the basic mechanisms to enable scalability. This is normally the better of the two options. There are a few choices out there for the second approach: First, Google’s Kubernetes is an open-source container cluster manager, much like Docker Swarm (discussed below). Kubernetes can schedule any number of container replicas across a group of node instances. This container replication and distribution trick is typically enough to make most large container-based applications scale as needed. This is pretty much the same approach to scaling containers that the other tools take. Second, Cloudify provides a Docker orchestration tool that overlaps with Docker Compose and Docker Swarm. Its YAML-based blueprints let developers describe complex topologies, including the infrastructure, middleware tier, and app lay- ers. It’s more orchestration-oriented, and thus should be considered when look- ing at orchestration and automation tools when clustering isn’t needed. Finally, the newest tool, Docker Swarm provides clustering, scheduling, and integration capabilities. This tool enables developers to build and ship multi-container/multi-host distributed applications that include the neces- sary scaling and management for container-based systems. Obviously, Swarm is designed to compete with Kubernetes, which has a larger market share. Consider both tools when there’s a need to massively scale containers. I would suggest a proof of concept with each technology, using real-world workloads. Best practices continue to emerge around scaling containers, including: • Devote time to the architecture of your container-based applications. Most scaling issues are traced back to poor designs, not poor technology. • Always do a proof of concept to determine the real scaling capabilities of the solutions you’re considering. Use automated testing tools to simulate WINTER 2016 | THE DOPPLER | 37