EXPOSED: Amazon's cloudy Docker-friendly EC2 Container Service
We pry open the new AWS control freak to get to the guts
So what does it all get you?
Running containers on the AWS cloud is nothing new. Plenty of customers are already running Docker on their own EC2 instances and orchestrating their containers using such software as Google's Kubernetes.
ECS makes the whole process easier by allowing you to quickly spin up clusters of containerized applications using the AWS command line tools. This is good, but the end result is still a bunch of Docker containers running on AWS, which you could have set up yourself using various tools (and you can count on lots more tooling around Docker appearing in the coming months).
What's more, while containers have widely been touted as a superior replacement for virtualization, Amazon's solution runs containers inside of EC2 instances, and EC2 instances are virtual machines. Instead of swapping the old tech for the new, ECS just piles one on top of the other, which doesn't deliver the performance of bare-metal containers.
But Amazon is not so concerned about wringing maximum performance out of any one container – after all, if your application is parallelizable, you can always scale out by spinning up more instances.
Rather, Amazon wants to make it easier for customers to build, deploy, and manage applications composed of containerized "microservices," which is the next-generation architecture that promises to deliver the true value of containers. To that end, it has built ECS to include a set of APIs that customers can access programmatically, effectively making ECS itself a component of their applications.
As Amazon's Deepak Singh explained during an AWS re:Invent session on Thursday, "Amazon EC2 Container Service is a service that's designed to be a set of primitives to allow you to build applications, and to allow you to build services on top of it."
Some of this may be a bit pie-in-the-sky. The microservices app-dev model is still a way off for most shops, and for all the big cloud vendors' talk of customers running applications composed of thousands of container instances, most aren't doing that.
But let's face it; Amazon had to deliver something like ECS. Google – which has famously said that it runs everything inside containers internally – beat it to the punch by announcing Container Engine earlier this month. Don't be surprised if Microsoft rolls out something similar for Azure before too long, especially given its recent collaboration with Docker.
True to its fast-moving form, Amazon says it plans to roll out plenty of new features for ECS soon, too. Singh said support for Elastic Load Balancing has been one of the most frequent requests, and support for Amazon CloudWatch, AWS CloudFormation, AWS Management Console, and tagging containers with metadata are all coming.
The cloud kingpin says it will soon release an Amazon Machine Image (AMI) of a stripped-down version of Amazon Linux that's primed to run as an ECS host, and it will also work with Linux vendors to deliver AMIs of their distros with the ECS Agent preinstalled. Not surprisingly, perhaps, the only vendor Singh specifically mentioned by name at re:Invent was CoreOS.
But at the end of the day, by making it easy to create and orchestrate clusters of containers, ECS gives customers one more reason to run their workloads on EC2 – which is probably why Amazon isn't charging any money for ECS itself and customers pay only for the AWS resources they use. ECS is a feature, not a product, and now that it's here, you can expect Amazon to keep improving it over time.
It's a bold challenge to Google, Microsoft, and other cloud wannabes, and a demonstration of why Amazon is the leader of the pack and will likely remain so for considerable time to come. ®