Oracle Cloud Infrastructure Batch Service를 사용하여 클라우드 네이티브 뱃치 워크로드 배포

소개

최신 애플리케이션은 데이터 변환, 보고서 생성, 미디어 처리 및 대규모 시뮬레이션과 같은 작업을 처리하기 위해 백그라운드 처리에 크게 의존합니다. 이러한 워크로드는 종종 컴퓨팅 집약적이며 비동기적으로 실행되며 규모와 빈도에 따라 크게 다를 수 있습니다. 기존 접근 방식을 사용하여 워크로드를 관리하는 것은 복잡할 수 있습니다. 따라서 팀은 인프라를 프로비저닝하고, 스케줄링 시스템을 구축하고, 확장을 수동으로 처리해야 합니다.

Oracle Cloud Infrastructure(OCI) Batch Service는 이 프로세스를 간소화하도록 설계되었습니다. 일괄 처리 워크로드를 대규모로 실행할 수 있는 완전 관리형 방법을 제공하므로 플랫폼이 실행 및 리소스 관리를 처리하는 동안 작업 정의에 집중할 수 있습니다.

이 자습서에서는 OCI Batch의 작동 방식, 아키텍처 및 실제 시나리오에서 효과적으로 사용할 수 있는 방법에 대해 알아봅니다.

OCI Batch는 어떤 문제를 해결합니까?

전통적으로 일괄 처리 워크로드를 실행하는 데는 여러 계층의 복잡성이 수반됩니다. 팀은 종종 컴퓨팅 리소스를 미리 프로비저닝하고, 자체 작업 일정 관리 메커니즘을 구현하고, 재시도, 실패 및 확장을 처리하는 논리를 구축해야 합니다. Kubernetes와 같은 플랫폼을 사용하는 경우에도 환경을 구성하고 유지 관리하려면 상당한 노력이 필요합니다. 따라서 운영 오버헤드가 증가하고 개발 속도가 느려집니다.

OCI Batch는 뱃치 워크로드의 수명 주기를 관리하는 통합 서비스를 제공하여 이러한 문제를 해결합니다. 커스터마이징 스케줄러를 구축하거나 인프라를 관리할 필요가 없어 팀이 더 적은 운영 노력으로 대규모 작업을 보다 효율적으로 실행할 수 있습니다.

OCI 일괄 처리 서비스 개요

OCI Batch는 뱃치 워크로드 관리 및 실행을 위한 중앙 집중식 서비스 역할을 합니다. 작업이 제출되면 대기열에 배치되고 스케줄링 결정 및 리소스 가용성에 따라 처리됩니다. 이 서비스는 작업 요구 사항을 평가하고 작업을 실행하기 위해 컴퓨트 용량을 동적으로 프로비저닝합니다. 각 작업은 컨테이너화된 환경에서 실행되어 일관성과 격리를 보장합니다. 실행이 완료되면 출력이 저장되고 모니터링 및 문제 해결을 위해 로그가 생성됩니다.

이 접근 방식은 단일 관리형 서비스 내에서 작업 제출, 일정 잡기, 실행 및 관찰 가능성을 처리하는 간소화된 워크플로우를 제공합니다.

아키텍처 심층 분석

OCI Batch의 아키텍처는 다이어그램에 표시된 대로 작업 제출부터 실행 및 출력에 이르는 명확한 흐름을 따릅니다.

OCI 배치 아카이브

이 프로세스는 사용자가 OCI 콘솔, CLI 또는 API를 사용하여 작업을 제출할 때 시작됩니다. 이 요청은 기본 구성 계층 역할을 하는 Batch Context와 연관됩니다. 컨텍스트는 네트워킹, 컴퓨트 플리트, 로깅과 같은 주요 설정을 정의하여 모든 작업이 일관된 환경 내에서 실행되도록 합니다.

