AWS Batch는 대규모 배치 처리 작업을 간편하게 실행할 수 있도록 지원하는 완전 관리형 서비스입니다. AWS Batch는 사용자가 수천 개의 작업을 효율적이고 유연하게 실행할 수 있도록 자동으로 리소스를 프로비저닝하고 관리합니다.
제가 AWS Batch를 사용하게 된 계기는
4M개의 제품 데이터에 대해 추천을 만들어야 하는 프로젝트에서 시작되었습니다.
각 제품에 대한 추천을 생성하는 데 0.1초가 소요되었기 때문에,
모든 작업을 완료하는 데는 111시간 이상이 걸렸습니다.
매일 추천 데이터를 업데이트해야 했기에
병렬로 대규모 작업을 처리할 수 있으면서도
자원 관리가 효율적인 도구가 필수적이었습니다.
이러한 요구 사항을 충족시켜 줄 수 있는 AWS Batch를 선택하게 되었습니다.
본 포스트에서는 AWS Batch의 기본 개념 및 구성 요소인
AWS Batch는 다음과 같은 주요 개념을 포함하고 있습니다.
AWS Batch는 여러 구성 요소로 이루어져 있으며, 다음은 그 주요 구성 요소입니다.
이미지 출처: https://servian.dev/getting-started-with-aws-batch-3442446fc62
Job은 AWS Batch에서 실행되는 단일 작업 단위를 의미합니다. 각 Job은 사용자가 실행하고자 하는 특정 프로세스를 정의합니다. Job은 다음과 같은 속성을 가집니다.
Job Definition은 Job을 생성하기 위한 템플릿 역할을 합니다. 여기에서는 Job의 실행 환경, 리소스 요구 사항, 노드 선택 매개 변수 등을 정의합니다.
Job Definition을 통해 재사용 가능한 작업 정의를 생성하여 동일한 유형의 작업을 반복적으로 실행할 수 있습니다.
Compute Environment는 AWS Batch에서 Job을 실행하기 위한 EC2 인스턴스를 포함하는 가상의 환경입니다. Compute Environment는 크게 두 가지 유형으로 나뉩니다.
Managed Compute Environment는 더 많은 편리함과 유연성을 제공하지만, Unmanaged Compute Environment는 더욱 세밀한 리소스 관리가 가능합니다.
제가 AWS Batch를 사용했던 구체적인 사례를 공유하겠습니다.
위에서 언급한 것처럼,
저는 4M개의 제품 데이터에 대한
추천 시스템을 구축하는 프로젝트를 진행하고 있었습니다.
각 제품의 추천을 생성하는 데 0.1초가 걸리며,
이를 모두 처리하는 데는 111시간이 넘어가는 상황이었습니다.
매일 추천 데이터를 업데이트하기 위해
병렬로 작업을 처리할 수 있는 도구가 필요했습니다.
Job Definition 생성:
Compute Environment 설정:
Step Function:
AWS Batch를 통해 작업을 빠르고 효율적으로 수행했으며, 모든 Job이 신속하게 처리되었습니다. 리소스는 필요에 따라 자동으로 할당되었고, 결과적으로 프로젝트의 전반적인 리드 타임을 크게 단축할 수 있었습니다.
Daily 업데이트도 원활하게 진행되었으며,
Job 실패 또는 성공에 대한 모니터링이 가능하여 작업 관리도 수월했습니다.
항목 | 내용 |
---|---|
인원 | 2인 프로젝트 |
개발 기간 | 24.11 - 25.02 (4개월) |
개발 스펙 | AWS Batch, Step Function, Event Bridges |
언어 | Python |
AWS Batch는 대규모 배치 처리를 위한 강력하고 관리하기 쉬운 도구입니다.
Job, Job Definition, Compute Environment와 같은
구성 요소를 통해 배치 작업을 효과적으로 관리할 수 있습니다.
위의 사용 사례를 통해 AWS Batch의 실용성을 확실히 입증할 수 있었습니다.