Skip to content

AWS Batch là gì

AWS Batch là dịch vụ fully managed giúp bạn chạy các workload batch computing trên AWS. Batch Computing thường được sử dụng cho các tác vụ xử lý dữ liệu, phân tích khoa học, mô phỏng, dựng hình (rendering), và các công việc có tính chất chạy hàng loạt (batch jobs).

Với AWS Batch, bạn không cần lo lắng về việc cài đặt hay quản lý cụm máy chủ (cluster). Dịch vụ sẽ tự động provision tài nguyên tính toán (EC2, Spot Instances, Fargate) dựa trên nhu cầu và khối lượng công việc.

Cách hoạt động

  1. Submit Job
  • Bạn gửi một “job” vào AWS Batch (ví dụ: script xử lý dữ liệu, container image chạy Model).
  • Job có thể có dependencies (job A chỉ chạy sau khi job B hoàn tất).
  1. Job Queue
  • Tất cả jobs sẽ được đưa vào hàng đợi (queue).
  • Batch sẽ lập lịch dựa trên độ ưu tiên và tài nguyên sẵn có.
  1. Compute Environment
  • Batch sẽ chọn môi trường tính toán phù hợp:
    • EC2 On-Demand
    • EC2 Spot Instances (tối ưu chi phí)
    • AWS Fargate (serverless container, không cần quản lý EC2)
  1. Execution & Scaling
  • Batch tự động khởi tạo và scale tài nguyên theo nhu cầu.
  • Sau khi job kết thúc, tài nguyên có thể được giải phóng để tiết kiệm chi phí.

Kiến trúc và thành phần chính

  • Job: Một tác vụ cần xử lý (ví dụ chạy script Python, thực thi container).
  • Job Definition: Định nghĩa job (container image, vCPU, RAM, timeout, IAM role, v.v.).
  • Job Queue: Hàng đợi chứa các job chờ xử lý.
  • Compute Environment: Tập hợp tài nguyên mà Batch dùng để chạy job. Có thể là On-Demand, Spot, hoặc Fargate.

Tích hợp

  • Amazon ECS: AWS Batch sử dụng ECS để chạy containers.
  • Amazon ECR: Lưu trữ container images.
  • CloudWatch: Monitoring và log job.
  • IAM: Phân quyền cho jobs và compute environment.
  • S3, DynamoDB, RDS, Redshift: Lưu trữ dữ liệu đầu vào/đầu ra cho job.

Ưu điểm

  • Không cần quản lý cluster – Batch lo hết việc scaling và scheduling.
  • Tối ưu chi phí với Spot Instances hoặc Fargate.
  • Hỗ trợ workload phức tạp với job dependency, ưu tiên.
  • Linh hoạt – chạy được trên EC2 hoặc serverless với Fargate.
  • Tích hợp tốt với ecosystem AWS (ECR, CloudWatch, IAM, v.v.).

Hạn chế

  • Khởi tạo job có thể chậm hơn so với cluster “always-on” do cần provision tài nguyên.
  • Thích hợp hơn cho batch processing, không tối ưu cho workload real-time hoặc low latency.
  • Quản lý dependency phức tạp có thể đòi hỏi thêm công cụ điều phối (Step Functions, Airflow).

Khi nào nên dùng AWS Batch?

  • Chạy các batch jobs như ETL, phân tích dữ liệu lớn, xử lý ảnh/video, dựng hình 3D.
  • Khi workload có thể tận dụng Spot Instances để giảm chi phí.
  • Khi muốn loại bỏ việc quản lý HPC cluster truyền thống.
  • Khi cần tích hợp chặt chẽ với AWS ecosystem (S3, CloudWatch, DynamoDB…).