작업 만들기 및 실행 개요

이 문서에서는 작업의 실행 프로세스 및 만들기 옵션에 대해 설명합니다. Batch 작업을 사용하면 Google Cloud에서 일괄 처리 워크로드를 실행할 수 있습니다. 작업 구성요소와 Batch 사용 기본 요건에 대한 자세한 내용은 Batch 시작하기를 참조하세요.

작업 만들기 및 실행 작동 방법

Batch를 사용하려면 워크로드와 해당 요구 사항을 지정하는 작업을 만든 다음 Batch에서 자동으로 이를 실행합니다.

작업 만들기 및 실행의 작동 방식에 대한 자세한 내용은 다음 섹션에서 설명합니다.

  • 작업 수명 주기: 생성부터 삭제까지 작업이 진행되는 상태를 이해할 수 있습니다.
  • 작업 큐 및 예약: 작업 실행을 시작하는 데 걸리는 시간에 영향을 미치는 요인을 파악합니다.
  • 작업 실행: 실행 중에 리소스에서 작업의 태스크가 실행되는 방법을 이해합니다.

작업 수명 주기

이 섹션에서는 작업의 수명 주기와 해당 태스크의 생성부터 삭제까지 설명합니다.

Batch에서 실행할 각 워크로드에 대해 다음 기본 프로세스를 수행합니다.

  1. 작업 만들기: 작업의 실행 가능 항목, 태스크, 기타 요구사항을 지정하여 실행할 워크로드를 정의합니다. 작업 만들기에 대한 세부정보는 이 문서의 작업 생성 옵션 섹션에 설명되어 있습니다.
  2. 작업 모니터링 및 문제 해결: 작업 생성을 완료하면 해당 작업이 지정된 리소스에서 자동으로 큐에 추가되고 예약 및 실행됩니다. 생성된 작업 또는 해당 태스크의 세부정보에서 현재 상태를 확인할 수 있습니다. 작업이 실행 중이거나 완료된 후에는 로그를 사용하여 작업을 모니터링하고 분석할 수도 있습니다. 작업이 실패하면 작업을 다시 만들기 전에 오류 메시지, 상태 이벤트 또는 로그를 사용하여 문제를 진단하고 해결할 수 있습니다.
  3. 작업 삭제 또는 내보내기: 작업 로그는 Cloud Logging 보관 정책에 따라 자동으로 보관 및 삭제됩니다. 작업의 기타 정보는 사용자 또는 Google Cloud가 이를 삭제할 때까지 Batch에서 계속 사용할 수 있습니다. Google Cloud는 작업이 완료된 후 60일이 지나면 자동으로 작업을 삭제합니다. 그 전에 작업을 선택적으로 직접 삭제할 수도 있고, 정보를 보관해야 하는 경우 삭제되기 전에 작업을 내보낼 수 있습니다.

작업을 만든 후 다음 상태로 진행됩니다.

  1. 큐에 추가됨(QUEUED): 작업 요청이 수락되어 큐에서 대기 중입니다. 작업은 필요한 리소스를 사용할 수 있고 그에 앞서 작업을 평가할 때까지 큐에 남아 있습니다.
  2. 예약됨(SCHEDULED): 작업이 실행을 시작할 큐에서 선택되었으며 리소스가 할당됩니다.
  3. 실행 중(RUNNING): 작업 리소스가 성공적으로 생성되었으며 해당 태스크 실행을 시작할 수 있습니다.

    작업이 실행 중이면 각 작업이 다음 상태로 진행됩니다.

    1. 대기 중(PENDING): 태스크는 VM이 실행될 때까지 대기합니다.
    2. 할당됨 (ASSIGNED): 태스크를 실행할 VM이 할당되었습니다.
    3. 실행 중(RUNNING): 태스크가 VM에서 실행됩니다.
    4. 태스크는 다음 상태 중 하나로 완료됩니다.
      • 성공(SUCCEEDED): 각 실행 가능 항목이 성공했거나(종료 코드 0 반환) 종료 상태 무시(ignoreExitStatus) 필드를 사용하여 중요하지 않은 것으로 표시되어 작업이 성공했습니다.
      • 실패(FAILED): 중요 실행 가능 항목 중 하나 이상이 실패하여 태스크가 실패했습니다(0이 아닌 종료 코드 반환).
  4. 작업은 다음 상태 중 하나로 완료됩니다.

    • 성공(SUCCEEDED): 작업의 모든 태스크가 성공합니다.
    • 실패(FAILED): 작업 태스크가 하나 이상 실패했습니다.

자세한 내용은 참조 문서의 작업 상태태스크 상태를 참조하세요.

작업 큐 및 예약

