AWS EKS is an OVERKILL - Try ECS
Tags: devops, kubernetes, aws, docker
Published: 2023-04-10 10:04:54



## Introduction

Elastic Kubernetes Service (EKS) and Elastic Container Service (ECS) are two container orchestration services provided by Amazon Web Services (AWS). EKS is a managed Kubernetes service, while ECS is a managed container service that supports Docker containers. Both services provide scalability, resilience, and ease of management, but there are some use cases where ECS might be a better option than EKS. In this essay, I will explain why EKS might be an overkill and why ECS might be a better option for some use cases.

## Understanding EKS

EKS is a fully managed Kubernetes service that makes it easy to deploy, manage, and scale containerized applications using Kubernetes on AWS. With EKS, you can use familiar Kubernetes tooling to deploy and manage your applications, while AWS manages the underlying infrastructure for you. EKS provides high availability, automatic scaling, and seamless integration with other AWS services.

EKS is a great option if you need to run large, complex applications that require the advanced features of Kubernetes, such as container networking, service discovery, and load balancing. EKS is also a good option if you need to deploy and manage multiple clusters across different regions or accounts, or if you need to integrate with other Kubernetes tools or services.

## Understanding ECS

ECS is a fully managed container service that makes it easy to run and scale Docker containers on AWS. ECS provides scalability, high availability, and ease of management, without the complexity of Kubernetes. ECS is a good option if you need to run simple or monolithic applications that can be containerized with Docker.

ECS allows you to run Docker containers on a cluster of EC2 instances, or using AWS Fargate, which is a serverless compute engine for containers. ECS provides built-in features for scaling, load balancing, and service discovery, as well as integration with other AWS services.

## Why EKS might be an overkill

1. **Complexity:** Kubernetes is a complex platform that requires a steep learning curve. Deploying, managing, and scaling Kubernetes clusters requires specialized knowledge and skills. If you don't have the expertise or resources to manage Kubernetes, EKS might not be the best option for you.

2. **Cost:** EKS can be more expensive than ECS, especially if you need to run multiple clusters or use advanced features like Kubernetes Network Policy or Istio. EKS charges per hour per cluster, plus additional charges for worker nodes, load balancing, and data transfer.

3. **Performance:** While Kubernetes is designed to be highly scalable and resilient, it can also be resource-intensive. Running Kubernetes clusters with large numbers of nodes or containers can put a strain on your infrastructure and lead to performance issues.

4. **Overkill for simple applications:** If you only need to run simple or monolithic applications that can be containerised with Docker, you might not need the advanced features of Kubernetes. In this case, ECS might be a better option, as it provides a simpler and more cost-effective way to run and manage Docker containers.

## Why ECS might be a better option

While EKS is a powerful and flexible Kubernetes service, ECS might be a better option for some use cases. Here are some reasons why:

1. Simplicity: ECS is a simpler service to set up and use than EKS. It is a fully managed service that allows you to easily run Docker containers without needing to manage the underlying infrastructure. This can be a significant advantage for projects that have limited resources or a small team.

2. Cost-effective: ECS is generally less expensive than EKS, as it does not require as many resources or specialized skills. Additionally, ECS offers a serverless compute engine called AWS Fargate, which can reduce costs even further by allowing you to run containers without having to manage any infrastructure.

3. Integration with other AWS services: ECS has seamless integration with other AWS services such as CloudWatch, CloudFormation, and Elastic Load Balancing. This can make it easier to build and manage your infrastructure and applications.

4. Suitable for simple projects: ECS is a great option for simple or monolithic applications that can be containerised with Docker. It offers all the essential features you need to deploy, run and scale Docker containers.

5. Easier to manage: ECS is generally easier to manage than EKS, as it requires less specialised knowledge and skills. Additionally, ECS offers a simplified user interface that makes it easier to monitor and manage your containers.

6. Greater control: While EKS is a more powerful and flexible Kubernetes service, it might be overkill for projects that do not require such advanced features. ECS offers greater control over your containers, making it easier to deploy and manage your applications without needing to worry about the complexity of Kubernetes.

To round up, ECS can be a great option for projects that require simplicity, cost-effectiveness, easy integration with other AWS services, and ease of management. It can also be suitable for simple applications that can be containerised with Docker. Avoid the urge to use the shiny K8S just because its an industry trend.