최신 SDK로 업그레이드하여 push 큐를 Cloud Tasks로 마이그레이션 (Java)

최신 App Engine 서비스 SDK 버전으로 업그레이드하기 전에 마이그레이션 개요를 검토하세요.

App Engine 서비스 SDK를 최신 버전으로 업데이트하여 Cloud Tasks로 자동 마이그레이션할 수 있습니다. 업그레이드하면 SDK가 자동으로 PushQueue 호출을 Cloud Tasks 프런트엔드 API로 리디렉션합니다. Cloud Tasks는 기존 태스크 큐와 태스크를 유지하므로 추가 마이그레이션이 필요하지 않습니다.

업데이트된 SDK는 Cloud Tasks API를 사용하여 태스크 큐 기능과 기능 패리티를 유지합니다. SDK는 다음을 지원합니다.

  • 일괄 태스크 생성: SDK는 일괄 API를 사용하여 한 번의 호출로 최대 100 개의 태스크를 추가하도록 지원합니다.
  • 태스크 수준 재시도: SDK는 태스크별 재시도 구성을 지원합니다.
  • 트랜잭션 태스크: SDK는 Datastore 트랜잭션 내에서 태스크를 큐에 추가합니다. 안정성을 유지하려면 cron.yaml 파일을 만들거나 수정하세요.

가격 책정 및 할당량

push 큐를 Cloud Tasks로 마이그레이션하면 앱의 가격 및 할당량에 영향을 줄 수 있습니다.

가격 책정

마이그레이션하기 전에 Cloud Tasks 가격 책정 을 검토하여 월별 비용을 추정하세요.

태스크 큐와 마찬가지로 Cloud Tasks 푸시 대상을 사용하여 App Engine 앱에 요청을 전송하는 것은 무료입니다. 하지만 태스크 큐와 달리 Cloud Tasks는 태스크 생성, 삭제, 관리와 같은 작업에 대해 요금을 청구합니다. 따라서 무료 App Engine 태스크 큐에 비해 전반적인 월별 비용이 더 높을 수 있습니다.

할당량

Cloud Tasks 요청도 App Engine 요청 할당량에 포함됩니다.

태스크 큐와 마찬가지로 Cloud Tasks에는 서비스별 할당량이 있습니다. Cloud Tasks로 마이그레이션하면 할당량이 변경될 수 있습니다.

시작하기 전에

다음 섹션에서는 push 큐를 Cloud Tasks로 마이그레이션하기 전에 고려해야 할 비용 및 할당량에 대해 설명합니다.

  1. App Engine 소스 코드에 액세스할 수 있는지 확인합니다.

  2. Cloud Tasks 및 Cloud Scheduler API를 사용 설정합니다.

    API 사용 설정

  3. App Engine 서비스 계정에 SDK가 Cloud Tasks API에 태스크를 디스패치할 수 있도록 하는 데 필요한 권한이 있는지 확인하려면 관리자에게 프로젝트에 대한 Cloud Tasks 큐 추가자 (roles/cloudtasks.enqueuer) IAM 역할을 부여해 달라고 요청하세요.

App Engine 서비스 SDK 업데이트

  1. 애플리케이션에서 최신 버전의 App Engine 서비스 SDK를 사용하는지 확인합니다.

    pom.xml에서 App Engine 서비스 SDK를 v5.2.0-beta 버전 이상으로 업데이트합니다.

    
        com.google.appengine
        appengine-api-1.0-sdk
        v5.2.0-beta
    
  2. Cloud Tasks 라우팅 사용 설정

    runtime: java25
    service: my-service-b
    
    env_variables:
      APPENGINE_USE_CLOUDTASK_PUSH_QUEUE: "true"
    

    pom.xml에서 App Engine SDK 종속 항목을 v5.2.0-beta 버전 이상으로 업데이트합니다.

    앱에서 XML 구성 (appengine-web.xml)을 사용하는 경우

    <appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
      <service>my-java-service-b</service>
      <runtime>java25</runtime>
      <env-variables>
        <env-var name="APPENGINE_USE_CLOUDTASK_PUSH_QUEUE" value="true" />
      </env-variables>
    </appengine-web-app>
    
  3. 앱을 배포합니다.

    gcloud app deploy
    
  4. Cloud Tasks에서 push 큐를 확인 하여 앱에서 Cloud Tasks를 사용하는지 확인합니다.

트랜잭션 태스크 구성 (선택사항)

앱에서 Datastore 트랜잭션 내에서 태스크를 큐에 추가하는 경우 SDK는 내부 크론 작업을 사용하여 Datastore 커밋 중에 큐에 추가하지 못한 태스크가 결국 처리되도록 합니다.

push 큐 트랜잭션 태스크를 처리하려면 cron.yaml 파일을 만들거나 업데이트하여 내부 프로세서를 주기적으로 호출하세요. 예를 들면 다음과 같습니다.

cron:
- description: "Process push queue transactional tasks"
  url: /_ah/cloudtask/sweep
  schedule: every 30 minutes # Change this based on the usage pattern

Java 17/21 Jakarta EE 런타임의 경우 utils.servlet.SweeperServlet 또는 utils.servlet.jakarta.SweeperServletweb.xml 파일에 URL 매핑을 추가합니다.

<servlet>
 <servlet-name>cloudtask_sweep</servlet-name>
 <servlet-class>com.google.apphosting.utils.servlet.SweeperServlet</servlet-class>
</servlet>
<servlet-mapping>
 <servlet-name>cloudtask_sweep</servlet-name>
 <url-pattern>/_ah/cloudtask/sweep</url-pattern>
</servlet-mapping>

다음 단계