일반적으로 작업이 작고 필요한 일반 리소스가 적을수록 작업을 더 빠르게 실행하고 완료할 가능성이 높아집니다. 일반적으로 매우 작고 최소한의 리소스를 사용하는 Batch 문서 예시 작업의 경우 몇 분 이내에 실행이 완료되는 것을 볼 수 있습니다.

특히 작업이 큐 및 예약을 완료하는 데 걸리는 시간은 다음 요인에 따라 작업마다, 시간마다 다릅니다.

  • 작업 리소스 가용성: 허용된 위치 내에서 작업의 필수 리소스 가용성입니다.

    첫째, 해당 위치에서 제공되지 않는 리소스를 지정하면 작업이 실행될 수 없습니다. 이 경우 영역 가용성 오류와 함께 작업이 실패합니다.

    두 번째로, 리소스 가용성 오류로 인해 필요한 리소스 중 하나라도 현재 요구에 비해 용량이 부족한 경우 작업이 지연되거나 실패할 가능성이 높습니다. 결과적으로 더 적은 수의 보다 일반적인 리소스가 필요하고 리전의 모든 영역에서 작업 실행을 제한하지 않으면 작업이 더 빨리 실행될 수 있습니다.

    작업 리소스에 대한 자세한 내용은 이 문서의 작업 실행을 참조하세요. Batch 작업 및 리소스에 지정할 수 있는 위치에 대한 자세한 내용은 위치 페이지를 참조하세요.

  • 작업 우선순위: 프로젝트의 다른 작업의 우선순위와 관련된 작업 우선순위입니다.

    선택적으로 gcloud CLI에 --priority 플래그 또는 priority JSON 필드를 포함하여 작업 우선순위를 지정할 수 있습니다. 작업 우선순위를 0(가장 낮은 우선순위)에서 99(가장 높은 우선순위) 사이의 숫자로 정의할 수 있습니다. 높은 우선순위를 설정하면 프로젝트에서 우선순위가 낮은 작업보다 먼저 작업을 실행할 수 있습니다.

    작업의 우선순위를 구성하지 않으면 기본적으로 가장 낮은 우선순위인 0을 사용합니다. 큐에 추가된 두 작업의 우선순위가 같은 경우 먼저 생성된 작업의 우선순위가 더 높습니다.

  • 할당량 및 한도: 프로젝트가 Google Cloud 리소스 및 요청에 대해 가진 기준점입니다.

    필수 리소스 또는 요청에 대한 한도 또는 프로젝트의 할당량을 초과하면 작업을 실행할 수 없습니다. 이 경우 Batch가 작업을 지연하고 나중에 다시 시도하거나 작업을 실패하고 관련 오류를 표시할 수 있습니다.

    모든 관련 한도를 준수하는 작업을 만들고 프로젝트에 관련 할당량이 충분히 있는지 확인하면 작업의 지연 및 오류를 방지하는 데 도움이 될 수 있습니다. 자세한 내용은 Batch 할당량 및 한도를 참조하세요.

작업 실행

작업 실행 시간은 태스크 예약 및 작업 리소스에 따라 달라질 수 있습니다.

태스크 예약

작업이 실행되면 다음 옵션 중 하나를 지정할 수 있는 예약 정책(schedulingPolicy) 필드에 따라 태스크가 예약됩니다.

  • 가능한 한 빨리(AS_SOON_AS_POSSIBLE)(기본값): 태스크가 리소스를 사용할 수 있게 되는 즉시 실행되고 병렬로 실행될 수 있습니다. 한 번에 실행되는 태스크 양은 이 문서의 작업 리소스에 설명된 대로 작업 리소스 및 기타 구성 옵션에서 허용하는 VM당 병렬 태스크 수에 따라 달라집니다.
  • 순서(IN_ORDER): 태스크는 낮은 색인부터 시작하여 한 번에 하나씩 실행됩니다.

작업 리소스

각 Batch 작업은 포함된 영역 중 하나에 각각 위치한 하나 이상의 일치하는 Compute Engine 가상 머신(VM) 인스턴스 그룹인 리전 관리형 인스턴스 그룹(MIG)에서 실행됩니다. 각 VM에는 작업 성능에 영향을 미치는 CPU 코어(특히 가상 CPU (vCPU)) 및 메모리 전용 하드웨어와 운영체제(OS) 이미지 및 작업 실행 지침을 저장하는 부팅 디스크가 있습니다.

