AWS Batch

2 phút đọcSeries: NoteBook: AWS Certified Solutions Architect Associate SAA-C031 lượt xem

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
  1. Trigger:
    1. 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).
  2. Job execution:
    1. AWS Batch dựa vào Job Definition (Docker image + resource requirement)
    2. Provision EC2 instance hoặc Spot instance (tuỳ config) để chạy container ECS
  3. Image processing:
    1. Container thực thi logic xử lý ảnh: resize, convert định dạng, gắn watermark,...
    2. Logic này nằm trong image Docker bạn định nghĩa.
  4. Output:
    1. 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íLambdaAWS Batch
⏳ Thời gian chạyCó 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ờiRấ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ầngServerless 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ặngKhông phù hợp: dễ timeout, thiếu tài nguyênPhù 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?