AWS Batch 기능

AWS Batch에서는 AWS Management Console, CLI 또는 SDK를 사용하여 간단하게 배치 작업용 코드를 패키징하고, 종속성을 지정하며, 배치 작업을 제출합니다. AWS Batch를 사용하면 실행 파라미터와 작업 종속성을 지정할 수 있고, 널리 사용되는 다양한 배치 컴퓨팅 워크플로 엔진 및 언어(예: Pegasus WMS, Luigi, Nextflow, Metaflow, Apache Airflow 및 AWS Step Functions)와 손쉽게 통합할 수 있습니다. AWS Batch는 Amazon ECS, Amazon EKS 및 AWS Fargate 컴퓨팅 리소스를 효율적이고 동적으로 프로비저닝하고 조정합니다. 또한 작업 요구 사항에 따라 스팟 인스턴스를 활용할 수 있는 옵션을 제공합니다. AWS Batch는 빠르게 시작할 수 있도록 기본 작업 대기열과 컴퓨팅 환경 정의를 제공합니다.

Amazon Elastic Kubernetes Service(EKS)의 AWS Batch

EKS에서 AWS Batch는 Kubernetes 노드의 크기 조정과 노드 내 포드 배치를 모두 관리합니다. 그 동안 Amazon EKS가 다른 워크로드와 서비스를 위해 제공하는 관리 및 오케스트레이션 기능은 그대로 유지됩니다. AWS Batch는 기존 EKS 클러스터에서 Kubernetes 포드로 작업을 안전하게 실행할 수 있습니다. 컨테이너에 필요한 vCPU, 메모리 및 GPU 요구 사항을 지정하고, EKS 클러스터를 사용하는 컴퓨팅 환경에 연결된 대기열에 이를 제출하기만 하면 됩니다. AWS Batch는 작업 대기열의 대기열 배치, 종속성 추적, 재시도, 우선 순위 및 포드 제출을 관리합니다. 또한 EC2를 사용하든 EC2 스팟 컴퓨팅 리소스를 사용하든 관계없이 EKS 환경의 컴퓨팅 리소스 프로비저닝을 관리합니다. Batch는 고유한 네임스페이스에서 EKS 클러스터와 통합되므로 AWS Batch 작업이 기존 프로세스에 방해가 되지 않습니다. Batch는 자동으로 용량을 관리합니다. 예를 들어 노드의 웜 풀을 유지 관리하거나, 특정량의 vCPU로 용량을 제한하거나, 다수의 클러스터에 걸쳐 노드를 조정하고 작업을 실행하거나, 단일 클러스터 내에서 모든 작업을 실행하는 등의 관리 작업을 수행합니다. Batch는 독립 포드를 작업의 코어 단위로 지원하지만 어레이를 통해 작업을 집계하여 예약할 수도 있습니다.

동적 컴퓨팅 리소스 프로비저닝 및 조정

Fargate 또는 Fargate Spot을 Batch와 함께 사용하는 경우, Batch에서 몇 가지 개념(CE, 작업 대기열, 작업 정의)만 설정하면 되며, 컴퓨팅 인프라의 단일 항목을 관리하지 않고도 완전한 대기열, 스케줄러 및 컴퓨팅 아키텍처를 갖추게 됩니다.

EC2 인스턴스를 원하는 고객을 위해, AWS Batch는 제출된 작업의 볼륨 및 리소스 요구 사항에 따라 컴퓨팅 리소스를 동적으로 프로비저닝하고 조정하는 관리형 컴퓨팅 환경을 제공합니다. EC2 인스턴스 유형, VPC 서브넷 구성, 모든 인스턴스에서 최소/최대/필요 vCPU, 스팟 인스턴스에 대해 기꺼이 지불할 금액(온디맨드 인스턴스 요금에 대한 백분율)과 같은 요구 사항으로 AWS Batch 관리형 컴퓨팅 환경을 구성할 수 있습니다.

또는 AWS Batch 관리형 컴퓨팅 환경에서 제공하는 구성과는 다른 EC2 인스턴스용 구성(예: 더 큰 EBS 볼륨 또는 다른 운영 체제)을 사용해야 하는 경우 AWS Batch 비관리형 컴퓨팅 환경 내에서 자체 컴퓨팅 리소스를 프로비저닝하고 관리할 수 있습니다. Amazon ECS 에이전트가 포함된 EC2 인스턴스를 프로비저닝하고 지원되는 버전의 Linux 및 Docker를 실행하면 됩니다. 그러면 프로비저닝한 EC2 인스턴스에서 AWS Batch가 배치 작업을 실행합니다.

