Cloud Tasks 개요

이 페이지에서는 Cloud Tasks 태스크 및 큐의 정의, 사용하는 경우, 사용 방법을 설명합니다. Cloud Tasks를 사용하면 기본 애플리케이션 흐름 외부에서 독립적으로 수행할 수 있는 작업을 분리하여 핸들러를 사용하여 비동기식으로 처리되도록 보낼 수 있습니다. 이처럼 독립적인 작업을 태스크라고 합니다. 예를 들어 사용자 요청을 처리할 때 데이터베이스를 업데이트해야 하지만 이는 시간이 오래 걸릴 수 있습니다. 그 세부정보를 태스크로 오프로드하면 요청으로부터 더 신속하게 처리할 수 있습니다.

오프로드한 태스크는 에 추가되고, 태스크가 성공적으로 실행될 때까지 큐는 태스크를 지속합니다. 또한 큐는 초기 구성을 기반으로 일종의 전달 흐름 제어 역할을 할 수 있습니다. 큐를 생성하여 구성하면 Cloud Tasks 서비스에서 큐를 관리합니다. 태스크가 추가되면 큐에서 태스크를 전달하고 작업자가 안정적으로 처리하도록 합니다. 사용자 대상 지연 시간 비용, 서버 다운, 리소스 사용 제한, 재시도 관리와 같은 절차 관련 복잡성은 서비스를 통해 처리됩니다.

작업 자체는 고유한 이름 및 구성 정보뿐만 아니라 요청을 처리하는 데 필요한 페이로드라고 하는 초기 요청의 모든 데이터(선택사항)로 이루어집니다. 페이로드는 요청 본문으로 전송되므로 페이로드를 포함하는 작업은 POST 또는 PUT를 HTTP 메소드로 사용해야 합니다.

App Engine 표준 환경 1세대 런타임 사용자는 App Engine Task Queue API를 통해 Cloud Tasks 서비스에 액세스해야 합니다. 이 방법에 대한 자세한 내용은 자바 8, Python 2.7, Go 1.9 또는 PHP 5.5 문서를 참조하세요. App Engine 표준 환경 2세대 런타임, 가변형 환경, 기타 플랫폼 사용자는 이제 Cloud Tasks API를 사용할 수 있습니다.

Cloud Tasks API를 사용하여 Cloud Tasks 서비스에 액세스하려면 생성된 Cloud Tasks 큐를 호스팅하는 App Engine 앱이 포함된 프로젝트가 있어야 합니다. 이 앱은 Cloud Tasks 요청의 LOCATION_ID 매개변수로 사용되는 특정 리전에 위치하므로 기록해 두세요. 앱은 개발자가 만드는 큐의 위치로 사용됩니다. 기본 Cloud Tasks 서비스는 동일한 위치에서 실행됩니다.

사용 사례

일반적인 사용 사례는 다음과 같습니다.

  • 데이터베이스 업데이트와 같이 잠재적으로 속도가 느린 백그라운드 작업을 작업자에게 위임하여 사용자 응답 속도를 높입니다.
  • 예상치 못한 프로덕션 이슈가 발생하는 경우 요청을 보존합니다.
  • 사용자 대상이 아닌 작업을 기본 사용자 흐름에서 삭제하여 트래픽 급증을 원활하게 처리합니다.
  • 타사 API 호출 비율 관리

HTTP Target이 있는 Cloud Tasks 큐

일반 HTTP Targets의 경우 Cloud Tasks 서비스는 다음과 같은 일반 HTTP 엔드포인트에 있는 작업 요청을 작업자에게 전달합니다. Cloud Functions, Cloud Run, GKE, Compute Engine 또는 작업 구성 방식에 따라 온프렘 웹 서버를 포함합니다. 이러한 큐는 안정적이고 구성 가능한 속도로 요청을 전송합니다. 이를 통해 태스크가 안정적으로 실행됩니다. 성공 시 모든 작업자는 10분 기한 전에 HTTP 응답 코드(200-299)를 Cloud Tasks 서비스에 보내야 합니다. 다른 응답이 전송되는 경우나 응답이 없는 경우 태스크를 다시 시도합니다.

HTTP 기반 큐

Target은 증가하는 작업자를 관리하고 완료되면 태스크를 삭제해야 합니다.

