Amazon Web Services 한국 블로그
AWS Batch for Amazon EKS – Kubernetes 클러스터를 통한 배치 처리 작업 지원
오늘 AWS Batch for Amazon Elastic Kubernetes Service(Amazon EKS)를 출시합니다. AWS Batch for Amazon EKS는 배치 처리 워크플로에 사용할 Kubernetes 클러스터 및 포드를 구성, 미세 조정 및 관리하는 부담을 더 이상 감당하지 않으려는 고객에게 적합합니다. 또한 이 서비스에는 요금이 부과되지 않습니다. 배치 작업이 시작된 리소스에 대해서만 비용을 지불하면 됩니다.
이전에 Kubernetes는 마이크로서비스 워크로드의 관리와 호스팅에 초점을 맞춘 것처럼 보였습니다. 따라서 일부 고객이 컴퓨팅 집약적인 대규모 배치 워크로드를 실행하는 데에도 Kubernetes를 사용한다는 것은 매우 놀라웠습니다. 배치 워크로드와 마이크로서비스 워크로드의 차이로 인해 배치 처리에 Kubernetes를 사용하는 것은 어려울 수 있으며 적절한 솔루션을 미세 조정하려면 사용자 지정 구성 및 관리에 상당한 시간을 투자해야 합니다.
Kubernetes의 마이크로서비스 및 배치 워크로드
AWS Batch for Amazon EKS를 더 자세히 살펴보기 전에, Kubernetes에서 배치 워크로드를 실행하는 것이 어려운 이유를 더 잘 이해할 수 있도록 배치 워크로드와 마이크로서비스 워크로드 간의 몇 가지 주요한 차이점에 대해 이야기해 보겠습니다.
- 마이크로서비스 워크로드는 중단이 아니라 시작으로 간주되기 때문에 계속해서 사용할 수 있을 것으로 예상됩니다. 반면 배치 워크로드에 성공 또는 실패에 관계없이 실행되어 완료된 후 종료됩니다.
- 배치 워크로드의 결과는 몇 분, 때로는 몇 시간에서 심지어는 며칠 동안 사용할 수 없을 수도 있습니다. 마이크로서비스 워크로드는 밀리초 내에 요청에 응답할 수 있습니다.
- 일반적으로 고가용성을 보장하기 위해 여러 가용 영역에 마이크로서비스 워크로드를 배포합니다. 배치 워크로드는 이와 다릅니다. 분산 분석에서 다양한 입력 데이터를 처리할 수 있도록 배치 작업을 분산할 수도 있지만, 일반적으로 작업이 실행되는 가용 영역 내에서 작업에 필요한 리소스에 빠르고 최적으로 액세스하는 데 우선 순위를 두는 것이 좋습니다.
- 마이크로서비스와 배치 워크로드는 다른 방식으로 크기가 조정됩니다. 마이크로서비스의 경우 크기 조정은 일반적으로 예측 가능하며 일반적으로 부하가 증가(또는 감소)함에 따라 선형적으로 진행됩니다. 배치 워크로드의 경우 우선 초기 또는 자주 반복되지 않는 개념 증명 실행을 수행하여 성능을 분석하고 전체 프로덕션 실행에 필요한 올바른 튜닝을 찾습니다. 둘 사이의 크기 차이는 기하급수적일 수 있습니다. 또한 배치 워크로드의 경우 한 번의 실행을 위해 극한 수준으로 확장한 다음 오랜 기간, 때로는 몇 달에 걸쳐 제로 인스턴스로 다시 축소할 수 있습니다.
타사 프레임워크가 Kubernetes를 기반으로 배치 워크로드를 실행하는 데 도움이 될 수 있지만 자체 프레임워크를 롤링할 수도 있습니다. 어떤 접근 방식을 취하든 맞춤형 배치 솔루션의 구축, 구성 및 유지 관리에 있어 공통적인 과도한 업무량을 처리하는 데 상당한 공백과 과제가 남을 수 있습니다. 그런 다음 비용 효율적인 방식으로 Kubernetes에서 배치 워크로드를 스케줄링, 배치 및 확장하는 것도 고려해야 합니다. 그렇다면 Amazon EKS 기반 AWS Batch는 어떤 장점이 있나요?
AWS Batch for Amazon EKS
AWS Batch for Amazon EKS는 앞서 설명한 차이점을 해결하기 위해 복잡한 사용자 지정 배치 솔루션을 설치하고 관리할 필요 없이 Amazon Elastic Compute Cloud(Amazon EC2)에 호스팅된 클러스터를 사용하여 배치 워크로드를 실행할 수 있는 완전관리형 서비스를 제공합니다. AWS Batch는 대용량 배치 작업을 제어하고 실행하는 스케줄러와 작업을 대기열에 제출하는 시기, 위치 및 방법을 평가하는 오케스트레이션 구성 요소를 제공합니다. 사용자는 이 작업을 조정할 필요가 없습니다. 대기열에 작업 요청을 제출하기만 하면 됩니다.
Amazon Elastic Compute Cloud(EC2) 및 Amazon Elastic Compute Cloud(EC2) 스팟에 대한 작업 대기열, 종속성 추적, 재시도, 우선 순위 지정, 컴퓨팅 리소스 프로비저닝 및 포드 제출은 모두 서버리스 대기열을 사용하여 처리됩니다. 관리형 서비스인 AWS Batch for Amazon EKS를 사용하면 운영 및 관리 오버헤드를 줄이고 비즈니스 요구 사항에 집중할 수 있습니다. AWS Identity and Access Management(AWS IAM), Amazon EventBridge 및 AWS Step Functions와 같은 다른 서비스와의 통합을 제공하고 Kubernetes 생태계 내 다른 파트너 및 도구를 활용할 수 있도록 합니다.
Amazon EKS 클러스터에서 배치 작업을 실행할 때 AWS Batch는 워크로드 요청을 제출하기 위한 주요 진입점입니다. 대기 중인 작업에 따라 AWS Batch는 클러스터에서 워커 노드를 시작하여 작업을 처리합니다. 이러한 노드는 Amazon EKS의 다른 노드 그룹과는 다른 별개의 네임스페이스에 보관됩니다. 마찬가지로, 다른 포드의 노드는 AWS Batch에서 사용되는 노드와 격리됩니다.
작동 방식
AWS Batch는 AWS Batch에 등록해야 하는 관리형 Amazon EKS 클러스터와 권한 집합을 사용하여 AWS Batch가 해당 클러스터에서 컴퓨팅 환경을 시작하고 관리하여 대기열에 제출된 작업을 처리할 수 있도록 합니다. Amazon EKS 사용 설명서에서 이 주제와 관련된 부분에서 AWS Batch가 사용할 수 있는 관리형 클러스터를 시작하는 방법에 대한 지침을 찾을 수 있습니다. 권한 구성 지침은 AWS Batch 사용 설명서에서 찾을 수 있습니다.
하나 이상의 클러스터가 등록되고 사용 권한이 설정되면 사용자는 작업을 대기열에 제출할 수 있습니다. 작업이 제출되면 요청을 처리하기 위해 다음 작업이 수행됩니다.
- 작업 요청을 받으면 대기열은 구성된 컴퓨팅 환경에 리소스 요청을 전달합니다. AWS Batch 관리형 스케일링 그룹이 아직 존재하지 않는 경우 그룹이 생성되고 AWS Batch는 그룹에서 Amazon Elastic Compute Cloud(EC2) 인스턴스를 시작하기 시작합니다. 이러한 새 인스턴스는 클러스터의 AWS Batch Kubernetes 네임스페이스에 추가됩니다.
- Kubernetes 스케줄러는 구성된 모든 DaemonSet을 노드에 배치합니다.
- 노드가 준비되면 AWS Batch는 레이블과 테인트를 사용하여 포드에 대한 배치를 선택하는 방식으로 k8s 스케줄러의 로직 대부분을 우회하여 포드 배치 요청을 클러스터로 전송하기 시작합니다.
- 이 프로세스를 반복하여 구성된 최대 용량에 도달할 때까지 필요에 따라 스케일링 그룹의 더 많은 EC2 인스턴스로 확장합니다.
- 작업 대기열에 다른 컴퓨팅 환경(예: 스팟 인스턴스를 사용하도록 구성된 환경)이 정의되어 있는 경우 해당 컴퓨팅 환경에서 추가 노드를 시작합니다.
- 모든 작업이 완료되면 AWS Batch는 클러스터에서 노드를 제거하고 인스턴스를 종료합니다.
아래 애니메이션을 통해 이러한 단계를 설명해 놓았습니다.
지금 AWS Batch에서 클러스터를 사용해 보세요.
AWS Batch for Amazon Elastic Kubernetes Service(Amazon EKS)는 오늘 사용 가능합니다. 앞서 언급했듯이 이 서비스에는 요금이 부과되지 않으며 작업에 소비한 리소스에 대해서만 비용을 지불하면 됩니다. 자세한 내용은 AWS Batch 사용 설명서의 Amazon EKS 시작하기 주제를 참조하세요. Amazon EKS 기반 AWS Batch을 이해하는 데 유용한 셀프 가이드 워크숍도 있습니다.