이 페이지에서는 Cloud Tasks API를 사용하여 큐를 관리하는 방법과 Cloud Tasks queue.yaml
파일을 업로드하여 큐를 관리하는 방법의 차이점을 설명합니다. 또한 방법을 혼합할 때의 문제와 기타 일반적인 문제를 처리하는 방법도 설명합니다.
소개
Cloud Tasks API는 App Engine 태스크 큐 서비스에 App Engine과 독립적인 인터페이스를 제공합니다. 이 인터페이스의 일부로 콘솔 또는 gcloud
명령어를 통해 큐를 관리할 수 있습니다. Cloud Tasks API에 의해 만들어진 큐는 App Engine SDK에서 액세스할 수 있고 그 반대의 경우도 마찬가지입니다. 호환성을 유지하기 위해 App Engine SDK queue.yaml
에서 사용하는 구성 파일을 사용할 수 있으며, 또한 Cloud Tasks API를 통해 사용할 큐를 만들고 구성할 수도 있습니다. 하지만 파일을 통한 구성과 Cloud Tasks API를 통한 구성을 혼합하면 예상치 못한 결과가 발생할 수 있습니다.
queue.yaml
과 Cloud Tasks 큐 관리 메서드를 혼합할 때의 함정
기본 서비스의 경우 queue.yaml
파일 사용이 최종적입니다. 프로젝트의 생성 방법에 관계없이 프로젝트에서 기존 큐를 생략하는 queue.yaml
파일을 업로드하면 큐가 사용 중지 또는 일시중지됩니다. 따라서 Cloud Tasks API를 사용하여 CreateQueue
또는 UpdateQueue
를 호출한 다음 이를 생략하는 queue.yaml
파일을 업로드하면 Cloud Tasks 호출에서 생성된 큐가 사용 중지됩니다.
다음 상황을 살펴보세요.
CreateQueue
를 호출하여 'cloud-tasks-queue'라는 큐를 만듭니다.다음 콘텐츠가 포함된
queue.yaml
파일을 업로드합니다.queue: - name: queue-yaml-queue
이 프로젝트에서 큐의 현재 상태는 무엇인가요? 'cloud-tasks-queue'라는 큐와 이전에 있던 그 외 다른 큐는 DISABLED
상태이고 'queue-yaml-queue'라는 큐는 RUNNING
상태입니다.
Cloud Tasks API를 통해 큐를 만들면 예기치 않은 동작이 발생할 수 있습니다. 다음 안내에서는 사용 중지된 큐를 다시 시작하는 방법을 설명합니다.
마찬가지로 큐가 Cloud Tasks API에서 사용 중지되었지만 나중에 업로드된 queue.yaml
파일에 표시되는 경우 해당 큐가 다시 시작됩니다.
큐가 DeleteQueue
메서드로 삭제되고 나중에 queue.yaml
파일에 표시되면 삭제 후 며칠 동안 큐 이름을 재사용할 수 없으므로 queue.yaml
업로드가 실패할 수 있습니다.
권장사항
Cloud Tasks 또는 App Engine을 처음 사용하는 경우 Cloud Tasks API만 사용하여 큐를 관리하고 queue.yaml
은 사용하지 않도록 합니다. 사용자는 Cloud Tasks 큐 관리 메서드를 사용하여 다양한 방법으로 큐를 생성, 업로드, 삭제할 수 있습니다.
그러나 기존의 queue.yaml
사용자이고 queue.yaml
과 Cloud Tasks 큐 관리 메서드를 혼합할 때의 문제를 알고 있다면 큐 관리 메서드로 전환하는 것이 좋습니다.
사용자가 여러 작업 관리 메서드를 혼용하지 못하게 하는 방법 중 하나는 모든 사용자가 큐를 생성, 업데이트, 삭제할 때 반드시 사용해야 하는 웹 앱이나 명령줄 도구를 만드는 것입니다. 해당 도구가 Cloud Tasks 큐 관리 메서드 또는 queue.yaml
중 어떤 것을 사용하는지는 사용자가 신경 쓸 필요 없는 도구의 구현 세부정보입니다. 사용자가 이 도구를 사용해야 하는 경우 Cloud Tasks 큐 관리 메서드와 queue.yaml
사용이 부적절하게 혼합되지 않도록 보장할 수 있습니다.
이러한 도구를 사용하도록 지원하기 위해 도구에 큐 관리자 역할을 부여하고 사용자가 도구를 사용하려면 인증하도록 요구할 수 있습니다. 액세스 관리에 대해 자세히 알아보려면 큐 구성 보호를 참조하세요.
디버깅
프로젝트의 관리자 활동 감사 로그를 검사하여 큐 생성, 업데이트, 삭제를 포함한 큐 구성 변경 내역을 검색합니다.
gcloud logging read \
'protoPayload.methodName=
(com.google.appengine.legacy.queue_created OR
com.google.appengine.legacy.queue_updated OR
google.cloud.tasks.v2.CloudTasks.CreateQueue OR
google.cloud.tasks.v2.CloudTasks.UpdateQueue OR
google.cloud.tasks.v2.CloudTasks.DeleteQueue)'
예를 들어 기존 큐가 queue.yaml
업로드에 의해 사용 중지된 경우 '사용 중지된 큐 '[QUEUE_NAME]' 메시지가 com.google.appengine.legacy.queue_updated
메서드를 통해 감사 로그에 표시됩니다.
queue.yaml
업로드에 의해 사용 중지된 큐를 다시 시작하는 방법
queue.yaml
과 Cloud Tasks 큐 관리 메서드를 혼합하는 경우 queue.yaml
파일을 업로드하면 Cloud Tasks API를 통해 만들어진 큐가 우발적으로 사용 중지될 수 있습니다.
큐를 다시 시작하려면 큐에서 ResumeQueue
를 호출하거나 큐를 queue.yaml
에 추가하여 업로드하면 됩니다. 이전에 큐의 queue.yaml
구성에서 커스텀 처리 rate
를 설정했다면 ResumeQueue
는 큐를 기본 rate
로 재설정합니다. 이는 ResumeQueue
에 대한 maxDispatchesPerSecond
응답 필드에 반영됩니다.
할당량
queue.yaml
을 사용하여 큐를 만드는 경우 기본적으로 최대 100개의 큐를 만들 수 있습니다. Cloud Tasks API를 사용하여 만든 큐에는 기본적으로 최대 1,000 개의 큐가 있습니다. 다른 경우와 마찬가지로 queue.yaml
과 Cloud Tasks API 메서드를 함께 사용하면 예기치 않은 결과가 생길 수 있습니다. 예를 들어 queue.yaml
을 사용하여 일부 큐를 만든 다음 할당량을 2,000으로 높였다고 가정해 보겠습니다. Cloud Tasks API 메서드를 사용하여 추가 큐를 만든다면 할당량 오류가 발생합니다. 이를 해결하려면 Google Cloud 콘솔의 할당량 페이지에서 할당량 수정을 통해 요청을 제출하세요.
Cloud Tasks 대기열 관리 메소드에 대한 추가 정보
큐 구성 및 큐 시작 지연
큐 구성 변경사항이 적용되는 데 몇 분 정도 걸릴 수 있습니다. 예를 들어 CreateQueue
또는 UpdateQueue
를 호출한 후 해당 큐에서 CreateTask
를 호출하려면 몇 분이 지나야 합니다.
Cloud Tasks 및 default
App Engine 큐
'default'라는 App Engine 큐는 App Engine SDK 및 Cloud Tasks API에서 특별하게 처리됩니다.
default
큐가 아직 없으면 다음과 같은 상황에서 큐가 생성됩니다.
- App Engine SDK를 사용하여
default
큐에 태스크를 처음 추가하는 경우 default
큐를 지정한queue.yaml
파일을 업로드하는 경우CreateQueue
또는UpdateQueue
가default
큐를 생성하도록 호출되는 경우
App Engine과의 호환성을 유지하기 위해 Cloud Tasks는 다음 제한 사항을 적용합니다.
- 'default'라는 큐가 생성되면 큐에서 App Engine 태스크를 사용해야 합니다.
- 사용자는 만들어진
default
큐를 삭제할 수 없습니다.
Cloud Tasks API에서는 다음 사항이 default
큐에도 적용됩니다.
- Cloud Tasks API는
default
큐 또는 다른 모든 큐를 자동으로 만들지 않습니다. - 다른 모든 큐와 마찬가지로 큐가 만들어지기 전에 호출한 경우
default
큐에서GetQueue
를 호출하면 찾을 수 없음 오류가 발생합니다. - 마찬가지로
default
큐는 생성되기 전에는ListQueues
출력에 표시되지 않습니다. default
큐의 구성은UpdateQueue
호출을 통해 변경할 수 있습니다.
다음 단계
- 참조 문서에서 RPC Cloud Tasks API에 사용할 수 있는 메서드 알아보기
- 참조 문서에서 REST Cloud Tasks API에 사용할 수 있는 메서드 알아보기
queue.yaml
에 대해 알아보기