Target에 인증이 필요한 경우 최대 2개의 서비스 계정을 설정해야 합니다. 이때 하나는 클라이언트인 애플리케이션용이고 다른 하나는 큐 자체용입니다. 두 계정 모두에 필수 권한을 부여하고 클라이언트 서비스 계정의 식별자를 태스크 요청에 포함시켜야 합니다. 자세한 내용은 HTTP Target 태스크 만들기를 참조하세요.

App Engine Target이 있는 Cloud Tasks 큐

App Engine Target의 경우 Cloud Tasks 서비스는 태스크(또는 드물게 큐 자체) 구성 방식에 따라 App Engine에 있는 작업자에게 태스크 요청을 전달합니다. 이러한 큐는 안정적이고 구성 가능한 속도로 요청을 전송합니다. 이를 통해 태스크가 안정적으로 실행됩니다. 성공 시 모든 작업자는 서비스의 인스턴스 확장 유형에 따라 기한(자동 확장의 경우 10분, 수동 확장의 경우 최대 24시간) 전에 HTTP 응답 코드(200-299)를 Cloud Tasks 서비스에 보내야 합니다. 다른 응답이 전송되는 경우나 응답이 없는 경우 작업을 다시 시도합니다.

App Engine 기반 큐

Cloud Tasks 서비스는 태스크의 수많은 프로세스를 관리하므로 트래픽에 맞게 작업자를 증가 및 감소시키고 완료되면 태스크를 삭제합니다.

워크플로

일반적인 워크플로는 다음과 같습니다.

  1. 태스크를 처리할 작업자를 만듭니다.
  2. 큐를 만듭니다.
  3. 태스크를 프로그래매틱 방식으로 만들어서 큐에 추가합니다.
  4. Cloud Tasks 서비스가 원래 애플리케이션에 확인을 반환합니다. 이는 태스크가 Cloud Task 스토리지에 성공적으로 기록되어 태스크 만들기 요청의 가용성과 내구성이 향상되었음을 나타냅니다.
  5. 태스크가 작업자에게 전달됩니다.
  6. 작업자가 태스크를 처리합니다.
  7. 시퀀스를 완료하려면 작업자가 2xx 성공 상태 코드를 Cloud Tasks 서비스에 반환합니다.

태스크가 큐에 전달되면 초기 요청에 사용할 수 있는 데이터가 없습니다.

기능

Cloud Tasks를 사용하면 다음 컨트롤을 사용하여 비동기 작업 항목을 전달할 수 있습니다.

  • 특정 전송 시간 예약
  • 전달 속도 관리
  • 재시도 동작 구성
  • 큐의 개별 태스크 액세스 및 관리
  • 태스크 중복 삭제 사용

약관

다음 표에는 Cloud Tasks 동작을 설명하는 주요 용어가 나와 있습니다.

용어 정의
단일 구성을 통해 관리되는 같은 대상 유형을 갖는 태스크 집합입니다.
대상 유형 작업이 처리되는 위치와 그 방법입니다.
작업자 작업을 처리하는 서비스입니다.
시도 작업을 실행하려는 시도입니다.
시도 전달 Cloud Tasks가 작업을 대상에 보낸 순간입니다.
시도 응답 작업과 관련된 처리가 성공적으로 완료되었거나 실패했음을 나타내는 작업자의 응답입니다.
재시도 태스크 실행을 여러 번 시도합니다. 재시도 횟수는 RetryConfig를 통해 설정됩니다.
비율 한도 대기열의 비율 한도입니다.

측정항목

다음과 같은 사전 정의된 Cloud Task 측정항목은 Stackdriver를 통해 사용할 수 있습니다.

측정항목 유형
표시 이름
종류, 유형, 단위
설명
라벨
api/request_count
API 요청
DELTA, INT64, 1
Cloud Tasks API 호출 수입니다.
api_method: 호출되는 API 메서드입니다(예: CreateTask).
response_code: 문자열로 된 표준 응답 코드입니다(예: 'ok').
queue/depth
베타 큐 깊이
GAUGE, INT64, 1
큐에 있는 태스크 수입니다. 60초마다 샘플링됩니다. 샘플링되면 데이터는 최대 120초 동안 표시되지 않습니다.
queue/task_attempt_count
작업 시도 횟수
DELTA, INT64, 1
응답 코드로 분류된 작업 시도 횟수입니다.
response_code: 문자열로 된 표준 응답 코드입니다(예: 'ok').
queue/task_attempt_delays
작업 시도 지연
DELTA, DISTRIBUTION, ms
예정된 각 시도 시간과 실제 시도 시간 간의 지연 시간입니다.