Fargate를 지원하는 AWS Batch

Fargate 리소스를 지원하는 AWS Batch를 사용하면 배치 작업에 대한 완전한 서버리스 아키텍처를 구축하게 되는 것입니다. Fargate를 사용하면 모든 작업에서 요청한 만큼의 정확한 CPU 용량과 메모리를 받게 되므로 (허용된 Fargate SKU 내에서) 리소스 시간을 낭비하지 않고 EC2 인스턴스 시작을 기다릴 필요가 없습니다.

현재 Batch 사용자라면, Fargate는 EC2로부터 추가 분리 계층을 지원합니다. AMI를 관리하거나 패치할 필요가 없습니다. Fargate 호환 가능 작업을 Batch에 제출할 때, EC2에서 실행할 워크로드와 Fargate에서 실행할 워크로드가 있는 경우 두 가지 다른 서비스를 관리해야 한다는 걱정을 할 필요가 없습니다.

AWS는 우선순위, 재시도, 종속성, 제한 시간 등을 지정할 수 있는 기능 및 관리형 대기열을 갖춘 클라우드 네이티브 스케줄러를 제공합니다. Batch가 Fargate에 대한 제출과 작업의 수명 주기를 관리하므로 직접 이러한 관리를 수행할 필요가 없습니다.

Fargate는 보안 혜택을 제공하므로 부가적인 노력(예, SOX, PCI 준수)을 기울일 필요가 없으며 모든 작업에 대해 컴퓨팅 리소스를 격리합니다.

긴밀하게 결합된 HPC 워크로드 지원

AWS Batch는 여러 EC2 인스턴스에 걸쳐 있는 단일 작업을 실행할 수 있는 다중 노드 병렬 작업을 지원합니다. 이 기능을 통해 AWS Batch를 사용하여 긴밀하게 결합된 더 큰 규모의 High Performance Computing(HPC) 애플리케이션 또는 분산 GPU 모델 교육과 같은 워크로드를 쉽고 효율적으로 실행할 수 있습니다. 또한 AWS Batch는 AWS의 대규모에 따라 높은 수준의 노드 간 통신이 필요한 애플리케이션을 실행할 수 있게 해주는 네트워크 인터페이스인 Elastic Fabric Adapter도 지원합니다. 

세분화된 작업 정의 및 단순한 작업 종속성 모델링

AWS Batch를 사용하면 vCPU 및 메모리와 같은 리소스 요구 사항, AWS Identity and Access Management(IAM) 역할, 볼륨 탑재 지점, 컨테이너 속성 및 환경 변수를 지정하여 작업이 실행되는 방식을 정의할 수 있습니다. AWS Batch는 작업을 Amazon ECS에서 실행되는 컨테이너식 애플리케이션으로 실행합니다. Batch를 사용하면 서로 다른 작업 간에 종속성을 정의할 수 있습니다. 예를 들어 배치 작업이 서로 다른 리소스 요구 사항을 가진 서로 다른 3개의 처리 단계로 구성될 수 있습니다. 종속성을 사용하면 서로 다른 리소스 요구 사항을 가지며 이전 작업에 따라 다음 작업이 결정되는 3개의 작업을 생성할 수 있습니다.

우선순위 기반 작업 예약

AWS Batch를 사용하면 서로 다른 우선순위 수준으로 여러 개의 대기열을 설정할 수 있습니다. 배치 작업은 컴퓨팅 리소스가 작업을 실행할 수 있을 때까지 대기열에 저장됩니다. AWS Batch 스케줄러는 각 작업의 리소스 요구 사항을 기반으로 대기열에 제출된 작업을 언제 어디서 어떻게 실행할지 평가합니다. 스케줄러는 각 대기열의 우선순위를 평가하고, 해당 작업에 대기 중인 종속성이 없는 한, 최적의 컴퓨팅 리소스(예: 메모리 대 CPU 최적화)에서 우선순위에 따라 작업을 실행합니다.

GPU 일정 설정 지원

GPU 일정 설정을 사용하면 AWS Batch의 작업 정의 입력 변수로 작업에 필요한 액셀러레이터의 수와 유형을 지정할 수 있습니다. AWS Batch는 필요한 GPU 수를 토대로 작업에 적합하게 인스턴스의 크기를 확장하고, 적절한 컨테이너만 액셀러레이터에 액세스할 수 있도록 각 작업의 요구에 따라 액셀러레이터를 격리합니다.

