AWS Learning
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:

┌──────────────────────────────────────────────────────────────┐
│  LAYER 3: PLATFORM                                           │
│  Load balancer, HTTPS, CI/CD, custom domain, scaling policy  │
├──────────────────────────────────────────────────────────────┤
│  LAYER 2: ORCHESTRATION                                      │
│  Điều phối container: chạy ở đâu, bao nhiêu cái,             │
│  restart khi chết, rolling deploy...                         │
├──────────────────────────────────────────────────────────────┤
│  LAYER 1: COMPUTE                                            │
│  Máy thật (CPU/RAM) để container thực sự chạy trên đó        │
└──────────────────────────────────────────────────────────────┘

Mỗi dịch vụ giải quyết layer nào?

┌─────────────────────────────────────────────────────────────────────┐
│  LAYER 3: PLATFORM                                                  │
│                                                                     │
│  ┌───────────────────────────┐   ┌──────────────────────────────┐   │
│  │      APP RUNNER           │   │   Elastic Beanstalk          │   │
│  │  Lo hết layer 3           │   │   Lo hết layer 3             │   │
│  │  + gọi ECS/Fargate bên    │   │   + dùng EC2 bên dưới        │   │
│  │  dưới tự động             │   │                              │   │
│  └───────────────────────────┘   └──────────────────────────────┘   │
│                                                                     │
│  ⚠️ ECS/EKS KHÔNG lo layer này — bạn phải tự setup ALB,             │
│     target group, listener rules                                    │
├─────────────────────────────────────────────────────────────────────┤
│  LAYER 2: ORCHESTRATION                                             │
│                                                                     │
│  ┌──────────────────┐   ┌──────────────────┐                        │
│  │      ECS         │   │      EKS         │                        │
│  │  AWS-native      │   │  Kubernetes      │                        │
│  │  Task/Service    │   │  Pod/Deployment  │                        │
│  └──────────────────┘   └──────────────────┘                        │
│                                                                     │
│  ⚠️ ECS/EKS chỉ là "não điều khiển" — KHÔNG có CPU/RAM thật         │
├─────────────────────────────────────────────────────────────────────┤
│  LAYER 1: COMPUTE                                                   │
│                                                                     │
│  ┌──────────────────┐   ┌──────────────────┐                        │
│  │      EC2         │   │     FARGATE      │                        │
│  │  Bạn quản lý     │   │  AWS quản lý     │                        │
│  │  servers         │   │  (serverless)    │                        │
│  └──────────────────┘   └──────────────────┘                        │
└─────────────────────────────────────────────────────────────────────┘

Các combo thực tế hay dùng

ComboBạn lo gìAWS lo gì
ECS + EC2Orchestration + serversKhông nhiều
ECS + FargateChỉ orchestration (task definitions, services)Servers
EKS + EC2Kubernetes workloads + serversKubernetes control plane
EKS + FargateChỉ Kubernetes workloadsServers + control plane
App RunnerChỉ code hoặc imageTất cả (LB, HTTPS, scaling, deploy)
Elastic BeanstalkUpload code/DockerLB, EC2 instances, ASG
LambdaChỉ function codeTất cả + billing per ms

Ví von thực tế

Dịch vụGiống như...
EC2Mua đất, tự xây nhà, tự sửa chữa
ECS + EC2Thuê kiến trúc sư (ECS) nhưng vẫn tự mua đất (EC2)
ECS + FargateThuê kiến trúc sư (ECS), đất thì thuê theo dự án (Fargate)
App RunnerThuê căn hộ dịch vụ — dọn phòng, điện nước, bảo vệ có sẵn hết
Elastic BeanstalkThuê nhà có đồ nội thất — bạn chỉ mang đồ cá nhân vào
LambdaThuê phòng họp theo giờ — chỉ trả khi đang dùng

Bảng so sánh chi tiết

Tiêu chíEC2ECS+FargateEKS+FargateApp RunnerLambda
Quản lý serverBạn tự loAWS loAWS loAWS loAWS lo
OrchestrationKhông cóECS (AWS-native)KubernetesTự độngKhông cần
Load BalancerTự setup ALBTự setup ALBTự setup ALBCó sẵn ✅Có sẵn ✅
HTTPS / TLSTự setup ACMTự setup ACMTự setup ACMTự động ✅Tự động ✅
CI/CDTự setupTự setupTự setupGitHub → auto deploy ✅Tự setup
Auto ScalingPhải cấu hình ASGPhải cấu hìnhPhải cấu hìnhTự động ✅Tự động ✅
GPU support
Max runtimeKhông giới hạnKhông giới hạnKhông giới hạnKhông giới hạn15 phút
Cold startKhông~1-2 phút~1-2 phútVài giâyms-giây
PricingEC2 theo giờvCPU+mem khi chạyvCPU+mem khi chạyvCPU+mem (active) + mem (idle)Per request + ms
Độ phức tạp⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
Kiểm soát⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐

Decision Tree - Chọn dịch vụ nào?

Cần chạy code / container trên AWS?


   Chạy theo event (HTTP request, SQS, schedule...)?
   Runtime < 15 phút?
   ├── Có → LAMBDA ✅
   └── Không ↓

   Cần tối giản nhất (web app / API đơn giản)?
   Không muốn config bất cứ thứ gì?
   ├── Có → APP RUNNER ✅
   └── Không ↓

   Đã quen Kubernetes hoặc cần chạy K8s workloads?
   ├── Có → EKS + Fargate ✅  (hoặc EKS + EC2 nếu cần GPU)
   └── Không ↓

   → ECS + Fargate ✅  (phổ biến nhất, cân bằng tốt)

   Ngoại lệ — chọn EC2 launch type khi:
     • Cần GPU
     • Workload 24/7 utilization cao → EC2 Reserved rẻ hơn
     • Cần SSH vào container host để debug

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)

On this page