그런 다음 작업은 논리적 그룹화를 제공하고 일정 잡기 동작을 제어하는 데 도움이 되는 Job Pools로 구성됩니다. 이는 우선 순위 지정 및 격리를 허용하므로 여러 팀 또는 환경에서 워크로드를 관리할 때 특히 유용합니다. 제출된 각 작업은 전체 작업 단위를 나타내며 하나 이상의 작업을 포함할 수 있습니다. 작업은 가장 작은 실행 단위이며 정의된 작업 환경을 사용하여 실행됩니다. 따라서 정의된 종속성에 따라 작업을 독립적으로 또는 순서대로 실행할 수 있는 작은 조각으로 나눌 수 있습니다.

제출된 작업은 Queue에 배치되며, 여기서 리소스가 사용 가능해질 때까지 기다립니다. 스케줄러는 큐를 지속적으로 평가하고 우선 순위와 용량을 기준으로 작업을 선택합니다. 이를 통해 시스템을 압도하지 않고도 워크로드를 효율적으로 처리할 수 있습니다.

이러한 작업을 실행하기 위해 OCI Batch는 기본 컴퓨트 용량을 나타내는 Compute Fleets를 사용합니다. 이러한 플리트는 워크로드 수요에 따라 동적으로 프로비저닝됩니다. 제출된 작업이 많을수록 추가 용량이 할당되고, 수요가 감소하면 리소스가 축소됩니다. 따라서 수동 개입 없이도 효율적으로 사용할 수 있습니다.

실행 후 결과가 OCI storage services에 저장되고 로그 및 측정항목이 수집되어 가시성이 확보됩니다. 이렇게 하면 작업 실행 및 시스템 성능을 전체적으로 볼 수 있습니다.

이 아키텍처가 중요한 이유

OCI Batch의 핵심 강점은 작업 제출과 실행 간 분리입니다. 시스템은 모든 작업을 즉시 실행하는 대신 대기열 및 스케줄링 논리를 사용하여 작업 로드를 효율적으로 관리합니다. 이 설계를 통해 OCI Batch는 사전 프로비저닝된 인프라 없이도 갑작스런 수요 급증을 처리할 수 있습니다. 또한 우선 순위가 높은 작업을 먼저 실행할 수 있으므로 공유 환경의 예측 가능성이 향상됩니다.

이 서비스는 리소스 할당을 동적으로 관리하고 대기열을 통한 실행을 제어함으로써 성능, 확장성 및 비용 효율성 간의 균형을 제공합니다.

OCI Batch의 핵심 구성요소

OCI Batch는 일괄 처리 기능을 제공하기 위해 함께 작동하는 핵심 구성요소 세트를 중심으로 구축되었습니다.

실제 사례: 비디오 처리 파이프라인

수천 개의 비디오를 처리해야 하는 시나리오를 고려해 보십시오. 예를 들어, 형식 변환, 축소판 생성 또는 필터 적용 등이 있습니다.

OCI Batch를 사용하여 각 비디오를 작업 내에서 별도의 작업으로 처리할 수 있습니다. 이러한 작업은 여러 컴퓨팅 리소스에서 병렬로 실행될 수 있으므로 총 처리 시간이 크게 단축됩니다. 워크로드 수요가 증가함에 따라 OCI Batch는 작업 처리를 위해 추가 컴퓨트 용량을 자동으로 프로비저닝합니다. 처리가 완료되면 결과가 저장되고 모니터링을 위해 로그가 생성됩니다. 이 패턴은 데이터 파이프라인, 머신 러닝 워크로드, 엔지니어링 시뮬레이션 등 다양한 사용 사례에 적용할 수 있습니다.

필수 조건

IAM 정책 예에 따라 OCI 일괄 처리 서비스가 필요한 OCI 서비스에 액세스할 수 있도록 허용합니다.

또한 작업을 생성하는 데 사용할 경우 OCI CLI를 다운로드해야 합니다.

작업 1. 뱃치 컨텍스트 생성

일괄 처리 컨텍스트는 일괄 처리 작업 로드의 최상위 구성 계층입니다. 여기에는 네트워킹, 플리트, 자격, 작업 우선순위 설정 및 로깅 구성이 포함됩니다.

