AWS Batch

AWS Batch
- Là dịch vụ xử lý batch được quản lý hoàn toàn (fully managed) với khả năng scale linh hoạt
- Có thể xử lý hàng trăm ngàn batch job trên AWS một cách hiệu quả
- Một batch job là job có điểm bắt đầu và kết thúc rõ ràng (khác với job chạy liên tục – e.g. daemon service)
- AWS Batch sẽ tự động khởi tạo EC2 instance hoặc Spot Instance
- Dịch vụ sẽ tự provision đúng lượng CPU/memory cần thiết
- Bạn chỉ cần submit hoặc schedule job, AWS Batch lo toàn bộ phần còn lại
- Các batch job được định nghĩa dưới dạng Docker image và chạy trên ECS
- Giúp tối ưu chi phí và giảm việc quản lý hạ tầng

- Trigger:
- Khi 1 ảnh được upload vào
S3, một S3 Event sẽ được kích hoạt (trigger) gọi Batch Job (thường qua Lambda, EventBridge → AWS Batch Job Queue).
- Khi 1 ảnh được upload vào
- Job execution:
- AWS Batch dựa vào Job Definition (Docker image + resource requirement)
- Provision EC2 instance hoặc Spot instance (tuỳ config) để chạy container ECS
- Image processing:
- Container thực thi logic xử lý ảnh: resize, convert định dạng, gắn watermark,...
- Logic này nằm trong image Docker bạn định nghĩa.
- Output:
- Sau khi xử lý xong, ảnh kết quả sẽ được ghi vào một S3 bucket output (có thể cùng bucket khác folder, hoặc khác bucket).
Tác dụng của ECS trong flow AWS Batch
- AWS Batch dùng ECS (Elastic Container Service) như một engine để chạy container.
- Khi bạn submit một batch job, job đó sẽ là Docker container image (khai báo trong Job Definition).
- ECS sẽ phụ trách việc:
- Pull Docker image
- Run container
- Theo dõi trạng thái job (RUNNING, SUCCEEDED, FAILED)
Tại sao cần EC2 trong AWS Batch?
- ECS cần một môi trường để chạy container → phải có compute backend, gọi là ECS compute environment.
- AWS Batch có 2 loại backend:
- EC2: AWS sẽ tạo ra instance thật (dùng On-Demand hoặc Spot Instance)
- Fargate (tùy chọn): serverless backend
- Với EC2 backend, khi bạn submit job, AWS Batch sẽ tự động tạo (provision) EC2 instance, sau đó ECS agent trên EC2 sẽ chạy container.
So sánh AWS Batch vs AWS Lambda
| Tiêu chí | Lambda | AWS Batch |
|---|---|---|
| ⏳ Thời gian chạy | Có giới hạn thời gian (max ~15 phút) | Không giới hạn thời gian (có thể chạy vài giờ/thậm chí lâu hơn) |
| 🔧 Runtime hỗ trợ | Bị giới hạn: chỉ hỗ trợ ngôn ngữ cụ thể (Node.js, Python, Java, etc.) | Hỗ trợ mọi runtime nếu đóng gói bằng Docker image |
| 💾 Disk tạm thời | Rất giới hạn (~512MB /tmp) | Dựa trên EBS hoặc ổ đĩa EC2 → dung lượng lớn hơn nhiều |
| ⚙️ Cơ sở hạ tầng | Serverless hoàn toàn – không EC2, không quản lý máy chủ | Dựa trên EC2 hoặc Spot instance (quản lý bởi AWS Batch) |
| 🔄 Khả năng xử lý tác vụ dài / nặng | Không phù hợp: dễ timeout, thiếu tài nguyên | Phù hợp: xử lý job batch nặng, lâu, cần tài nguyên lớn |
Bạn thấy bài này thế nào?