Containers

Amazon ECS vs Amazon EKS: making sense of AWS container services

One of the most common requests we hear from customers is, “help me decide which container service to use.” We recommend that most teams begin by selecting a container solution with the attributes most aligned to their application requirements or operational preferences. This post covers some of the critical decisions involved in choosing between AWS container services.

Running containers at scale

As teams scale-out their containerized applications, they eventually need more hosts or container compute nodes to run the additional containers. One container host can quickly become 100, with different instance sizes and capabilities, and each potentially running a large number of individual containers.

With increasing numbers of container compute nodes, teams require tools that offer better resource allocation and resiliency. They need solutions to turn standalone nodes into clusters to manage their containers. They seek a more robust container solution that provides full management of their container workloads in those clusters. At scale, the undifferentiated heavy lifting of operating the container orchestration platform, clusters, and compute nodes can quickly consume even the most proficient teams.

Building a team with the capabilities required to deliver a highly available, secure, and up-to-date container platform to your internal users is challenging. We saw a similar pattern emerge in the previous decade, as companies adopted virtual machines (VM) and dealt with the management challenges of VM sprawl. Like with that last transformational shift in computing, lack of effective container operations and tooling is a significant barrier to adoption.

Customers asked if AWS could make it easier for them to adopt containers at scale successfully. In 2015, we released Amazon ECS, our first managed container orchestration service – and we didn’t stop there. AWS continues to invest heavily in making container adoption easier for our customers by consistently adding new features and capabilities. We offer a wide range of fully managed container services. AWS handles operations, availability, patching, scalability, and security of the underlying infrastructure. These services reduce the time you spend on resource management, maintenance, and capacity planning, letting you focus on increasing your efficiency and speed of delivery.

Which container service to use?

AWS customers have a choice of fully managed container services, including Amazon Elastic Container Service (Amazon ECS) and Amazon Elastic Kubernetes Service (Amazon EKS). Both services support a broad array of compute options, have deep integration with other AWS services, and provide the global scale and reliability you’ve come to expect from AWS. So how are they different?

Simplicity vs flexibility

What customers tell us they love most about Amazon ECS is the simplicity it provides. Amazon ECS delivers an AWS-opinionated solution for running containers at scale. It reduces the time it takes customers to build, deploy, or migrate their containerized applications successfully. Designed for simplicity from the start, using Amazon ECS decreases the number of decisions customers must make around compute, network, and security configurations, without sacrificing scale or features. For example, if you need a load balancer, AWS Application Load Balancer (ALB) or Network Load Balancer (NLB) integrate seamlessly with Amazon ECS, so you don’t need to build or maintain generalized abstractions.

Amazon ECS powers a growing number of popular AWS services including Amazon SageMaker, Amazon Polly, Amazon Lex, and AWS Batch, and is trusted by hundreds of thousands of customers including Samsung, GE, Expedia, and Duolingo. Customers adopting containers at scale seeking powerful simplicity should start with Amazon ECS.

Teams choose Kubernetes for its vibrant ecosystem and community, consistent open source APIs, and broad flexibility. They rely on Amazon EKS to handle the undifferentiated heavy lifting of building and operating Kubernetes at scale.

Amazon EKS provides the flexibility of Kubernetes with the security and resiliency of being an AWS managed service that is optimized for customers building highly available services. Amazon EKS provides a secure, reliable, scalable, and resilient Kubernetes environment for customers such as Intel, Snap, Intuit, GoDaddy, and Fidelity, and helps Amazon.com deliver an incredible customer experience. Customers adopting Kubernetes that want the resiliency of AWS should start with Amazon EKS.

Where should I run my containers?

Amazon ECS and Amazon EKS manage how your containers run, but you still need a compute layer. AWS gives you a range of integrated compute options for where that happens. You can choose the right tool for the job to get the right blend of cost, performance, and features.

On both Amazon EKS and Amazon ECS, you have the option of running your containers on the following compute options:

  • AWS Fargate — a “serverless” container compute engine where you only pay for the resources required to run your containers. Suited for customers who do not want to worry about managing servers, handling capacity planning, or figuring out how to isolate container workloads for security.
  • EC2 instances — offers widest choice of instance types including processor, storage, and networking. Ideal for customers who want to manage or customize the underlying compute environment and host operating system.
  • AWS Outposts — run your containers using AWS infrastructure on premises for a consistent hybrid experience. Suited for customers who require local data processing, data residency, and hybrid use cases.
  • AWS Local Zones — an extension of an AWS Region. Suited for customers who need the ability to place resources in multiple locations closer to end users.
  • AWS Wavelength — ultra-low-latency mobile edge computing. Suited for 5G applications, interactive and immersive experiences, and connected vehicles.

Conclusion

Choosing a container service at AWS does not need to be a binary decision. Amazon ECS and Amazon EKS work together seamlessly with shared operations, integrated security tooling, common IAM, and consistent management tooling for compute and network options. Take advantage of the simplicity of cohesive AWS services in Amazon ECS, or roll your own using the flexibility of Kubernetes on Amazon EKS.

Let the requirements of a specific application, or the preferences of an individual team, guide your choice. You don’t need to make an all-in decision – the portability of containers ensures that whatever you decide, it isn’t a one-way door.

If you want powerful simplicity, open flexibility, or both, AWS can help. Learn more about containers at AWS.

Deepak Singh

Deepak Singh

Deepak has been with Amazon Web Services since 2008, and currently leads container services. Prior to starting the container service team, Deepak led product management for the Amazon EC2 instance platform.