Google CloudのApp Engineプルタスクの使い方
はじめに
Google CloudのApp Engineを使用すると、開発者はアプリケーションを非常に迅速に構築できます。特に、サーバーレス環境において、アプリの運用や管理は容易になります。このミニシリーズ「Serverless Migration Station」では、App Engineの開発者がアプリを最新の言語ランタイムにモダナイズする方法を紹介しています。Python 2から3への移行や、Java 8から17への移行、さらには他のサーバーレスプラットフォームのCloud FunctionsやCloud Runへの移行も可能です。
タスクキューサービスの利用目的
App Engineのタスクキューサービスは、標準のリクエスト-レスポンスワークフローの外でタスクを実行するためのインフラを提供します。これにより、リクエストのタイムアウトを超える作業や、定期的な作業を行うことができます。特に、タスクキューサービスでは「プッシュキュー」と「プルキュー」、二種類のキュータイプが用意されています。
- プッシュキュー:既存のアプリにプッシュタスクを追加し、Cloud Tasksへ移行するチュートリアルが含まれています。
- プルキュー:プルタスクを利用した方法が解説されています。
プルキューの使用方法
サンプルアプリは、ページの訪問者を追跡するために修正されます。特に、訪問にはタイムスタンプやIPアドレス、ユーザーエージェントといった情報が含まれます。アプリを修正して、IPアドレスごとの訪問数を追跡する仕組みを導入することになります。
- ホームページは、最新の訪問者に加えて、上位の訪問者を表示するように変更されます。
訪問者が登録されると、プルタスクが作成され、訪問者を追跡します。これらのタスクは静かにキューに留まり、定期的に処理されるまで待機します。タスクは様々な方法で処理可能です。
- 定期的に実行されるcronジョブやCloud Schedulerジョブ
- 別のApp Engineバックエンドサービス
- ユーザーによる直接的な処理(ブラウザまたはコマンドラインからのHTTPリクエスト)
- イベントによってトリガーされるCloud Function
チュートリアルでは、curlリクエストを使用してアプリのエンドポイントからキュー内のタスクを処理します。すべてのタスクが完了した後、訪問者数が更新されたテーブルを表示します。
サンプルアプリのコード変更
以下は、Appにタスクキューのプルタスク使用を追加するために変更されたコア部分の擬似コードの例です。
- 新しいデータモデルクラス「VisitorCount」を実装して、訪問者数を追跡します。
- 個別の訪問を登録する際に、訪問者数を更新するためのプルタスクをキューに追加します。
- 重要なポイントは、/logにアクセスすることで処理中のタスクを更新し、全体の訪問者数を更新するための新しい関数「fetch_counts()」を作成します。
このようにして、Task Queueのプルタスクをアプリに追加することになります。
結論
この「移行」は、訪問者数を追跡するためのTask Queueプルタスク利用をModule 1のベースラインアプリに追加することを指します。これを体験したい方は、実際にコードラボに参加して、動画に合わせて進めてみてください。最終的には、Cloud Pub/Subへのアップグレードの準備が整います。
2021年秋、App Engineチームは、バンドルサービスの多くを2世代ランタイムに拡張したため、Python 3への移行時にプルタスクをPub/Subへ移行する必要がなくなりました。これにより、次世代ランタイムからバンドルサービスへアクセスするコードに修正を施せば、Python 3アプリでもTask Queueを使用し続けることが可能です。Pub/Subへ移行したい場合は、Module 19の内容をご覧ください。
すべてのServerless Migration Stationコンテンツ(コードラボ、動画、ソースコード)は、オープンソースリポジトリで利用可能です。引き続き、さまざまなランタイムをカバーする予定のため、今後の情報もお楽しみに。