일괄처리 작업 작업부하
IBM Cloud® Code Engine 은 일괄처리 작업 또는 애플리케이션 워크로드를 포함하여 컨테이너화된 워크로드를 실행하는 완전히 관리되는 서버리스 플랫폼입니다. Code Engine 배치 작업 실행에 대해 알아보세요.
일괄처리 작업 작업부하의 개념
Code Engine 의 작업은 실행 코드의 인스턴스를 하나 이상 실행합니다. HTTP 요청을 처리하는 애플리케이션과 달리 작업은 한 번 실행되고 종료되도록 설계되어 작업 워크로드를 실행하는 데 필요한 리소스를 확보할 수 있습니다.
여러 인스턴스를 정의하여 일괄처리 작업을 스케일링할 수 있습니다. 워크로드를 병렬 태스크로 분할하여 계산 시간을 줄일 수 있습니다. 작업 인스턴스 내에서 실패한 워크로드를 처리하기 위해 자동 재시도로 실행되도록 작업을 설정할 수 있습니다. Object Storage 이벤트와 같은 이벤트를 사용하여 수동으로, 프로그래밍 방식으로 일괄처리 작업을 트리거할 수 있습니다.
작업을 만들 때 작업이 실행될 때마다 사용되는 워크로드 구성 정보를 지정할 수 있습니다.
일반적인 배치 작업 워크로드에는 다음이 포함됩니다:
- 머신 모델 학습
- 음성 분석 또는 이미지 인식과 같은 파일 분석
- 파일 압축 또는 압축 해제
- 정보 보관
작업을 작성할 때 작업이 실행될 때마다 사용될 워크로드 구성 정보를 지정할 수 있습니다.
일괄처리 작업의 라이프사이클은 무엇입니까?
일괄처리 작업을 제출하면 실행이 완료됩니다. 일반적으로 일괄처리 작업은 입력 데이터를 검색하고 계산 작업을 수행하며 결과를 지속적 데이터 저장소에 저장합니다. 일괄처리 작업이 완료되면 작업을 실행하는 데 사용되는 자원이 제거되고 대기 자원에 대해 비용이 발생하지 않습니다.
작업 배열과 작업 배열 상태는 무엇입니까?
작업 배열 사양은 작업 및 작업 실행 구성의 일부입니다. 작업 배열에는 두 가지 기능이 있습니다
- 작업 실행을 위해 동시에 시작되는 인스턴스의 수를 결정합니다.
- 사용자 코드가 제공된 개별 배열 인덱스를 기반으로 각 인스턴스가 수행해야 하는 작업의 일부를 결정할 수 있도록 합니다.
작업 배열의 크기를 지정하거나 배열 인덱스 집합을 지정하여 작업 배열을 지정합니다
-
배열 크기를 값 n 으로 지정하면 작업 실행을 위해 시작된 인스턴스 수가 n이 됩니다. 각 인스턴스에는 환경 변수
JOB_INDEX를 사용하여 배열 인덱스(0, 1, 2 등 n-1까지 )가 제공됩니다.JOB_ARRAY_SIZE환경 변수는 사용자가 특정 값을 지정하지 않는 한 n으로 설정됩니다. -
하나 이상의 배열 인덱스 집합을 지정하면 시작되는 인스턴스 수가 인덱스 수와 같습니다. 각 인스턴스는 환경 변수
JOB_INDEX를 사용하여 지정된 인덱스 중 하나를 제공받습니다.JOB_ARRAY_SIZE환경 변수는 사용자가 특정 값을 지정하지 않는 한 지정된 인덱스 수로 설정됩니다.
JOB_ARRAY_SIZE 환경 변수도 사용자 코드에 사용할 수 있으며, 기본적으로 인덱스 수로 설정되어 있습니다.
인스턴스가 성공적인 반환 코드로 종료되면, 관련된 배열 인덱스의 상태가 완료로 변경됩니다. 그렇지 않으면, Code Engine 구성된 재시도 횟수가 아직 초과되지 않은 경우 동일한 색인에 대한 새로운 인스턴스를 시작합니다. 인스턴스가 실패하고 더 이상의 재시도가 허용되지 않으면, 관련된 배열 인덱스의 상태가 실패로 변경됩니다.
Code Engine 일괄처리 작업에 대한 작업의 주요 기능은 무엇입니까?
Code Engine에서 일괄처리 작업에 대한 작업을 수행하는 방법에 대해 자세히 알아보려면 다음 주제를 검토하십시오.
격리
Code Engine은 테넌트가 동일한 네트워크 및 컴퓨팅 인프라를 공유하는 다중 테넌트 지역 서비스입니다. 특히 네트워크 및 컴퓨팅 인프라는 공유 리소스이며 일부 관리 컴포넌트는 모든 테넌트에 공통입니다. 그러나 테넌트 및 해당 워크로드는 Code Engine 프로젝트를 사용하여 서로 격리됩니다. Code Engine 는 프로젝트 간의 통신을 방지하여 다중 테넌트 환경 내의 애플리케이션에 격리를 제공합니다. 또한 권한이 부여된 사용자만 애플리케이션 또는 기타 Code Engine 워크로드와 같은 프로젝트 자원에 대해 특정 조작을 수행할 수 있도록 자원 레벨에서 수행되는 액세스 제어가 있습니다.
워크로드 격리에 대한 자세한 정보는 Code Engine 워크로드 격리 를 참조하십시오.
로깅
로깅이 활성화된 상태에서 콘솔에서 ' Code Engine 작업으로 작업하면 로그가 ' Code Engine ' 프로젝트와 연결된 ' IBM Cloud Logs 서비스 인스턴스로 전달됩니다. IBM Cloud Logs 서비스 인스턴스에서는 로그가 색인화되어 생성된 모든 메시지를 전체 텍스트로 검색하고 특정 필드에 따라 편리하게 쿼리할 수 있습니다. 작업에 대한 로그 가져오기 를 참조하십시오.
시스템 이벤트 정보는 작업을 실행할 때 문제를 해결하는 데도 도움이 될 수 있습니다. CLI를 사용하여 시스템 이벤트 정보를 볼 수 있습니다. 작업에 대한 시스템 이벤트 정보 가져오기 를 참조하십시오.
자세한 정보는 로그 보기를 참조하십시오.
큐에 넣기
제출된 일괄처리 작업은 자동으로 큐에 대기되며 디스패치될 때까지 보류 상태에 있습니다. 일괄처리 작업은 Code Engine 프로젝트에서 정의한 대로 사용 가능한 계산 리소스를 기반으로 실행됩니다. pending 상태의 일괄처리 작업은 큐에서 제거할 수 있습니다. Code Engine 콘솔 또는 명령행 인터페이스를 사용하여 보류 중이거나 실행 중이거나 완료된 일괄처리 작업을 모니터할 수 있습니다.
재시도
각 작업 인스턴스가 완료될 때까지 실행됩니다. 그러나 워크로드 코드는 작업 실행 중에 오류가 발생할 수 있습니다. 작업 인스턴스가 0이 아닌 리턴 코드로 완료되면 Code Engine 가 작업 인스턴스를 다시 시작합니다. Code Engine를 사용하여 실패한 작업 인스턴스를 다시 시작하지 않도록 재시도 횟수를 제한하도록 지정할 수 있습니다.
일괄처리 작업 실행
코드가 로컬 파일이나 Git 리포지토리에 소스로 존재하든, 공개 또는 비공개 레지스트리에 존재하는 컨테이너 이미지이든, Code Engine 에서는 코드를 작업으로 실행할 수 있는 간소화된 방법을 제공합니다.
다음 방법으로 Code Engine 에서 일괄처리 작업을 작성하고 실행할 수 있습니다.
- 기존 컨테이너 이미지를 실행합니다. 작업을 작성하고 작업을 제출할 때 사용할 이미지에 대한 참조를 제공하십시오. 예를 들어, 작업 작성 및 실행 을 참조하십시오.
- 소스 코드로 시작하십시오. Git 저장소 또는 로컬 워크스테이션에 있는 소스 코드로 시작하는 경우 소스의 위치를 가리키면 Code Engine 가 이미지 빌드를 처리합니다. 저장소 소스 코드에서 작업 작성 및 로컬 소스 코드에서 작업 작성 을 참조하십시오.
자세한 정보는 작업에 대한 작업 을 참조하십시오.
스케일링
Code Engine (일괄처리 작업) 의 작업은 하나 이상의 작업 인스턴스로 구성됩니다. 작업 인스턴스가 서로 독립적으로 실행되는 동안 동일한 코드를 실행합니다. 분석할 레코드가 100개있는 데이터베이스가 있다고 가정합니다. 각 작업 인스턴스가 각각 10개의 레코드를 분석하도록 작업을 실행할 수 있습니다. 예를 들어, 첫 번째 작업 인스턴스는 레코드 0-9를 분석하고 두 번째 작업 인스턴스는 레코드 10-19를 분석하는 식입니다.
이 예제에서 각 작업 인스턴스는 시스템 제공 작업 입력 매개변수 JOB_INDEX 를 각 작업 인스턴스별로 분석할 데이터베이스 레코드의 범위를 계산하는 데 사용할 수 있는 환경 변수로 수신합니다. 작업 인스턴스 수는 일괄처리 작업이 제출될 때 지정됩니다.
일괄처리 작업을 실행할 때 시작 시간 동안 인스턴스가 시작되는 동안 작업 인스턴스가 보류 상태로 유지될 수 있습니다. 시스템이 이 작업 실행과 관련된 자원 요구를 충족하도록 조정하므로 시스템 및 네트워크 인프라로 인해 작업 인스턴스의 보류 시간이 달라질 수 있습니다. 시스템 인프라가 높은 사용량의 요구에 응답하는 경우 작업 인스턴스가 JIT (JIT) 로 프로비저닝되기 때문에 작업 시작이 몇 분 동안 지연될 수 있습니다.
상태
모든 작업 실행 인스턴스가 완료되면 일괄처리 작업은 Succeeded 상태가 됩니다.
하나 이상의 작업 실행 인스턴스가 재시도 한계에 도달하면 일괄처리 작업이 Failed 상태가 됩니다. 또한 작업을 완료하는 데 시간이 너무 오래 걸리는 경우 최대 실행 시간에 도달할 때마다 작업은 Failed 상태입니다. 자세한 정보는 작업 상태 를 참조하십시오.
유사한 일괄처리 작업 제출
작업을 작성할 때 작업이 실행될 때마다 사용될 워크로드 구성 정보를 지정할 수 있습니다. Code Engine를 사용하여 일괄처리 작업에 대한 공통 구성 정보 세트를 사용하는 경우, 작업 제출을 통해 추가 매개변수를 지정하여 이 특정 작업 제출에 대한 일괄처리 작업 매개변수를 겹쳐쓸 수 있습니다.
이벤트가 있는 배치 작업 트리거
일괄처리 작업은 주기적 타이머, Object Storage 이벤트 또는 Kafka 주제와 같은 이벤트를 기반으로 자동으로 제출될 수 있습니다.
파일이 변경되거나 Object Storage 버킷에 추가될 때마다 이벤트를 생성하는 IBM Cloud Object Storage 버킷에 대한 구독을 기반으로 일괄처리 작업을 자동으로 트리거하려 한다고 가정합니다. Object Storage 이벤트를 작성하고 이벤트를 사용하여 일괄처리 작업을 트리거하는 방법에 대한 정보는 Code Engine cos-event-job 샘플 을 검토하십시오.
Code Engine 작업에서 이벤트 사용에 대한 자세한 정보는 주기적 타이머(cron)이벤트 생성자에 대한 작업, IBM Cloud Object Storage 이벤트 생성자에 대한 작업 및 Kafka 이벤트 생성자에 대한 작업 주제를 참조하십시오.
더 많은 코드 예를 찾고 계십니까? IBM Cloud Code Engine GitHub 저장소의 샘플을 확인하십시오.
일괄처리 작업을 시작하는 방법은 무엇입니까?
icr.io/codeengine/firstjob 샘플 이미지를 사용하여 단순 Code Engine 일괄처리 작업 애플리케이션을 작성하고 실행하려면 첫 번째 Code Engine 작업 실행 을 참조하십시오.
또한 일괄처리 작업 학습서를 시도할 수 있습니다. 작업 실행 및 업데이트 를 참조하십시오.
일괄처리 작업에 대한 작업을 자세히 수행하려면 작업 및 작업 실행에 대한 작업 을 참조하십시오.