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