Building robust distributed computing applications is difficult -- even for modern enterprise IT teams. Docker...
made it possible to standardize basic components for these distributed systems, which reduces configuration and management complexity.
IT teams deploy Docker containers, mostly to simplify the distribution of packaged enterprise apps. And container orchestration tools enable developers to take a platform as a service approach to deploying new enterprise apps on top of a collection of Docker containers.
Cloud-based container services enable developers to specify the behavior of a collection of containerized apps at higher levels of abstraction. A variety of container orchestration tools from cloud providers help achieve these tasks, including Amazon's EC2 Container Service (ECS), Google Compute Platform's Google Container Engine and Microsoft's Azure Container Service. And each service offers a range of pros and cons for enterprises.
ECS integration with AWS tools
Amazon ECS has matured since it was introduced nearly two years ago. ECS provides tight integration with other AWS tools for security, storage, logging and scaling. It spins new instances up or down in response to events and triggers from a variety of services, including CloudTrail metrics monitoring container and application performance. ECS also supports Service Auto Scaling, which filled an early gap in its functionality.
ECS is ideal when all cloud components run on AWS infrastructure. But it can be challenging to orchestrate ECS in response to events outside AWS, including applications running on private clouds or software as a service. ECS also tightly integrates with CloudFormation, allowing developers to generate templates to fine-tune container orchestration behavior.
AWS-specific enterprises are likely to deploy apps quickly with ECS. But vendor lock-in is a possibility, as they rely entirely on the native ECS tool set. It's still possible to use other orchestration engines to integrate across public and private clouds.
ECS does not include API integration with other engines such as Kubernetes and Mesos. However, they do provide integration with Docker Compose through the ECS command line interface (CLI), making it possible to weave together richer orchestration scenarios.
Google Container Service for hybrid deployments
The Google Container Service (GCS) -- essentially an implementation of the Kubernetes orchestration engine -- refines the Google internal infrastructure that powers highly scalable apps like Gmail, Google Search and Google Maps. This open source community supports GCS, making it No. 1 in terms of activity on GitHub. And Google cultivates a strong community around GCS through the launch of the Cloud Native Computing Foundation.
Kubernetes includes a variety of hooks to orchestrate cluster scaling based on metrics from Google Cloud Platform, private infrastructure and other clouds. It also tightly integrates with Stackdriver Logging for container monitoring to trigger cluster behavior.
Kubernetes enables developers to specify cluster configuration and behaviors, described as a set of Kubernetes objects. This approach simplifies the data model to describe a cluster and associated containers together in the same JSON code, rather than in separate files.
Currently, Google is the only cloud provider to charge extra for cloud container orchestration. It invokes a $0.15 per hour charge for container orchestration for more than six containers in a cluster, which totals a little over $100 per month. The cost could be an issue if an enterprise runs a lot of clusters with small microservices on separate containers. Orchestration is a small element in a much larger evaluation of total cost that includes machine instances, management and developer productivity.
Azure Container Service
Microsoft's Azure Container Service (ACS) is now generally available for orchestrating container workloads. Microsoft has invested significantly to reach feature parity with AWS and Google, but its initial offering only supported container orchestration tools on top of a variant of Apache Mesos called Data Center Operating System and Docker Swarm. But the company has a long history of supporting Kubernetes integration on top of Azure, and it unveiled Kubernetes support late last year as a first-class citizen.
Much like Google and AWS, ACS can also use Azure Monitoring to drive cloud orchestration. However, unlike other cloud container orchestration tools, developers can choose from several orchestration technologies to better integrate with other Azure cloud services. The other cloud providers support multiple container orchestration tools, but they can limit access to native services while increasing integration and development complexity.
Microsoft attempted to develop a common technology stack that spans its public and private cloud based on Azure Stack. This approach aims to streamline app development for hybrid applications that flow between both cloud infrastructures.
ACS follows this approach, working well with different orchestration technologies and across public and private cloud infrastructures. In contrast, ECS only works in the AWS cloud. GCS apps could span private cloud infrastructure for Kubernetes clusters, but they have weaker support for Docker Swarm and Mesos.
Enterprises with strong backgrounds in Microsoft development tools might pick ACS for container orchestration. Despite the growth of web and mobile apps, most desktops in modern enterprises still run Windows. Microsoft has invested considerable resources in making the developers for these Windows apps relevant to modern mobile, web and cloud back ends; Azure Container Service is one extension of this strategy.
Focus on the back end, not the features
Cloud providers are quickly reaching feature parity. Over the last year, all three major vendors have improved support for scalability, management, monitoring and development -- and advances likely will continue. Down the road, developers could benefit from better integration between container orchestration and serverless computing services.
IT teams also can look into emerging new container orchestration technologies. However, these are more challenging to integrate into development workflows than native container orchestration engines.
Use these tools for less painful container management
Brush up on AWS containers and EC2 Container Service
Providers of container services vary their approaches