Like many vendors across the cloud computing and hosting market, Amazon Web Services is evolving its platform in an attempt to convince customers that its cloud is the best place to run application containers.
At the company’s re:Invent conference in Las Vegas earlier this month the company rolled out a series of incremental advancements to its container management platform, and showcased customers who are using the company’s cloud to run applications in Docker containers. And it seems that Amazon’s biggest argument for running containers in its cloud is that by doing so customers get all the benefits of using the cloud in general.
Deepak Singh - the man heading up AWS’s container strategy - says AWS has grown to become the kingpin of the public cloud market because it provides elastic, on-demand virtual machines and storage; it allows organizations to be agile in how they use infrastructure.
Containers, he says, bring the same agility to the application layer. “The reason we hear customers using containers is the ease of writing custom applications,” he explains. What customers don’t want though, he says, is to have to manage the underlying infrastructure needed to run those containers. And that’s what AWS provides with its EC2 Container Service (ECS), he contends.
But using AWS’s ECS means that any applications running on ECS will be hosted in AWS’s cloud. For some customers that’s fine, says Scott Johnston, vice president of product at Docker – one of the primary companies behind application containers. Other customers may not want to go all in on AWS’s cloud though. For these customers AWS allows other third-party container management tools, like those from Docker, to run atop AWS’s cloud. In this approach, customers can run the same container management platform in AWS’s cloud as they run on their own infrastructure. AWS’s ECS platform, Johnson says, is primarily for customers who are willing to commit to being all in on AWS.
Singh, the AWS’s container chief, says one of the leading benefits of using ECS is that customers have access to all of the other features AWS offers. Customers can integrate their applications running in ECS with AWS’s databases, load balancers, auto-scaling tools, and many other services.
AWS’s container platform is a cloud-based service that manages clusters of containers, allowing users to launch, stop and control containers with API calls. It works via an agent, which sits on any of AWS’s virtual machines (named Elastic Compute Cloud or EC2 instances) in Amazon’s cloud. When the agent is installed on the EC2 instance, it will manage spinning up the containers, monitoring them and right-sizing them, among other functions.
Amazon has built a specific Linux OS for the containers, named the ECS-Optimized Linux Amazon Machine Image (AMI). But customers could also choose to use a variety of other container-optimized OSs from various ISVs, such as CoreOS’s, which Singh said is a popular choice for customers. There’s no additional cost for ECS – customers just pay for their EC2 instances ECS runs on.
At re:Invent, AWS announced new features such as being able to host registries of Docker containers – which are groups of containers that are bundled together to make up an application. AWS also made its container platform fault-tolerant by expanding support for running ECS across multiple availability zones. And it added support for developers to control ECS through a command line interface.
Amazon isn’t the only company with a container management platform though. Google and Microsoft, perhaps AWS’s biggest competitors, each have platforms for running containers in their clouds. Microsoft supports both Docker containers and Windows-specific containers it has developed.
451 Group analyst Donnie Berkholz says the cloud has turned into an attractive place to run containers. “Container services are one example of a higher-level service, where it's trivial to run a single container but very complex to run containers at scale in production,” he says. Cloud providers ease that, but at the cost of potential lock-in. As the market matures, Berkholz expects to see more advanced on-premises container management platforms, like those from Red Hat, Docker and other startups, such as Rancher Labs, Weave and many others.
Remind me why we should use this
At re:Invent AWS showcased customers who are already all-in on using containers in AWS, such as Remind. The startup has developed a platform to help teachers stay in touch with students and parents in an effort to lower the drop-out rate in schools. Thirty million users are on the platform – which is hosted in AWS – and half of schools in the country have at least one teacher using it, the company says.
Remind gets very busy in back to school season. This school year the company saw 400,000 new users signing up each day in stretches of August; it went from handling 50 million messages per month last year to 200 million messages this year.
Jason Fischl is the company’s vice president of engineering who has chosen to use application containers and AWS’s cloud in a big way. “We wanted to use Docker containers because they allow us to make deployments easier and get good resource utilization,” Fischl said on stage at the AWS re:Invent keynote. Remind uses 36 instances of ECS to manage about 245 application containers that make up the company's app.
Perhaps the biggest reason ECS was a natural fit for Remind is that the company was already a big user of Amazon’s cloud. Remind uses elastic load balancers and auto-scaling functions to distribute traffic when handling spikes in user activity; ECS integrates directly with those services. It spins up new virtual machines when they’re needed and spins them down when they’re not. By using containers, developers can package and launch their own applications while they’re coding them, without waiting for an operations team to provision the necessary infrastructure. By using Amazon’s ECS, Remind didn’t have to build a platform for managing clusters of containers, it got to use the one Amazon supplies.