Compute
AWS Compute - So sánh ECS, Fargate, App Runner và các dịch vụ liên quan
So sánh ECS vs Fargate vs App Runner vs Lambda vs EC2, Decision Tree chọn dịch vụ
Ba layer khi chạy container
Để chạy một container trên AWS, bạn cần giải quyết 3 layer:
Mỗi dịch vụ giải quyết layer nào?
Các combo thực tế hay dùng
| Combo | Bạn lo gì | AWS lo gì |
|---|---|---|
| ECS + EC2 | Orchestration + servers | Không nhiều |
| ECS + Fargate | Chỉ orchestration (task definitions, services) | Servers |
| EKS + EC2 | Kubernetes workloads + servers | Kubernetes control plane |
| EKS + Fargate | Chỉ Kubernetes workloads | Servers + control plane |
| App Runner | Chỉ code hoặc image | Tất cả (LB, HTTPS, scaling, deploy) |
| Elastic Beanstalk | Upload code/Docker | LB, EC2 instances, ASG |
| Lambda | Chỉ function code | Tất cả + billing per ms |
Ví von thực tế
| Dịch vụ | Giống như... |
|---|---|
| EC2 | Mua đất, tự xây nhà, tự sửa chữa |
| ECS + EC2 | Thuê kiến trúc sư (ECS) nhưng vẫn tự mua đất (EC2) |
| ECS + Fargate | Thuê kiến trúc sư (ECS), đất thì thuê theo dự án (Fargate) |
| App Runner | Thuê căn hộ dịch vụ — dọn phòng, điện nước, bảo vệ có sẵn hết |
| Elastic Beanstalk | Thuê nhà có đồ nội thất — bạn chỉ mang đồ cá nhân vào |
| Lambda | Thuê phòng họp theo giờ — chỉ trả khi đang dùng |
Bảng so sánh chi tiết
| Tiêu chí | EC2 | ECS+Fargate | EKS+Fargate | App Runner | Lambda |
|---|---|---|---|---|---|
| Quản lý server | Bạn tự lo | AWS lo | AWS lo | AWS lo | AWS lo |
| Orchestration | Không có | ECS (AWS-native) | Kubernetes | Tự động | Không cần |
| Load Balancer | Tự setup ALB | Tự setup ALB | Tự setup ALB | Có sẵn ✅ | Có sẵn ✅ |
| HTTPS / TLS | Tự setup ACM | Tự setup ACM | Tự setup ACM | Tự động ✅ | Tự động ✅ |
| CI/CD | Tự setup | Tự setup | Tự setup | GitHub → auto deploy ✅ | Tự setup |
| Auto Scaling | Phải cấu hình ASG | Phải cấu hình | Phải cấu hình | Tự động ✅ | Tự động ✅ |
| GPU support | ✅ | ✅ | ✅ | ❌ | ❌ |
| Max runtime | Không giới hạn | Không giới hạn | Không giới hạn | Không giới hạn | 15 phút |
| Cold start | Không | ~1-2 phút | ~1-2 phút | Vài giây | ms-giây |
| Pricing | EC2 theo giờ | vCPU+mem khi chạy | vCPU+mem khi chạy | vCPU+mem (active) + mem (idle) | Per request + ms |
| Độ phức tạp | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐ | ⭐⭐ |
| Kiểm soát | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐ |
Decision Tree - Chọn dịch vụ nào?
Tóm lại 1 câu
- ECS / EKS = bộ não điều phối (không có máy thật)
- EC2 / Fargate = cơ bắp thực thi (EC2: bạn quản, Fargate: AWS quản)
- App Runner = gói tất cả lại, bạn chỉ cần đưa code/image là xong
ECS + Fargate = bạn chỉ lo "chạy cái gì" (task definition, service config) App Runner = bạn chỉ lo "code là gì" (source code hoặc image)