← All notes

ECS vs Fargate vs ECR - EKS - Serverless

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...
  • 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