뱃치 컨텍스트를 생성하려면 뱃치 서비스로 이동하고 뱃치 컨텍스트를 선택한 다음 뱃치 컨텍스트 생성을 선택합니다. 환경에 따라 다음 세부 정보를 입력합니다.

  1. 이름
  2. 구획
  3. 설명
  4. VCN
  5. 서브넷
  6. 플리트
  7. 특별 약정(선택 사항)
  8. 작업 우선순위 구성(선택사항)
  9. 로깅 구성요소

    뱃치 컨텍스트 생성

작업 2. 작업 풀 생성

작업 풀은 단순히 작업에 대한 논리적 컨테이너입니다. 작업을 실행할 때 작업을 생성할 작업 풀을 선택합니다. 작업 풀을 만들려면 다음 구성만 있으면 됩니다.

  1. 이름
  2. 설명
  3. 구획

    작업 풀 생성

작업 3. 태스크 프로파일 생성

작업 프로파일은 작업에 필요한 최소 컴퓨트 리소스(예: 1개 OCPU 및 16GB 메모리)를 정의하는 재사용 가능한 구성입니다. 각기 다른 리소스 요구 사항에 해당하는 여러 개의 프로파일을 만들 수 있습니다. 작업 프로파일을 만들려면 다음 구성이 필요합니다.

  1. 이름
  2. 설명
  3. 최소 OCPU - 이 예에서는 1로 설정할 수 있습니다.
  4. 최소 메모리(GB) - 이 예에 대해 8로 설정할 수 있습니다.

    태스크 프로파일 생성

작업 4. 로컬 환경 설정 및 컨테이너 이미지 푸시

  1. GitHub에서 코드를 가져와 올바른 디렉토리로 이동합니다.

     git clone https://github.com/oracle-devrel/technology-engineering.git
     cd technology-engineering/app-dev/developer-tools-and-lowcode/batch/video-transcoding/ 
    
  2. OCI Container Registry(OCIR)에서 Repository를 생성합니다.

    컨테이너 레지스트리 작성

  3. 컨테이너 이미지를 OCIR로 푸시합니다. 이미지 경로는 영역, 테넌시 네임스페이스, 저장소 이름 및 이미지 태그(iad.ocir.io/<tenancy-namespace>/convert_mp4_to_avi:latest)와 일치해야 합니다.

     docker build -t <image>:<tag> .
     docker push <image>:<tag>
    

    컨테이너를 OCIR로 푸시

  4. 입력 및 출력 비디오에 대한 오브젝트 스토리지 버킷을 생성합니다.

    입력 버킷 생성

    출력 버킷 생성

  5. 오브젝트 스토리지에 비디오 파일 업로드

작업 5. 작업 환경 생성

작업 환경은 작업에 대한 런타임 구성입니다. 작업 환경을 설정하려면 다음이 필요합니다.

  1. 이름
  2. 설명
  3. 보안 컨텍스트:
    1. 사용자 ID: 1로 설정
    2. 그룹 ID: 1로 설정합니다.
    3. 파일 시스템 그룹 ID: 1로 설정합니다.
  4. 작업 디렉토리: /video로 설정

    작업 환경 생성

작업 6. 작업 제출

