Skip to main content

AWS ECS Architecture Deep Dive

Amazon Elastic Container Service (ECS) là một hệ thống quản lý container hiệu năng cao, có khả năng mở rộng cao. Để làm chủ ECS, bạn cần hiểu các thành phần cốt lõi của nó.

1. Các thành phần cốt lõi (Core Components)

1.1. Cluster

Cluster là một ranh giới logic (logical boundary) để nhóm các tài nguyên lại với nhau.

  • Nó không nhất thiết phải chứa máy chủ (nếu dùng Fargate).
  • Nó là nơi bạn thiết lập các chính sách về quyền hạn (IAM) và giám sát (CloudWatch Container Insights).

1.2. Task Definition (Bản thiết kế)

Đây là "công thức" để chạy ứng dụng. Nó là một file JSON mô tả:

  • Image: Dùng Docker image nào (từ ECR hay Docker Hub)?
  • Resources: Cần bao nhiêu vCPU và RAM?
  • Networking: Dùng mode mạng nào (awsvpc, bridge, host)?
  • IAM Role: Task Role (quyền của app) và Task Execution Role (quyền để pull image, đẩy log).

1.3. Task (Instance của ứng dụng)

Task là một instance đang chạy của Task Definition.

  • Task = Pod trong Kubernetes.
  • Một Task có thể chứa 1 hoặc nhiều container (Sidecar pattern).

1.4. Service (Quản lý vòng đời)

Service đảm bảo rằng số lượng Task mong muốn (Desired Count) luôn được duy trì.

  • Nếu một Task bị chết, Service sẽ tạo Task mới thay thế.
  • Service tích hợp với Load Balancer để phân phối traffic vào các Task.

2. Launch Types: EC2 vs Fargate

2.1. EC2 Launch Type

  • Bạn quản lý: Bạn phải tạo Auto Scaling Group (ASG) các máy chủ EC2. Bạn phải patch OS, update Docker agent.
  • Ưu điểm:
    • Rẻ hơn nếu tận dụng tốt tài nguyên (Spot Instances).
    • Quyền kiểm soát sâu (chỉnh sửa kernel parameters, mount ổ cứng đặc biệt).
    • Image caching (khởi động nhanh hơn vì image đã có sẵn trên node).

2.2. AWS Fargate (Serverless)

  • AWS quản lý: Bạn không thấy máy chủ nào cả. Mỗi Task chạy trên một MicroVM riêng biệt.
  • Ưu điểm:
    • Bảo mật cao (Kernel isolation).
    • Không tốn công vận hành (NoOps).
  • Nhược điểm:
    • Đắt hơn EC2 một chút.
    • Không hỗ trợ một số tính năng nâng cao (GPU support hạn chế, không privileged mode).

3. ECS Agent

Trên mỗi EC2 instance tham gia vào ECS Cluster, có một tiến trình gọi là ECS Container Agent.

  • Agent này kết nối với ECS Control Plane.
  • Nó nhận lệnh "Start Task", "Stop Task" từ AWS và thực thi lệnh Docker tương ứng trên máy chủ.

4. Capacity Providers

Đây là khái niệm nâng cao giúp kết nối ECS với hạ tầng bên dưới (ASG hoặc Fargate).

  • Nó cho phép ECS tự động scale-out (thêm máy EC2) khi có Task đang chờ (Pending) vì thiếu tài nguyên.
  • Trước khi có Capacity Provider, việc scale EC2 và scale Task là hai việc rời rạc, rất khó đồng bộ.