AWS Fargate
Serverless Containers, Task Sizing, Fargate Spot, ECS/EKS on Fargate
Tổng quan
AWS Fargate là một serverless compute engine dành cho containers — bạn không cần quản lý EC2 instances nào cả. Fargate có thể dùng với cả ECS và EKS.
Ví von: Gọi Grab (Fargate) vs tự lái xe (EC2). Bạn chỉ cần nói điểm đến, không cần biết xe là gì.
Fargate là gì so với EC2 Launch Type?
| EC2 Launch Type | Fargate Launch Type | |
|---|---|---|
| Bạn thấy servers? | ✅ SSH được | ❌ Không có server để SSH |
| Ai quản lý OS? | Bạn tự patch | AWS lo hết |
| Scaling | Phải scale cả EC2 lẫn tasks | Chỉ scale tasks |
| Pricing | Trả tiền EC2 24/7 | Trả theo vCPU + Memory × thời gian chạy |
| Khởi động | Nhanh hơn (EC2 sẵn) | Chậm hơn ~1-2 phút (cold start) |
| GPU support | ✅ Có | ❌ Không |
| Windows containers | ✅ Có | ✅ Có (Windows Server) |
Fargate hoạt động như thế nào?
Luồng chạy một task
Kiến trúc microVM (Firecracker)
AWS Fargate sử dụng Firecracker microVM — mỗi task chạy trong microVM riêng biệt, cô lập hoàn toàn với các customer khác.
Task Sizing - vCPU & Memory
Fargate không cho phép chọn tùy ý — phải chọn trong bảng combination hợp lệ:
Bảng CPU & Memory hợp lệ
| vCPU | Memory (GB) |
|---|---|
| 0.25 | 0.5, 1, 2 |
| 0.5 | 1, 2, 3, 4 |
| 1 | 2, 3, 4, 5, 6, 7, 8 |
| 2 | 4 → 16 (bước 1 GB) |
| 4 | 8 → 30 (bước 1 GB) |
| 8 | 16 → 60 (bước 4 GB) |
| 16 | 32 → 120 (bước 8 GB) |
Task-level vs Container-level sizing
Networking
awsvpc Mode (bắt buộc với Fargate)
Fargate bắt buộc dùng awsvpc network mode. Mỗi task nhận một ENI (Elastic Network Interface) riêng với IP address riêng trong VPC của bạn.
Public IP cho Fargate Tasks
VPC Endpoints (tiết kiệm chi phí)
Nếu Fargate cần kết nối S3, ECR, CloudWatch Logs → dùng VPC Endpoints để tránh NAT Gateway costs:
Security & IAM
Hai loại IAM Role trong Fargate
Nhớ: Task Execution Role = Fargate cần (setup/infra). Task Role = App cần (business logic).
Security Groups
Vì mỗi task có ENI riêng, bạn gán Security Group ở task level:
Secrets Management
Không bao giờ hardcode secrets vào container image. Dùng:
Storage
Ephemeral Storage (mặc định)
EFS (Elastic File System) - Persistent Storage
Để lưu trữ lâu dài với Fargate, dùng EFS:
Fargate Spot
Fargate Spot = phiên bản spot của Fargate → tiết kiệm ~70% so với On-Demand, nhưng có thể bị AWS reclaim bất kỳ lúc nào (có 2 phút notice).
Khi nào nên dùng Fargate Spot?
Cấu hình Capacity Provider Strategy
Pricing
Cách tính giá (US East - tham khảo, verify tại aws.amazon.com/fargate/pricing)
Ví dụ tính phí thực tế
So sánh với EC2
Compute Savings Plans cho Fargate
Tương tự EC2 Reserved Instances, Compute Savings Plans áp dụng cho Fargate:
| Plan | Tiết kiệm |
|---|---|
| On-Demand | 0% (baseline) |
| Fargate Spot | ~70% |
| Compute Savings Plans (1 năm) | ~20% |
| Compute Savings Plans (3 năm) | ~40% |
ECS on Fargate vs EKS on Fargate
Fargate có thể làm "compute engine" cho cả ECS lẫn EKS:
| ECS + Fargate | EKS + Fargate | |
|---|---|---|
| Orchestration | AWS-native (ECS) | Kubernetes |
| Learning curve | Thấp | Cao (cần biết K8s) |
| Portability | AWS only | Chạy được on-prem, GKE, AKS |
| Config unit | Task Definition | Pod Spec (YAML) |
| Ecosystem | AWS tools | CNCF ecosystem (Helm, Istio...) |
| Khi dùng | Greenfield AWS project | Đã có K8s, hybrid cloud |
EKS Fargate Profile
Với EKS, bạn cần tạo Fargate Profile để chỉ định pods nào chạy trên Fargate:
Lưu ý: EKS Fargate không hỗ trợ DaemonSets, NodePort Services, hoặc privileged containers.
Khi nào dùng Fargate?
Fargate là lựa chọn tốt khi:
Không nên dùng Fargate khi:
Decision Tree
Best Practices
1. Right-sizing Tasks
2. Sử dụng Private Subnets + VPC Endpoints
3. Image Optimization
4. Health Checks
5. Graceful Shutdown cho Fargate Spot
6. Logging
Câu hỏi thường gặp trong thi cử
Q1: Fargate bắt buộc dùng network mode nào?
A: awsvpc — đây là yêu cầu bắt buộc của Fargate. Mỗi task nhận ENI và private IP riêng.
Q2: Fargate Spot bị interrupt, có bao nhiêu thời gian để shutdown?
A: 2 phút — Fargate gửi SIGTERM, container có 2 phút để graceful shutdown trước khi bị SIGKILL.
Q3: Để Fargate task đọc secret từ Secrets Manager, cần role nào?
A: Task Execution Role (không phải Task Role). Task Execution Role là Fargate dùng trong quá trình setup task (pull image, inject secrets).
Q4: Fargate có hỗ trợ GPU không?
A: Không. GPU workloads phải dùng EC2 Launch Type.
Q5: Fargate có thể dùng với EKS không?
A: Có — thông qua EKS Fargate Profile, bạn chỉ định namespaces/labels nào sẽ chạy trên Fargate.
Q6: Một công ty muốn container app chạy serverless, không quản lý servers, chi phí thấp nhất. Chọn gì?
A: ECS + Fargate Spot (nếu workload fault-tolerant) hoặc ECS + Fargate On-Demand (nếu cần HA). Kết hợp cả hai qua Capacity Provider Strategy là tối ưu nhất.
Q7: Fargate default ephemeral storage là bao nhiêu?
A: 20 GB (có thể tăng lên 200 GB với phí thêm). Data mất khi task dừng.
Q8: Nhiều Fargate tasks cần share persistent storage. Dùng gì?
A: Amazon EFS — mount vào nhiều tasks đồng thời, data persistent, multi-AZ.
Tài liệu tham khảo: