AWS Batch란?
AWS Batch는 AWS에서 제공하는 배치 컴퓨팅을 위한 서비스입니다. Batch는 지정된 환경에 따라 EC2, Fargate 등 서비스들이 필요한 만큼 동적 프로비저닝 되어 배치 작업을 처리합니다. 배치 컴퓨팅을 위한 소프트웨어나 서버 클러스터를 설치할 필요가 없고, 무엇보다 추가적인 비용이 들어가지 않습니다. 들어가는 것은 동적으로 프로비저닝 되는 Fargate 등의 컴퓨팅 자원의 비용밖에 없습니다. 또한 AWS의 서비스인 만큼 AWS의 자원들과 통합되어 IAM Role을 통해 많은 서비스를 안전하게 이용할 수 있습니다.
🎉 배치 작업이란 처리해야 할 일을 일괄적으로 특정 조건이나 시간에 따라 처리하는 것을 말한다
컴퓨팅 환경 설정하기
동적 프로비저닝되어 배치 작업이 돌아갈 리소스의 환경설정을 해주기 위하여 AWS 콘솔에서 Batch -> Compute environments로 들어가 Create를 클릭하고 Instance configuration탭에서 Fargate를 선택해줍니다.
나머지는 디폴트값으로 세팅해줍니다.
Job queues 생성하기
왼쪽 AWS Batch 메뉴에서 Job queues로 들어가 작업 대기열을 생성해 줄 겁니다. 이 작업 대기열은 실행될 작업이 머무르는 곳입니다. 이름과 같이 FIFO구조의 큐인 것을 짐작할 수 있습니다.
Create 버튼을 눌러 Job queue를 생성해 줍니다. Connected compute environments 탭에서Click to select 부분을 눌러 위에서 생성한 Compute environments를 선택해줍니다.
Job definitions 생성하기
Job definitions로 넘어와 줍니다. 역시나 Create를 눌러 Job definitions를 생성해 줍니다.
Assign public IP를 체크해주시고 image 부분에 아래와 같이 amazonlinux의 이미지를 넣어주도록 하겠습니다.
public.ecr.aws/amazonlinux/amazonlinux:2018.03
Command에는 디폴트 값으로도 설정되어 있겠지만. echo 'hello world' 를 입력해 주시고 Job definitions을 생성해줍니다.
Jobs 생성하고 제출하기
Jobs탭에서 Submit new job을 클릭하여 job을 만들어 줍니다. job을 만들어 제출하게 되면 그때 비로소 배치 작업이 시작됩니다. 생성한 것 들을 넣어주시고 Command 부분에 역시 echo 'Hello world!'를 넣어주시고 Submit을 눌러 제출해주시면 위에서 정의했던 작업을 실행합니다. 결과물은 Cloudwatch Logs에서 보실 수 있습니다.
위에서 입력해 주었던 hello world가 찍힌 모습입니다. 이렇게 배치 작업이 완료되고 나면 언제 그랬냐는 듯 이에 쓰였던 Fargate와 같은 리소스는 사라집니다. 본 글에서는 hello world를 찍는 것에 불과하였지만 여기에 필요한 도커 이미지를 빌드하여 ECR에 업로드하여 필요한 배치 작업을 할 수 있습니다.