작업 실행 중에 Batch는 사양을 충족하는 리소스를 자동으로 만들고 삭제합니다. 작업을 만들 때 다음을 지정하여 해당 리소스를 구성합니다.

  • 기본값이 충분하지 않으면 각 태스크가 실행되는 데 필요한 컴퓨팅 리소스(vCPU, 메모리, 추가 부팅 디스크 스토리지(필요한 경우))를 지정해야 합니다. 자세한 내용은 태스크당 컴퓨팅 리소스(computeResource) 필드하위 필드를 참조하세요.

  • 선택적으로 사용할 VM 유형과 GPU 및 스토리지 볼륨과 같은 각 VM에 대한 추가 리소스를 지정할 수도 있습니다. 이러한 옵션을 지정하지 않으면 Batch에서 호환되는 VM의 유형을 선택하고 추가 리소스를 추가하지 않습니다. 자세한 내용은 VM 인스턴스 리소스(instances[]) 필드하위 필드를 참조하세요.

VM 수와 각 VM에서 동시 실행 가능한 태스크 수는 태스크 예약 및 지정된 하드웨어 요구사항을 기준으로 작업마다 다릅니다. IN_ORDER를 실행하도록 작업의 태스크를 지정하면 작업에 VM이 하나만 포함되며 한 번에 하나의 태스크만 실행됩니다. 그렇지 않고 작업의 태스크에서 AS_SOON_AS_POSSIBLE을 실행하는 경우 다음 수식을 사용하여 VM 수와 동시 태스크 수를 추정할 수 있습니다.

\[{vmsPerJob}=\frac{taskCount}{parallelTasksPerVm}\]

이 공식의 값은 다음과 같습니다.

  • \({vmsPerJob}\): 작업의 최대 VM 수입니다. 작업에 대해 생성된 VM의 실제 양은 이보다 작을 수 있습니다. 예를 들어 Batch에서 더 많은 리소스를 기다리기보다 더 적은 리소스로 작업을 실행하는 것이 더 빠를 것으로 예상하는 경우입니다. 이 값은 또한 작업당 동시 VM 한도에 의해 제한됩니다.
  • \({taskCount}\): 태스크 수(taskCount) 필드를 사용하여 정의한 작업의 총 태스크 수입니다.
  • \({parallelTasksPerVM}\): VM에서 동시에 실행할 수 있는 최대 태스크 수입니다.

    이 값은 다음의 모든 기준에 따라 결정됩니다.

    • 최솟값은 태스크 1개입니다.

    • 최댓값은 태스크 20개보다 작으며 정의된 경우 작업당 최대 동시 태스크 수(parallelism) 필드 값입니다.

    • VM당 최대 병렬 태스크 수(taskCountPerNode) 필드가 정의된 경우 해당 값이 사용됩니다.

      그렇지 않고 taskCountPerNode가 정의되지 않은 경우 Batch는 VM당 총 컴퓨팅 리소스(특히 vCPU) 수를 각 태스크에 필요한 양으로 나누어 값을 결정합니다.

      \[{parallelTasksPerVm}=\frac{vcpusPerVm}{vcpusPerTask}\]

      이 공식의 값은 다음과 같습니다.

      • \({vcpusPerVm}\): VM당 총 vCPU 수로, 작업 VM의 머신 유형에 따라 결정됩니다.

      • \({vcpusPerVm}\): 태스크당 vCPU 수로, 태스크당 vCPU(cpuMilli) 필드 단위를 변환하여 결정됩니다.

작업 만들기 옵션

기본 작업 만들기 및 실행에서는 스크립트 또는 컨테이너 이미지를 사용하여 실행 가능 항목을 정의하고 사전 정의된 환경 변수와 커스텀 환경 변수를 사용하는 방법이 포함된 기본 사항에 대해 설명합니다.

