태스크 실행 및 애플리케이션 패키지 추가
Batch REST API를 사용하여 동시에 태스크 실행
Azure Batch는 컴퓨팅 노드에서 작업을 분할하는 데 병렬 태스크를 사용합니다. Azure Batch는 특히 대규모 병렬 및 고성능 컴퓨팅 Batch 작업을 실행하는 데 적합합니다. Batch 서비스는 시나리오를 실행하는 데 필요한 모든 노드와 애플리케이션을 관리하고 예약하는 등 모든 작업을 처리합니다.
풀의 노드 수가 적을수록 둘 이상의 작업을 동시에 실행하여 리소스 사용을 최대화할 수 있습니다. 여러 작업에서 컴퓨팅 노드를 공유하는 경우, 특정 워크로드에는 더 짧은 작업 시간과 낮은 비용이 표시될 수 있습니다.
일부 시나리오의 경우 데이터를 공유할 수 있는 작업에 대한 데이터 전송을 최소화해야 할 수 있습니다. 공유 데이터를 더 적은 수의 노드에 복사하고 각 노드에서 병렬로 작업을 실행하여 데이터 전송 요금을 크게 줄일 수 있습니다. 이렇게 하면 많은 수의 노드에 데이터를 공유하지 않고 모든 노드에 데이터를 전송하는 데 걸리는 시간을 줄일 수 있습니다.
병렬 작업 실행 사용
병렬 태스크 실행은 단일 노드가 하나의 풀에서 동시에 처리할 수 있는 태스크 수를 제어합니다.
Batch에서 슬롯은 병렬 태스크 실행을 제어합니다. 태스크에는 RequiredSlots
라는 속성이 있으며, 이 속성은 태스크가 얼마나 리소스 집약적인지를 나타냅니다. 리소스 집약적인 태스크에는 리소스 사용량이 적은 태스크보다 더 많은 슬롯이 필요합니다.
풀을 만들 때 taskSlotsPerNode
속성을 설정하여 노드당 사용할 수 있는 태스크 슬롯 수를 지정합니다. 이 속성은 노드에서 동시에 실행할 수 있는 작업의 리소스 강도를 제어합니다.
예를 들어 풀의 taskSlotsPerNode
속성이 16으로 설정된 경우 노드에서 동시에 실행되는 태스크에는 16개 이상의 슬롯이 필요하지 않습니다. 이 설정은 예를 들어 다음을 의미합니다.
- 슬롯 수가 16개이므로 8개의 슬롯이 필요한 작업 2개를 동시에 실행할 수 있습니다(2*8=16).
- 슬롯 수가 16개 미만이므로 5개의 슬롯이 필요한 작업 3개를 동시에 실행할 수 있습니다(3*5=15).
- 슬롯 수가 16개보다 많기 때문에 4개의 슬롯이 필요한 작업 5개를 동시에 실행할 수 있습니다(5*4=20).
taskSlotsPerNode
속성은 노드에 있는 vCPU 수의 최대 4배일 수 있습니다. 노드에서 사용할 수 있는 vCPU 수를 확인하려면 Azure의 가상 머신 크기를 참조하세요.
참고 항목
taskSlotsPerNode
속성을 설정한 후에는 수정할 수 없습니다. 변경하려면 새 풀을 만들어야 합니다.
작업에 필요할 것으로 예상되는 CPU 또는 메모리 양 또는 작업에 예상되는 I/O 집약도에 따라 RequiredSlots
속성을 설정합니다. 또한 작업 실행 시간을 저하시키지 않고 동시에 실행할 수 있는 작업 수를 기반으로 taskSlotsPerNode
속성을 설정합니다.
Azure Batch에서 애플리케이션 패키지를 추가하고 컨테이너 애플리케이션을 실행합니다.
애플리케이션 패키지
Azure Batch 내에서 애플리케이션은 풀의 컴퓨팅 노드에 자동으로 다운로드할 수 있는 버전이 지정된 이진 파일의 세트를 나타냅니다. 애플리케이션에는 서로 다른 애플리케이션 버전을 나타내는 하나 이상의 ‘애플리케이션 패키지’가 포함되어 있습니다.
풀 또는 태스크 수준에서 애플리케이션 패키지를 지정할 수 있습니다. 풀 애플리케이션 패키지는 풀의 모든 노드가 작업의 태스크를 실행하는 경우에 적합합니다.
풀을 만들 때 둘 이상의 애플리케이션 패키지를 지정할 수 있습니다. 애플리케이션은 노드가 풀에 조인되거나 노드가 다시 시작/이미지로 다시 설치될 때 배포됩니다. 기존 풀에 새 패키지를 설치하려면 해당 노드를 다시 시작해야 합니다.
태스크 수준에서 애플리케이션 패키지를 배포하도록 선택하는 경우 공유 풀 환경에서 유용하게 사용할 수 있습니다. 이러한 환경에서는 다른 작업이 하나의 풀에서 실행되고 작업이 완료될 때 풀이 삭제되지 않습니다. 작업에 있는 태스크가 풀에 있는 노드보다 적은 경우 태스크를 실행하는 노드에만 애플리케이션을 배포하므로 태스크 애플리케이션 패키지는 데이터 전송을 최소화할 수 있습니다.
Azure Portal 또는 Batch Management API를 사용하여 Batch 계정에서 애플리케이션 패키지를 관리합니다. 애플리케이션 패키지를 사용하려면 Azure Storage 계정을 Batch 계정에 연결해야 합니다. Batch 서비스는 연결된 스토리지 계정을 사용하여 애플리케이션 패키지를 저장합니다. 특별히 Batch 계정과 함께 사용할 스토리지 계정을 만드는 것이 좋습니다.
컨테이너 애플리케이션
컨테이너는 클라우드 애플리케이션을 패키지, 배포 및 관리하기 위한 기본 방법으로 도입되고 있습니다. Azure Container Instances는 간단한 애플리케이션, 작업 자동화 및 빌드 작업 등 격리된 컨테이너에서 작동할 수 있는 모든 시나리오에 적합한 솔루션입니다.
컨테이너를 사용하면 환경 및 종속 파일을 관리할 필요없이 Batch 작업을 실행하여 애플리케이션을 쉽게 실행할 수 있습니다. 컨테이너는 애플리케이션을 다양한 환경에서 실행될 수 있는 이식이 가능한 일체형 경량 단위로 배포합니다. Batch의 컨테이너 기반 작업은 리소스 파일 및 출력 파일 관리, 애플리케이션 패키지 등 컨테이너가 아닌 작업의 기능을 활용할 수도 있습니다.
프리페치한 컨테이너 이미지를 사용하거나 사용하지 않고 컨테이너 지원 풀을 만들 수 있습니다. 프리페치 프로세스를 사용하면 Docker Hub 또는 인터넷의 다른 컨테이너 레지스트리(예: Azure Container Registry)에서 컨테이너 이미지를 미리 로드할 수 있습니다.
컨테이너 이미지를 프리페치할 때의 장점은 작업을 처음 실행하기 시작할 때 컨테이너 이미지가 다운로드될 때까지 기다릴 필요가 없다는 것입니다. 컨테이너 구성은 풀이 생성될 때 컨테이너 이미지를 가상 머신으로 끌어옵니다. 그러면 풀에서 실행되는 작업은 컨테이너 이미지 및 컨테이너 실행 옵션 목록을 참조할 수 있습니다.