Published on

What is Amazon ECS? Basics of AWS

Authors
  • avatar
    Name
    Cristian Encalada
    Twitter
Linux - Desktop environments vs Windows managers

Amazon Elastic Container Service (Amazon ECS) is a powerful and flexible container orchestration service offered by AWS. It simplifies the process of deploying, managing, and scaling containerized applications using Docker containers.

Table of contents

What is ECS

What is ECS?

What are the main purposes of orchestrators?

  • Manage lifecycle of containers: create/restart/destroy
  • Deploy and load-balance application across multiple servers
  • Autoscaling to handle variance in traffic
  • Rolling out changes to applicaation

ECS competitors

Docker Compose Deployment

The scale up with docker compose is more difficult.

We can only deploy in a single server at a time. To deploy in different servers we could copy the docker-compose.yml file, but it's not fully an orchestrated system.

Docker compose deployment

Traditional Orchestrators vs Amazon ECS

Traditional Orchestrators such as Kubernetes, these all require a lot of effort to get up and running.

ECS was created as a simple alternative as an orchestrator that requires to use a Graphical User Interface (GUI) to configure almost the entire process for different services.

EC2 vs traditional orchestrators

EC2 vs Fargate

ECS: Only works with containers, when a container is deployed, it still has to run in a physical or a virtual machine, but ECS does not act as a server, ECS does not have any service or compute power.

ECS can only create and delete containers, but still needs the underlined infrastructure to be able to run those containers on.

ECS Cluster: Is a bunch of resources (underlined resources) that the containers are going to run on. Is the physical infrastructure.

ECS has two launch types:

  1. EC2 based launch type (EC2 = AWS Compute Service)
  2. Fargate Service
EC2 vs Fargate

EC2 Launch: We have to manage the underlying EC2 instances (infrastructure). We have to create the individual EC2 instances.

  • You still need to manage the underlying infrastructure (EC2)
  • ECS manages the containers
  • Full control over your infrastructure
EC2 Launch

ECS Fargate Launch: AWS manages the underlying infrastructure (serverless deployment)

  • Follows a serverless architecture
  • Fargate will create servers on demand
  • No need to provision/mantain EC2 servers
  • You only pay for what you use
Fargate Launch

EC2 Task

ECS Task Definition

  • Is a blueprint that describes how containers should launch (intructions)
  • How much CPU/MEM
  • Image/Ports/Volumes
EC2 Task definition

ECS Task

  • An instance of a Task Definition
  • A running container(s) with setting defined in the Task Definition
EC2 Task Instance

ECS Services

  • A service ensures that a certain number if Tasks are running at all times
  • Restarts containers that have exited/crashed
  • If a EC2 instance fails, the Service will restart the task on a working EC2 instance
ECS Services

Load Balancers

  • A Load Balancer can be assigned to route external traffic of your server.
  • Aditionally, after each deploy using AWS Fargate, a new IP address is generated, the Load Balancer can redirect all traffic comming to those dynamic IPs generated to a static URL configured.
Load Balancers

Thanks for reading!

References