Amazon provides multiple options for managing containers on their platform, including:
- Elastic Container Service (ECS),
- Elastic Kubernetes Service (EKS),
- AWS Fargate (a serverless computer engine for containers)
While they all aim to provide similar value when it comes to container management there are some fundamental differences that make the choice between them non-trial tasks.
When to choose which?
In short, the answer depends on whether you are a ‘Docker person’ or a ‘Kubernetes person’
- If you’re a Docker person ECS is the right choice
- If your a Kubernetes person EKS is the right choice
- Fargate is right for you if you’re indifferent and just want to get the job done.
The following table by Totalcloud provides a detailed comparison of the good, bad and the ugly between each option.
The cost angle
Cost is also a considerable factor and interestingly enough, ECS can be 30% less expensive than EKS!
The following post provides useful insights on the cost comparison between the options.
In general, if you run ECS and EKS clusters on EC2 instances, you’ll be paying for compute costs that depend on the instance type you pick and its running time.
Unlike ECS, EKS comes with additional charges. EKS will charge you $0.1 per hour per Kubernetes cluster. This amounts to c. $74 per month, which though may not seem like a lot but the costs can quickly add up depending on your setup.
According to the google trends’ comparison between EKS and ECS, we can see that although ECS started 2 years earlier than EKS, EKS was able to catch up with the ECS demand and both show a similar level of interest. EKS is still behind ECS but given that it also started 2 years later it seems that it gained a fairly fast adoption.
EKS vs ECS google trends
ECS vs EKS?
If you’re not planning to run on a multi cloud environment and you’re sensitive to cost, then ECS is recommended.
Fargate supports both EKS and ECS and would be the right choice for managing short lived processes.
If you’re planning to run in a Multi Cloud environment anytime in the future then EKS is clearly the right choice as it is based on Kubernetes, which is now supported by all major cloud providers. In this regard, the choice isn’t so much between container management options within AWS but rather between Kubernetes clusters across AWS EKS, AZURE AKS and GCP GKE.
With this being said, each cloud provider’s offerings still vary. Amazon‘s Elastic Kubernetes Service (EKS) for example, needs a distinct configuartion to Microsoft’s Azure Kubernetes Service (AKS) and Google Kubernetes Engine. Private clouds are built on platforms like Red Hat OpenShift, VMWare‘s Tanzu/VSphere, or Nutanix whereby installing and deployment capabilities are often very customized. This approach makes management challenging, especially since the scripts that are required to login and apply changes are themselves unique. Different approaches, including Infrastructure as Code, managing scripts in git or across a set of git repositories/branches and ensuring that the right configs are applied to the according runtime environment, still remain a challenging task.
This is where a multi Kubernetes orchestration such as Cloudify is able to abstract the integration with all major Kubernetes clusters and thus provides a consistent way to manage workloads across all of them.