Amazon Web Services and Google are aggressively developing their cloud containers services in a bid to capture...
enterprise app dev business.
The companies' cloud containers services abstract elements of Docker container management away from users, making it easier to deploy and scale applications built on them. However, there are key differences between their maturing offerings, including where each has chosen to implement autoscaling, redundancy and interoperability with third-party tools and clouds.
Autoscaling a key point of contention
Google Container Engine (GKE) consists of pods, replication controllers and nodes. Pods are a logical grouping of containers that model an application-specific logical host. Replication controllers ensure that a specific number of pod replicas are running at any one time. Nodes are the Google Compute Engine virtual machines that underpin the containerized environment.
GKE is based on Google's Kubernetes container orchestration platform. Kubernetes version 1.1, released Nov. 24, four months after 1.0 made its debut, was the first on the market to autoscale pods with horizontal pod autoscaling, a feature highly sought by users to justify many use cases for GKE.
"We use the autoscaling quite a bit for all types of projects," said Tim Kelton, co-founder and head of cloud architecture for Descartes Labs Inc., a machine learning startup based in Los Alamos, N.M., which processes petabytes of satellite data.
Autoscaling pods come in handy running a large batch job, Kelton explained. At times, his company processes a petabyte of data, which requires scaling up to 30,000 cores. In the first release of Kubernetes -- which was incorporated soon after by GKE -- "that wasn't part of the core feature set," he said.
GKE doesn't support vertical container scaling or node autoscaling, but these features are coming soon, according to David Aronchick, senior product manager for GKE, who also leads product management for Kubernetes.
Chris Moyervice president of technology with ACI Information Group
Amazon's EC2 Container Service (ECS), meanwhile, consists of services, tasks and instances. Services are groups of tasks that make up an application, while instances are the Elastic Compute Cloud VMs that underpin the containers -- much like nodes in GKE.
Amazon ECS' autoscaling capabilities are the inverse of how it works with GKE: Services can be autoscaled using Amazon CloudWatch and Amazon Web Services (AWS) Lambda, and instances can be autoscaled based on CloudWatch metrics as well, but tasks -- the rough logical equivalent of pods -- cannot be autoscaled.
While all the types of autoscaling are important, Amazon users want task autoscaling added to ECS.
"Spinning up an extra instance means you have extra capacity to run additional tasks, but it doesn't mean that any new tasks will be spun up," said Chris Moyer, vice president of technology with ACI Information Group, a Web content aggregator based in New York, and a TechTarget contributor. "If you're only autoscaling your instances, it's not really doing anything to help you handle extra load -- you have to actually spin up extra tasks to scale out."
Redundancy across zones
In the development of ECS, Amazon prioritized the ability to natively span availability zones (AZs) in the same cluster for redundancy over task autoscaling based on customer demand. When the ECS service scheduler launches new tasks, it also attempts to balance them across the AZs in a cluster automatically.
"That's important, because a single AZ is allowed to fail, so if both tasks were in the same AZ, that could easily take down your service," Moyer said.
Google can span multiple zones in GKE through the command-line interface (CLI), according to Google's Aronchick.
"It's really easy -- two or three commands," he said.
However, this touches on GKE customers' biggest wish list item: improvements to the Web UI, including scaling clusters across zones.
"The UI needs a ton of work," said Dale Hopkins, chief architect at Vendasta Technologies in Saskatoon, Sask., which builds sales and marketing software for media companies. The UI currently allows for cluster creation and little more, Hopkins said. "And it's non-intuitive how you scale the cluster."
ECS was built as an extensible platform, designed to be dropped into a customer's existing workflow, mainly to handle cluster state on users' behalf. Part of this integration into existing workflows accommodates tools that customers already use, such as Apache Mesos for advanced scheduling. Amazon also boasts an extensive network of Container Partners that contribute features, such as monitoring, continuous integration and security, to Amazon ECS.
Google, meanwhile, has built a coalition of cloud containers partners that allow Kubernetes to be deployed across multiple cloud providers -- also a CLI feature today, according to Aronchick. Google led the creation of the Cloud Native Computing Foundation when Kubernetes 1.0 was released last summer. Foundation members include enterprise cloud services companies, such as IBM and Red Hat, as well as end-users Box, eBay and Twitter.
"[With] Kubernetes, I can actually go deploy on Amazon, I could deploy on Azure, I could deploy on IBM, I could deploy on premises on my own physical hardware," Descartes' Kelton said. "That's very attractive, since we have options."
Google also has an open source project, with hundreds of committers and thousands of commits a month, allowing Kubernetes to quickly add new features, such as horizontal pod autoscaling.
"Google is the origin of Kubernetes, and Google's done a really good job enlarging that community," said Jay Lyman, analyst with 451 Research.
The rich get richer
Still, integration with established and familiar secondary Amazon services makes Amazon ECS particularly appealing for new customers.
One New York-based company that consults with large enterprises on IT projects plans to use ECS in two new projects, according to its founder, John D'Esposito. "The main advantages that drove us to use ECS [included] seamless integration with existing, proven infrastructure services, such as [Elastic Load Balancing, Virtual Private Cloud, Identity and Access Management, and Elastic Block Store]."
GKE and Compute Engine pricing also can be attractive to customers. In addition to charging in 10-minute increments for underlying VM resources, GKE includes the Kubernetes master for free -- something that particularly appeals to Vendasta's Hopkins.
"I don't pay a premium for Kubernetes until I get into huge numbers of machines -- GKE offers me the Kubernetes master for free for the first set of machines," he said.
Both Hopkins and Kelton already used Google cloud services, including Google App Engine, before Kubernetes and Container Engine were introduced. Thus, data gravity also plays a role in which cloud containers service they choose to deploy.
"Most of our data sets are in the petabyte scale, so you can't just move them or copy them, you have to actually move the compute next to the data," Kelton said. Most of that data currently lives in the Google Cloud Platform, though Descartes does work with partners in AWS.
Microsoft Azure Container Service waits in the wings
While Google and AWS are at the forefront of the cloud containers battle so far, Amazon's closest competitor remains Microsoft Azure, which has its own Linux-based cloud containers service in limited preview, as well as a new version of Windows Server due out this year that will support Windows-based containers.
"The majority of our clients ... are either in Azure or in Amazon," said Chris Riley, a founding partner at HKM Consulting LLC, in Rochester, Mass. "[Microsoft] has got some interesting tools that they're developing. If we were to look at a secondary one, it would probably be Azure before Google."
Chris Rileyfounding partner at HKM Consulting LLC
As with many Microsoft products, simplicity and ease of use are the design priorities, according to Kristian Nese, CTO of Lumagate, a Microsoft Azure systems integrator in Norway.
"When we're deploying the Azure Container Service today, it's 100 lines of code," Nese said. "Once you have deployed the Azure Container Service, you actually have 23 resources deployed ... if you would do this manually, it would most likely result in many thousands of lines of code."
The Azure Container Service also has autoscaling in the works in the form of a separate service also in preview, called VM Scale Sets.
Azure also will have the benefit of offering established and familiar tools to manage containers, such as Azure Resource Manager, Nese added.
An enterprise guide to Docker container technology
Three application types to consider moving to Docker
Exploring IT options for container orchestration