Amazon ECS and Amazon EKS are the two managed container orchestration services from AWS. ECS stands for Elastic Container Service, while EKS used to be acronym for Elastic Container Service for Kubernetes. Their primary difference is the orchestration system behind the service: EKS runs on upstream Kubernetes, while ECS uses AWS in-house solution. Consequently, their tools also differ. If you want Kubernetes ecosystem and tooling, EKS is an excellent choice. If you are fine without Kubernetes and want a more seamless experience, then ECS may be the option for you.
With containerization, your code is portable and can run consistently even in different environments. Now that your app is containerized, the containers need to be deployed. Deploying and running one container is easy, but one container can scale quickly to hundreds or thousands.
That’s where container orchestration enters. The orchestration handles management tasks, which include scheduling, scaling, networking, and placing your containers into compute hosts. Orchestration helps you manage your containers at scale.
But whether you choose ECS or EKS, the service only give you the management (or control) plane. That is, you still need to provision the EC2 instances that will actually run your containers. So you are managing both containers and their compute resources. For example, with EKS, the service will provision and manage the master nodes (and their Etcd) for you, but you still need to take care of the worker nodes. Managing your own compute capacity gives you control over details such as instance types and pricing models.
However, you might not want to worry about managing a compute infrastructure. You might want to focus on building your app and container images. If that’s the case, AWS has a service for you: AWS Fargate. Whereas ECS or EKS manages the control plane, Fargate runs the data plane. Fargate will provision and manage the compute resources for you.
In summary, you face two questions when you want to run containers on AWS: how will you orchestrate the containers, how will you supply their compute. ECS and EKS are the orchestration services; EC2 and Fargate are the compute services.