AWS Batch는 Pegasus WMS, Luigi, Nextflow, Metaflow, Apache Airflow 및 AWS Step Functions와 같은 상용 및 오픈 소스 워크플로 엔진 및 언어와 통합될 수 있으므로 익숙한 워크플로 언어를 사용하여 배치 컴퓨팅 파이프라인을 모델링할 수 있습니다.

EC2 시작 템플릿과 통합

이제 AWS Batch에서 EC2 시작 템플릿을 지원하므로, 컴퓨팅 리소스에 맞게 사용자 지정된 템플릿을 구축할 수 있으며 Batch를 통해 해당 요구 사항에 맞춰 인스턴스 규모를 조정할 수 있습니다. EC2 시작 템플릿을 지정하여 스토리지 볼륨을 추가하거나 네트워크 인터페이스를 지정하거나 권한을 구성하는 등의 다양한 작업을 수행할 수 있습니다. EC2 시작 템플릿은 한 리소스 내의 시작 파라미터를 캡처함으로써 Batch 환경을 구성하는 데 필요한 단계 수를 줄입니다.

유연한 할당 전략

AWS Batch를 사용하면 고객이 컴퓨팅 리소스를 할당하는 세 가지 방법 중에서 선택할 수 있습니다. 이러한 전략을 사용하는 고객은 AWS Batch가 사용자를 대신해 인스턴스 규모를 조정하는 방법을 결정할 때 처리량뿐 아니라 요금을 고려할 수 있습니다.

최적 적합: AWS Batch가 비용이 가장 저렴한 인스턴스 유형을 최우선으로 고려하여 작업 요구에 가장 적합한 인스턴스 유형을 선택합니다. 선택한 인스턴스 유형의 추가 인스턴스를 사용할 수 없는 경우, AWS Batch는 추가 인스턴스를 사용할 수 있게 될 때까지 기다립니다. 사용 가능한 인스턴스가 충분하지 않거나 사용자가 Amazon EC2 서비스 사용량 한도까지 모두 사용한 경우에는 현재 실행 중인 작업이 완료될 때까지 추가 작업이 실행되지 않습니다. 이 할당 전략은 비용은 저렴하지만 인스턴스 규모를 조정하는 데 한계가 있을 수 있습니다.

최적 적합 진행형: AWS Batch가 vCPU당 비용이 더 저렴한 인스턴스 유형을 최우선으로 고려하여 대기열에 있는 작업의 요구 사항을 충족하는 데 충분한 만큼의 추가 인스턴스 유형을 선택합니다. 이전에 선택된 인스턴스 유형의 추가 인스턴스를 사용할 수 없는 경우에는 AWS Batch가 새로운 인스턴스 유형을 선택합니다.

스팟 용량 최적화: AWS Batch가 중단될 확률이 적은 인스턴스 유형을 최우선으로 고려하여 대기열에 있는 작업의 요구 사항을 충족하는 데 충분한 만큼의 인스턴스 유형을 하나 이상 선택합니다. 이 할당 전력은 스팟 인스턴스 컴퓨팅 리소스에만 사용할 수 있습니다.

통합된 모니터링 및 로깅

AWS Batch는 AWS Management Console에 배치 작업에 대한 주요 운영 지표를 표시합니다. 컴퓨팅 파워에 관한 지표와 실행 중, 지연 중 및 완료된 작업을 볼 수 있습니다. 작업에 대한 로그(예: STDERR, STDOUT)는 AWS Management Console에서 볼 수 있으며, Amazon CloudWatch Logs에도 작성됩니다.

세분화된 액세스 제어

AWS Batch는 IAM을 사용하여 작업이 액세스할 수 있는 AWS 리소스(예: Amazon DynamoDB)를 제어하고 모니터링합니다. 또한, IAM을 통해 조직 내 서로 다른 사용자에 대한 정책을 정의할 수 있습니다. 예를 들어 관리자에게는 모든 AWS Batch API 작업에 대한 전체 액세스 권한을 부여하고, 개발자에게는 컴퓨팅 환경 구성과 작업 등록과 관련된 제한된 권한을 부여하며, 최종 사용자는 작업을 제출하고 삭제하는 데 필요한 권한만 갖도록 제한할 수 있습니다.

AWS Batch 요금에 대해 자세히 알아보십시오

요금 페이지로 이동하기
구축할 준비가 되셨습니까?
AWS Batch 시작하기
추가 질문이 있으십니까?
문의하기