ECS vs Fargate vs ECR - EKS - Serverless
March 28, 2025
What is Docker?
- Docker is a software development platform to deploy apps
- Apps are packaged in containers that can be run on any OS
- Apps run the same, regardless of where they're run
- Any machine
- No compatibility issues
- Predictable behavior
- Less work
- Easier to maintain and deploy
- Works with any language, any OS, any technology
- Scale containers up and down very quickly (seconds)
Where Docker images are stored?
- Docker images are stored in Docker Repositories
- Public: Docker Hub
- Find base images for many technologies or OS:
- Ubuntu
- MySQL
- NodeJS, Java...
- Find base images for many technologies or OS:
- Private: Amazon ECR (Elastic Container Registry)
Docker vs Virtual Machines
- Docker is "Sort of" a virtualization technology, but not exactly
- Resources are shared with the host -> many containers on one server
ECS
- ECS = Elastic Container Service
- Launch Docker containers on AWS
- You must provision & maintain the infrastructure (the EC2 instances)
- AWS takes care of starting / stopping containers
- Has integrations with the Application Load Balancer
Fargate
- Launch Docker containers on AWS
- You do not provision the infrastructure (no EC2 instances to manage) - simpler!
- Serverless offering
- AWS just runs containers for you based on the CPU / RAM you need
ECR
- Elastic Container Registry
- Private Docker Registry on AWS
- This is where you store your docker images so they can be run by EC2 or Faregate
Amazon EKS
- EKS = Elastic Kubernetes Service
- Allow you to launch managed Kubernetes clusters on AWS
- Kubernetes is an open-source system for management, deployment, and scaling of containerized apps (Docker)
- Containers can be hosted on:
- EC2 instances
- Fargate (serverless)
- Kubernetes is cloud-agnostic ( can be used in any cloud - Azure, GCP... )
Serverless
- Serverless is a new paradigm in which the developers don't have to manage servers anymore...
- They just deploy code
- They just deploy.. functions!
- Initially... Serverless == Faas ( Function as a Service)
- Serverless was pioneered by AWS Lambda but now also includes anything that's managed: "databases, messaging, storage, etc."
- Serverless does not mean there are no servers... it means you just don't manage / provision / see them
- Ex.: Amazon S3, DynamoDB, Fargate, Lambda