이 Codelab 정보
1. 소개
최종 업데이트: 2022년 5월 6일
Cloud Run 작업
Cloud Run 작업을 사용하면 Cloud Run에서 장기 실행 작업을 실행할 수 있습니다.
이 Codelab은 철저한 정보를 바탕으로 Cloud Run 작업을 사용하는 경우와 방법에 관한 지식을 제공합니다. 본 자료는 Cloud Run 작업 시작하기에 대한 준비를 하며, 여기서 Google Cloud Console을 사용해 컨테이너를 빌드하고 Cloud Run 작업을 생성 및 실행하며 작업을 수행합니다
과정 내용
- Cloud Run 작업이란 무엇인가요?
- Cloud Run 작업을 사용해야 하는 경우
- Cloud Run 작업 워크플로
- Cloud Run 작업을 만드는 방법
- Cloud Run 작업 실행 방법
- 일정에 따라 작업을 실행하는 방법
- 실행 상태 확인 방법
- 작업 및 작업 실행을 관리하는 방법
- 작업 완료를 감지하는 방법
- 작업을 업데이트하는 방법
2. Cloud Run 작업 개요
Cloud Run에서 코드를 실행하는 방법에는 두 가지가 있습니다. 서비스로 계속 실행할 수 있습니다.
또는 코드가 작업을 실행한 후 중지되는 경우 Cloud Run 작업을 사용할 수 있습니다.
Cloud Run 서비스는 HTTP 요청을 리슨할 수 있는 컨테이너에는 적합하지만, Cloud Run 작업은 데이터 처리 및 관리 작업과 같이 요청이 실행되지 않고 완료된 요청에는 적합하지 않습니다.
Cloud Run 작업의 다른 사용 사례는 다음과 같습니다.
- 데이터베이스 실행 또는 기타 운영 작업 수행
- Cloud Storage 버킷의 모든 파일을 병렬 처리했습니다.
- 매월 인보이스를 작성하고 전송합니다.
- 4시간마다 데이터베이스 쿼리 결과를 XML로 저장하고 파일을 업로드합니다.
장기 실행 작업을 지원하는 다른 플랫폼에 비해 Cloud Run 작업은 생성 후 빠르게 시작됩니다. 단순한 컨테이너는 컨테이너 복잡성에 따라 10초밖에 걸리지 않습니다. 따라서 Cloud Run 작업은 VM이 시작될 때까지 몇 분 정도 기다려야 하는 상황에 적합합니다.
3. Cloud Run 작업 워크플로
Cloud Run 작업 워크플로는 간단한 두 단계로 구성됩니다.
- 작업을 만듭니다. 작업은 컨테이너 이미지와 같이 작업을 실행하는 데 필요한 모든 구성을 캡슐화합니다.
- 작업을 실행합니다. Cloud Console 또는 gcloud CLI를 사용하여 명령줄에서 작업을 실행합니다.
작업은 코드 실행을 위해 하나의 컨테이너 인스턴스를 시작하거나 실행할 태스크 수를 지정하여 동일한 여러 독립 컨테이너 인스턴스를 동시에 시작할 수 있습니다. 예를 들어 Cloud Storage에서 1,000개의 이미지를 읽고 크기를 조절하고 자르는 경우 여러 컨테이너 인스턴스로 동시에 처리하는 것보다 연속으로 처리하는 속도가 느립니다.
4. 작업 만들기
작업을 만들려면 다음 명령어를 사용하여 Cloud Console 또는 gcloud CLI를 사용합니다.
gcloud beta run jobs create JOB_NAME --image IMAGE_URL OPTIONS
다음과 같이 바꿉니다.
JOB_NAME
을 만들려는 작업의 이름으로 바꿉니다.IMAGE_URL
: 컨테이너 이미지를 참조합니다.- 원하는 경우
OPTIONS
를 사용 가능한 플래그로 바꿉니다. 전체 플래그 목록을 보려면gcloud beta run jobs create --help
를 실행합니다.
플래그의 예는 다음과 같습니다.
--tasks
: 실행할 태스크 수- 실패한 작업을 다시 시도할 횟수입니다.
-–max retries
- 동시에 실행할 수 있는 최대 작업 수:
--parallelism
--execute-now
: 작업이 생성된 직후 작업을 실행합니다.--async
: 새 실행을 만든 직후 작업을 종료합니다.
일반적인 Cloud Run 기능을 사용하여 Cloud Run 작업을 보호하고 다른 Google Cloud Platform (GCP) 환경에 연결할 수도 있습니다.
5. 작업 실행
작업을 실행하려면 다음 명령어를 사용하여 Cloud Console 또는 gcloud CLI를 사용하면 됩니다.
- Cloud Console에서 작업 이름을 클릭하고 페이지 상단의 실행을 클릭합니다.
- gcloud CLI에서 다음 명령어를 사용합니다.
gcloud beta run jobs execute JOB_NAME EXECUTION_OPTIONS
JOB_NAME
을 작업 이름으로 바꿉니다. 선택적으로 EXECUTION_OPTIONS
를 대체하여 다음을 지정합니다.
- 작업을 만든 후 즉시 작업 실행
gcloud beta run jobs create JOB_NAME --execute-now
- 종료 전에 실행이 완료될 때까지 대기하려는 경우
gcloud beta run jobs create JOB_NAME --wait
- 새 실행을 만든 후 즉시 종료하려는 경우
gcloud beta run jobs create JOB_NAME --async
6. 일정에 따라 작업 실행
일정에 따라 작업을 실행하려면 Cloud Scheduler를 사용하세요.
예를 들어, 정기적으로 인보이스를 만들고 전송하거나 데이터베이스 쿼리 결과를 XML로 저장하고 몇 시간마다 파일을 업로드할 수 있습니다.
Cloud Scheduler를 사용하면 작업을 예약하고 한곳에서 모든 자동화 작업을 관리할 수 있습니다.
- 보장, 실행, 재시도가 있을 경우, 매주, 일 또는 시간 단위로 일괄 작업과 빅데이터 작업을 동시에 실행합니다.
- 클라우드 인프라 실행과 관련된 지루한 작업 대부분을 안정적이고 완전 관리형 방식으로 자동화합니다.
- 거의 모든 것을 자동화하세요.
- 단일 UI 또는 명령줄 인터페이스에서 모든 작업을 보고 관리합니다.
프로젝트에서 Cloud Scheduler를 사용하도록 환경을 설정한 후에는 Cloud Run 작업을 만든 다음 이름, 리전, 설명, 빈도, 시간대를 입력하여 일정을 정의합니다. 그러면 Cloud Scheduler가 지정된 빈도로 Cloud Run 작업을 실행합니다.
7. 작업 실행 상태 보기
작업이 실행되면 Cloud Logging 로그에서 로그를 확인하고 Cloud Monitoring에서 모니터링 데이터를 볼 수 있습니다.
로그를 보려면 다음을 수행합니다.
- Cloud Console에서 Cloud Run 페이지 사용
- Cloud Console에서 Cloud Logging 로그 탐색기를 사용합니다.
이 두 가지 방법 모두 Cloud Logging에 저장된 동일한 로그를 검사하지만 Cloud Logging 로그 탐색기는 더 많은 세부정보와 더 많은 필터링 기능을 제공합니다.
Cloud Monitoring은 Cloud Run 성능 모니터링 및 측정항목과 함께 알림을 제공하여 특정 측정항목 기준을 초과하면 알림을 전송합니다. Cloud Run은 Cloud Monitoring과 자동으로 통합되어 설정이나 구성이 필요하지 않습니다. 즉, 실행 시 Cloud Run 작업의 측정항목이 자동으로 캡처됩니다.
Cloud Monitoring 또는 Console의 Cloud Run 페이지에서 측정항목을 볼 수 있습니다. Cloud Monitoring은 더 많은 차트와 필터링 옵션을 제공합니다.
8. 작업 및 작업 실행 관리
작업을 관리하려면 Cloud Console 또는 gcloud CLI를 사용하여 다음 목록을 확인하세요.
다음과 같은 작업도 할 수 있습니다.
- 실행 중인 작업 실행을 삭제하여 실행합니다.
- 실행 중이 아닌 작업 실행을 삭제합니다.
- 취업정보를 삭제합니다.
작업을 삭제하면 해당 작업의 대기 중인 모든 작업 실행이 취소되지만 로그 보관 기간(일반적으로 30일)의 나머지 기간 동안 작업 로그 및 모니터링 데이터를 계속 사용할 수 있습니다. Cloud Monitoring에서 데이터 모니터링을 계속 사용할 수 있습니다.
9. 작업 실행 완료 감지
작업 실행이 완료되었음을 감지하는 방법에는 여러 가지가 있습니다.
--wait
플래그로 작업을 실행하면 작업이 완료되면 gcloud CLI가 종료됩니다.
gcloud beta run jobs execute JOB_NAME --wait
- REST API의 executes.get 엔드포인트를 폴링하여
Completed
상태 조건이True
일지 확인합니다. - 실행이 완료되면 완성된 로그 항목은 다음과 같습니다.
Completed condition status changed to True for Execution sleepy-l8zjp.
이 로그 메시지를 찾으려면 Cloud Logging에서 다음 쿼리를 실행합니다.
resource.type="cloud_run_revision"
resource.labels.revision_name="EXECUTION_NAME" log_name="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event"
protoPayload.response.status.conditions.type="Completed"
protoPayload.response.status.conditions.status="True"
출력을 작성하는 위치를 폴링하여 출력이 표시되는 시점을 감지할 수도 있습니다. 하지만 이는 출력 작업이 작업을 마지막으로 실행해야 하는 경우에만 올바르게 작동합니다. 예를 들어 출력을 작성한 후 정리 작업을 수행하는 경우에도 출력 작성 후에도 작업이 실패할 수 있습니다.
10. 작업 업데이트
작업을 만들 때 태그 또는 정확한 다이제스트로 컨테이너 이미지를 지정할 수 있습니다.
- 태그 예:
gcr.io/my-project/my-image:tag
- 다이제스트 예시:
gcr.io/my-project/my-image@sha256:41f34ab970ee...
둘 다 지정되지 않으면 :latest
태그가 사용됩니다.
최신 버전의 코드를 실행하도록 작업을 업데이트하는 방법은 태그 또는 다이제스트로 컨테이너 이미지를 지정했는지에 따라 다릅니다.
태그를 포함한 컨테이너 이미지를 지정하면 Cloud Run은 작업을 실행할 때 이미지를 특정 다이제스트로 결정합니다. 즉, 다음번에 작업을 실행할 때 최신 버전의 컨테이너를 가져오도록 작업을 명시적으로 업데이트할 필요가 없습니다.
작업이 실행될 때마다 특정 컨테이너 다이제스트를 사용하려면 정확한 다이제스트가 포함된 컨테이너 이미지를 지정하면 됩니다. 이 경우 작업에서 변경한 코드를 수락하려면 다른 다이제스트를 사용하도록 작업을 명시적으로 업데이트해야 합니다.
gcloud alpha run jobs update JOB_NAME --image NEW-IMAGE
컨테이너 이미지를 어떻게 지정하든 실행의 모든 태스크는 항상 동일한 다이제스트를 사용합니다.
업데이트가 적용되는 동안에는 새 실행을 시작할 수 없습니다. 업데이트가 완료될 때까지 기다려야 하며 일반적으로 몇 초 정도 걸립니다. 업데이트에 실패하면 새 실행을 만들 수 없습니다. 먼저 다시 업데이트하여 작업을 정상 상태로 되돌려야 합니다.
11. 축하합니다
축하합니다. Cloud Run 작업을 사용하는 시기와 방법을 배웠습니다.
배운 내용은 다음과 같습니다.
- Cloud Run 작업이란 무엇인가요?
- Cloud Run 작업을 사용해야 하는 경우
- Cloud Run 작업 워크플로
- Cloud Run 작업을 만드는 방법
- Cloud Run 작업 실행 방법
- 일정에 따라 작업을 실행하는 방법
- 실행 상태 확인 방법
- 작업 및 작업 실행을 관리하는 방법
- 작업 완료를 감지하는 방법
- 작업을 업데이트하는 방법
다음 단계
도움말
전체 gcloud 참조를 보려면 help 명령어를 사용합니다.
gcloud alpha run jobs --help
gcloud alpha run jobs executions --help