일괄 처리 서비스에 작업을 제출하는 방법은 여러 가지가 있습니다. 이 자습서에서는 OCI CLI를 사용합니다.

  1. video_conversion_job.json라는 파일을 생성합니다.
  2. 다음을 복사하여 video_conversion_job.json에 붙여넣습니다.
     {
     "batchJobPoolId": "JOB_POOL_OCID",
     "compartmentId": "COMPARTMENT_ID",
     "description": "Task to convert video from MP4 to AVI format",
     "displayName": "convert_video",
     "maxWaitSeconds": 0,
     "tasks": [
         {
         "batchJobPoolId": "JOB_POOL_OCID",
         "compartmentId": "COMPARTMENT_ID",
         "description": "Task to convert video from MP4 to AVI format",
         "displayName": "convert_video",
         "maxWaitSeconds": 0,
         "tasks": [
             {
               "batchTaskEnvironmentId": "TASK_ENVIRONMENT_OCID",
               "batchTaskProfileId": "TASK_PROFILE_OCID",
               "description": "Task to convert video from MP4 to AVI format",
               "environmentVariables": [
                 {
                   "name": "INPUT_BUCKET",
                   "value": "input_bucket"
                 },
                 {
                   "name": "INPUT_OBJECT",
                   "value": "input.mp4"
                 },
               {
                   "name": "OCI_BUCKET",
                   "value": "output_bucket"
               },
               {
                   "name": "OUTPUT_FILENAME",
                   "value": "output.avi"
               },
               {
                   "name": "OCI_NAMESPACE",
                   "value": "TENANCY_NAMESPACE"
               },
               {
                   "name": "OCI_REGION",
                   "value": "REGION"
               }
               ],
               "fleetAssignmentPolicy":
               {
                   "type": "BEST_FIT"
                 },
               "name": "convert_video",
               "type": "COMPUTE"
             }
         ],
         "waitForState": [
           "ACCEPTED"
         ],
         "waitIntervalSeconds": 0
              
    

    환경에 따라 다음을 바꿉니다.

    • 작업 풀 OCID
    • 컴파트먼트_ID
    • 태스크_환경_OCID
    • 태스크 프로파일 OCID
    • 테넌시_네임스페이스
    • REGION
  3. 다음 명령을 실행합니다.

     oci batch batch-job create --from-json file://video_conversion_job.json
    

    작업을 완료하는 데 최대 10분이 걸립니다. OCI 콘솔에서 작업을 살펴보고 해당 작업이 속한 단계를 확인합니다.

작업 7. 결과 검증

  1. OCI 콘솔에서 Object Storage로 이동합니다.
  2. 출력 버킷을 찾아 트랜스코딩된 비디오가 있는지 확인합니다.

OCI Batch와 기존 방식 비교

기존의 일괄 처리 솔루션에는 인프라 관리, 스케줄러 구성, 수동 확장 처리가 필요한 경우가 많습니다. 따라서 복잡성과 운영 오버헤드가 증가합니다. 그러나 OCI Batch는 스케줄링, 실행 및 리소스 프로비저닝이 자동으로 처리되는 관리형 환경을 제공하여 이러한 문제를 제거합니다. 이를 통해 심층적인 인프라 전문 지식 없이도 대규모 워크로드를 보다 쉽게 실행할 수 있습니다.

모범사례

OCI Batch를 효과적으로 사용하려면 확장성을 염두에 두고 워크로드를 설계해야 합니다. 큰 작업을 작은 작업으로 분리하면 병렬 실행이 향상되고 성능이 향상됩니다. 리소스가 효율적으로 할당되도록 적절한 작업 프로파일을 정의하는 것도 중요합니다. 작업 실행에 대한 가시성을 보장하려면 적절한 로깅 및 모니터링을 사용으로 설정해야 합니다. 작업 풀 및 우선 순위를 사용하면 특히 공유 환경에서 중요한 작업 로드를 적시에 실행할 수 있습니다.

결론

OCI Batch 서비스는 클라우드에서 일괄 처리 워크로드를 실행할 수 있는 간소화되고 확장 가능한 방법을 제공합니다. 단일 서비스 내에서 작업 통합관리, 일정 관리 및 컴퓨팅 프로비저닝을 처리함으로써 운영 복잡성을 줄이고 효율성을 개선합니다. 대규모 컴퓨팅 집약적 워크로드를 처리하는 조직의 경우 OCI Batch는 팀이 인프라 관리가 아닌 결과 제공에 집중할 수 있도록 하는 안정적이고 유연한 솔루션을 제공합니다.

관련 링크

승인

추가 학습 자원

docs.oracle.com/learn에서 다른 랩을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 education.oracle.com/learning-explorer를 방문하여 Oracle Learning Explorer가 되십시오.

제품 설명서는 Oracle Help Center를 참조하십시오.