.NET 앱에서 Azure Batch 워크로드 관리

완료됨

Azure Batch는 대규모 병렬 고성능 솔루션을 생성하기 위해 함께 결합하는 리소스 컬렉션입니다.

여러분은 Azure Batch 프로세스 전체를 .NET Core 콘솔 애플리케이션으로 관리하는 앱을 작성하기로 결정합니다. 먼저, 이 앱에서 애완 동물 비디오를 클라우드에 업로드합니다. 그런 다음 컴퓨팅 노드(가상 머신)를 사용하여 Azure Batch 풀을 만듭니다. 그런 다음, 이러한 노드에서 실행되는 작업을 만듭니다.

각 컴퓨팅 노드에서 실행되는 작업에는 입력 스토리지 컨테이너에 업로드된 모든 비디오에 대한 태스크가 포함됩니다. 이 작업은 MP4 애완 동물 비디오를 로드하고 애니메이션 GIF로 변환한 다음 파일을 출력 컨테이너에 저장합니다. 이 작업은 Azure Batch 계정에 애플리케이션 패키지로 저장된 ffmpeg 라이브러리를 참조합니다. 다음 다이어그램은 프로세스를 보여줍니다.

Diagram showing how an app can use Azure Storage and Azure Batch to run apps on compute nodes in pools.

Azure Batch는 Azure Storage와 함께 사용됩니다. Azure Storage는 모든 입력 데이터를 저장하는 위치, 로깅 및 모니터링 정보를 저장하는 위치, 최종 출력을 저장하는 스토리지를 제공합니다. Azure Batch가 실행되는 애플리케이션도 거기에 저장할 수 있지만 더 유연한 옵션은 Azure Batch의 애플리케이션 패키지 기능을 사용하는 것입니다.

Azure Batch의 구성 요소는 다음과 같습니다.

  • Azure Batch 계정: Azure Batch 솔루션에 필요한 다음 리소스를 보유하는 컨테이너입니다.
    • 애플리케이션 패키지: 애플리케이션 패키지는 Batch의 태스크에서 사용할 수 있는 애플리케이션을 추가합니다. Azure Batch 계정 하나에 최대 20개의 애플리케이션 패키지를 포함할 수 있습니다. 회사에 더 많은 요구 사항이 있는 경우 이 제한을 늘리도록 요청할 수 있습니다.
    • : 풀에는 Batch 작업을 실행하는 엔진인 컴퓨팅 노드가 포함됩니다. 생성 시 노드의 수, 크기 및 운영 체제를 지정합니다. Azure Batch 계정 하나에 여러 풀을 포함할 수 있습니다.
    • 노드: 각 노드에는 실행할 여러 태스크가 할당될 수 있으며 작업은 Azure Batch에서 할당 및 관리됩니다. 노드는 특정 풀에 연결됩니다.
    • 작업: 작업은 태스크 컬렉션을 관리합니다. 작업은 특정 풀에 연결됩니다. Azure Batch 계정 하나에 여러 작업을 포함할 수 있습니다.
    • 태스크: 태스크는 애플리케이션을 실행합니다. 애플리케이션 패키지 또는 Azure Storage 컨테이너에 포함할 수 있습니다. 태스크는 입력 파일을 처리하며, 처리가 완료되면 출력 컨테이너에 데이터를 쓸 수 있습니다.

.NET 애플리케이션 내에서 Azure Batch 구성 요소를 관리하려면 먼저 Azure Batch 계정 및 Azure Storage 계정을 만들어야 합니다. Azure Portal, PowerShell 또는 Azure CLI를 사용하여 이러한 계정을 만들 수 있습니다.

앱을 사용하여 Batch 워크로드를 관리하는 이유

앱을 사용하여 Azure Batch 처리를 제어하면 Azure Batch에서 실행 및 모니터링 작업을 자동화할 수 있습니다. 사용 가능한 다양한 클라이언트 API 집합을 사용하면 코드에서 전체 Batch 워크플로를 제어할 수 있습니다. 일괄 처리가 완료되면 앱은 만든 리소스를 자동으로 삭제하여 Azure 비용을 낮게 유지할 수 있습니다.

Batch 워크로드를 사용하면 수천 개의 노드로 확장할 수 있으므로 비디오 코드 변환, 일기 예보 및 이미지 분석과 같은 프로세서 집약적인 컴퓨팅 리소스가 필요한 솔루션을 보다 실현할 수 있습니다. 이 모든 사용 사례는 프로그래밍 방식으로 관리할 때 효율성이 향상됩니다.

Batch 서비스 클라이언트 API

Microsoft는 다양한 언어에 사용할 수 있는 Batch API를 출시했습니다. 이러한 클라이언트 라이브러리를 사용하여 인증, 파일 처리, 노드 풀 만들기, 태스크로 작업 만들기, 실행 중인 작업의 상태 모니터링을 비롯한 모든 Batch 프로세스 구성 요소를 프로그래밍 방식으로 제어할 수 있습니다.

.NET에서는 이러한 Batch API가 NuGet 패키지로 앱에 로드됩니다. 또한 Azure Storage 클라이언트 라이브러리를 사용하여 솔루션의 파일과 자산을 관리할 것입니다.

.NET 앱을 사용하여 Azure Batch를 제어하는 방법

모듈의 나머지 단계에서 수행할 단계는 Azure Portal을 사용하여 Azure Batch 및 Azure Storage 계정을 만듭니다. 그런 다음, 태스크에 사용할 수 있도록 ffmpeg 애플리케이션을 애플리케이션 패키지로 업로드할 것입니다. 앱은 ffmepg를 실행하는 작업을 사용하여 비디오를 변환합니다.

Azure Portal에서 Batch 및 Storage 계정을 만들었으므로, Cloud Shell에서 Azure Batch 및 Azure Storage 클라이언트 라이브러리를 사용하는 .NET Core 콘솔 앱을 만들어야 합니다.

이 앱은 Azure Storage 클라이언트 라이브러리를 사용하여 MP4 비디오를 Blob 스토리지에 업로드할 것입니다. 그런 다음, 앱은 Batch 클라이언트 라이브러리를 사용하여 3개의 노드(Windows Server VM)가 있는 풀을 만들고, 작업을 만들고, 해당 노드에서 실행할 작업에 비디오 변환 작업을 추가합니다. 작업이 실행되면 앱은 상태 모니터링하고, 성공적으로 완료할 검사, 원치 않는 리소스를 지워야 합니다.