Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

research on aws container deployments #66

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
82 changes: 82 additions & 0 deletions docs/aws-container-deployment/notes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
# AWS ECS vs EKS: Which One to Choose?

If you’re planning to run your containerized applications on AWS, you first have to choose what to use as an orchestrator: Amazon Elastic Kubernetes Service (AWS EKS) or Amazon Elastic Container Service (AWS ECS). Both EKS and ECS are powerful tools that allow developers to manage and deploy their containers.

However, there are some key differences between the two, making them suitable for different use cases.

In this article, we'll explore the difference between ECS and EKS, providing you with the necessary insights to make an educated decision about which service best suits your needs.

## What Is AWS EKS?

EKS, or Amazon Elastic Kubernetes Service, is a fully managed service that makes it easy to run Kubernetes on AWS. Kubernetes is an open-source container orchestration platform that automates the deployment, scaling, and management of containerized applications.

With EKS, you can easily deploy, manage, and scale your applications using Kubernetes without the need to install or operate your own Kubernetes control plane.

EKS provides all the benefits of Kubernetes, such as workload portability, scalability, and declarative APIs, while also managing the underlying infrastructure for you. It integrates seamlessly with other AWS services, allowing you to take advantage of features like Elastic Load Balancing, Auto Scaling, and Amazon Elastic File System.

### Advantages of AWS EKS:

- EKS automatically provisions and manages the underlying infrastructure needed to run Kubernetes, so you don't have to worry about setting up and configuring servers, networking, or storage.
- Seamless integration with AWS services, such as Elastic Load Balancing for distributing traffic and Auto Scaling for automatically adjusting the number of instances running your application based on demand.
- EKS integrates with Amazon Elastic File System (EFS), providing shared file storage with high availability and durability.
- Option to use AWS Fargate for fully managed, just-in-time worker nodes provisioned for your cluster.
- Overall, EKS simplifies the process of running Kubernetes on AWS, providing scalability, flexibility, and reliability for both small-scale and large-scale production workloads.

## What Is AWS ECS?

ECS, or Amazon Elastic Container Service, is another popular container orchestration service provided by AWS. Unlike EKS, which uses Kubernetes as the underlying orchestration engine, ECS uses its own proprietary technology.

With ECS, you can easily run and manage application containers on AWS, without having to manage the underlying infrastructure.

ECS provides a fully managed and scalable environment for running containers. It integrates well with other AWS services, making it easy to build and deploy microservices architectures. ECS also provides features like service discovery, load balancing, and auto scaling, making it a comprehensive solution for running containerized applications.

### Pros and Cons of AWS ECS:

**Pros:**

- Simplicity: No need to set up and manage a Kubernetes cluster; ECS takes care of the infrastructure.
- Flexible Launch Types: Choose from EC2 or Fargate launch types, depending on your specific requirements.
- Seamless Integration: Easily integrates with other AWS services like Amazon RDS, Amazon S3, and Amazon CloudWatch.
- Built-in Features: Provides service discovery, load balancing, and auto scaling.

**Cons:**

- Limited Orchestration Capabilities: Compared to Kubernetes (used in EKS), ECS has fewer orchestration features.
- AWS Specific: Designed specifically for AWS environments, limiting multi-cloud or hybrid cloud flexibility.
- Less Community Support: Smaller community and fewer third-party integrations and tools compared to Kubernetes.
- Less Flexibility in Networking and Storage: Offers fewer options compared to EKS.
- Container Auto-Scaling Limitations: Less flexible than Kubernetes.
- Service Discovery and Load Balancing: Basic service discovery and load balancing capabilities, with fewer advanced options.
- Limited Customization for Advanced Use Cases: Less suited for more complex deployments.

## Amazon ECS vs EKS Comparison

| Feature | AWS EKS | AWS ECS |
|-------------------------|-------------------------------------------------------|---------------------------------------------------------|
| **Orchestration** | Kubernetes | Docker |
| **Ease of Use** | More complex due to Kubernetes' learning curve | Simpler for Docker users |
| **Flexibility** | Highly flexible, supports hybrid/multi-cloud setups | Primarily for AWS environments |
| **Scalability** | Highly scalable | Scalable but with some limitations |
| **Community Support** | Extensive, due to Kubernetes' popularity | Strong, but less extensive than Kubernetes |
| **Integration** | Broad integration with AWS and external tools | Deep integration with AWS services |
| **Configuration** | More complex | Simpler |
| **Portability** | High, supports multi-cloud and hybrid deployments | Limited to AWS |
| **Use Cases** | Ideal for complex microservices applications | Best for simple to moderately complex applications |
| **Pricing** | $0.10 per hour per cluster | Based on EC2 instances or Fargate tasks utilized |
| **Management Overhead** | Higher due to Kubernetes' complexity | Lower, more straightforward management |
| **Customization** | Highly customizable | Less customizable |
| **Service Integration** | Integrates with a wider range of AWS and third-party services | More limited in integration options compared to EKS |
| **Container Interface** | Kubernetes API | Docker API |
| **Networking** | More complex networking setup | Simpler networking setup |
| **Storage Options** | Wide range of storage options | More limited compared to EKS |

## Conclusion

Choosing between EKS and ECS depends on your specific use case and requirements.

- **Amazon EKS**: Ideal for those who prefer the familiarity and extensibility of Kubernetes, need multi-cloud compatibility, or require complex container orchestration features.
- **Amazon ECS**: Best for those looking for simplicity, deep integration with AWS, and less management overhead, and who are comfortable with a more AWS-centric solution.

Both EKS and ECS provide powerful solutions for managing and deploying containerized applications on AWS.

Also check out this awesome [Demo on ECS](https://www.youtube.com/playlist?list=PLqoUmUbJ_zDHPwK-ZWATXiYrUXwWkLY65) and [Demo on EKS](https://www.youtube.com/watch?v=p6xDCz00TxU)