작업 만들기의 기본 사항을 이해한 후에는 다음 추가 구성 옵션을 하나 이상 사용하는 작업을 만드는 것이 좋습니다.

  • 작업에 대한 액세스 제어:

    • 커스텀 서비스 계정을 사용하여 작업에 대한 액세스 제어에서는 작업의 VM이 액세스할 수 있는 리소스 및 애플리케이션에 영향을 주는 작업의 서비스 계정을 지정하는 방법을 설명합니다. 커스텀 서비스 계정을 지정하지 않으면 작업에 기본적으로 Compute Engine 기본 서비스 계정이 사용됩니다.

    • 네트워킹 개요에서는 작업의 네트워크 지정, 외부 연결 차단, VPC 서비스 제어를 이용한 데이터 및 리소스 보호 등 작업의 네트워킹 구성을 맞춤설정할 수 있는 시기와 방법을 간략히 설명합니다.

    • Secret Manager를 사용하여 민감한 정보 보호에서는 작업을 생성할 때 Secret Manager 보안 비밀을 사용하여 암호화된 정보를 지정하여 커스텀 환경 변수 및 로그인 사용자 인증 정보와 같은 민감한 정보를 안전하게 정의하는 방법을 설명합니다.

  • 작업에 대한 추가 옵션 구성:

    • MPI 라이브러리를 사용하여 태스크 커뮤니케이션 구성에서는 메시지 전달 인터페이스(MPI) 라이브러리를 사용하여 서로 다른 VM에서 서로 통신하는 상호 의존적인 태스크로 작업을 구성하는 방법을 설명합니다. MPI의 일반적인 사용 사례는 긴밀하게 결합된 고성능 컴퓨팅(HPC) 워크로드입니다.

    • 작업이 실행되는 리소스 맞춤설정:

      • VM 인스턴스 템플릿을 사용하여 작업 리소스 정의에서는 작업을 만들 때 작업 리소스를 정의하도록 Compute Engine VM 템플릿을 지정하는 방법을 설명합니다.

      • 작업에 GPU 사용에서는 하나 이상의 그래픽 처리 장치(GPU)를 사용하는 작업을 정의하는 방법을 설명합니다. GPU를 사용하는 작업의 일반적인 사용 사례에는 집중적인 데이터 처리 또는 머신러닝(ML) 워크로드가 있습니다.

      • 작업에 스토리지 볼륨 사용에서는 하나 이상의 외부 저장소 볼륨에 액세스할 수 있는 작업을 정의하는 방법을 설명합니다. 스토리지 옵션에는 신규 또는 기존 영구 디스크, 새로운 로컬 SSD, 기존 Cloud Storage 버킷, Filestore 파일 공유와 같은 기존 네트워크 파일 시스템(NFS)이 포함되어 있습니다.

      • VM OS 환경 개요는 작업의 VM OS 이미지와 부팅 디스크를 포함하여 작업의 VM 운영체제(OS) 환경을 맞춤설정할 수 있는 시기와 방법을 간략하게 설명합니다.

    • 작업의 다양한 측면 최적화:

      • 모니터링 및 분석 개선:

        • 태스크 로그 작성에서는 태스크 로그를 작성하도록 작업의 실행 가능 항목을 구성하는 방법을 설명합니다. 태스크 로그를 작성하면 Cloud Logging에 커스텀 정보를 표시할 수 있으므로 작업을 보다 쉽게 분석하고 문제를 해결할 수 있습니다.

        • 커스텀 상태 이벤트 구성에서는 작업의 실행 가능 항목에 대한 커스텀 상태 이벤트를 구성하는 방법을 설명합니다. 커스텀 상태 이벤트를 사용하면 실행 가능한 항목에 대해 발생하는 중요한 이벤트를 설명하고 작업의 상태 이벤트 기록을 확인할 때 표시되어 작업을 보다 쉽게 분석하고 문제를 해결할 수 있습니다.

        • 상태 알림 사용 설정에서는 상태에 대한 Pub/Sub 알림을 보내도록 작업을 구성하는 방법을 설명합니다. 이 알림은 필요에 따라 BigQuery 테이블에 저장하고 쿼리할 수 있습니다. 이 문서를 읽기 전에 먼저 Pub/Sub 알림 및 BigQuery를 사용하여 작업 상태를 모니터링하도록 프로젝트를 구성합니다.

      • 태스크 재시도 자동화에서는 전체 실패 또는 지정된 실패 후 작업의 태스크를 자동으로 재시도하는 방법을 설명합니다. 자동화된 재시도는 문제 해결 및 일시적인 오류가 발생하는 작업에 필요한 전체 실행 시간과 문제 해결 과정을 줄이는 데 도움이 됩니다. 예를 들어 스팟 VM에서 실행되는 작업에는 자동 재시도를 사용하는 것이 좋습니다. 그러면 상당한 할인 혜택을 받을 수 있지만 항상 제공되는 것은 아니며 언제든지 선점할 수 있습니다.

      • VM을 함께 배치하여 지연 시간 감소에서는 VM이 서로 물리적으로 가까이 배치되도록 하여 작업의 VM 간에 네트워크 지연 시간을 줄이는 방법을 설명합니다. 이러한 성능상의 이점은 MPI 라이브러리를 사용하여 통신하는 작업과 같이 VM 간 네트워크 통신이 자주 있는 작업에 특히 유용합니다.

      • VM 예약을 사용하여 리소스 가용성 확보에서는 예약된 VM에서 실행할 수 있는 작업을 구성하는 방법을 설명합니다. 예약된 VM을 사용하면 작업 예약 시간을 최소화하고 리소스 가용성 오류를 방지하며 비용을 최적화할 수 있습니다.

      • 이미지 스트리밍 사용에서는 Artifact Registry에서 컨테이너 이미지를 스트리밍하여 작업 시작 시간을 개선하는 방법을 설명합니다.

  • 추가 서비스를 사용하여 작업을 만들고 실행합니다.

다음 단계