サイトのトップへ戻る

Google App Engine ドキュメント日本語訳

トラフィックマイグレーション

アプリケーションのデフォルトモジュールの新しいバージョンを配置した時、全てのリクエストは即座に新しいバージョンへ振り分けられます。 アップグレードした時にアプリで大量のトラフィックが発生した場合、リクエストを制御するために新しいバージョンの新しいインスタンスをオンラインにしなければならないため、 待ち時間の増加が発生するかもしれません。

トラフィックマイグレーションでは、ユーザーのリクエストが割り振られる前に自動的に新しいインスタンスを事前作成し、トラフィックを段階的にアプリの古いバージョンから新しいバージョンへ移行させます。 全てのトラフィックが割り振られると、新しいバージョンが自動的に既定のバージョンとなり、古い既定バージョンはユーザーのリクエストを一切受け取らなくなります。 トラフィックマイグレーションは既定のモジュールでのみ動作し、将来的には全てのモジュールをサポートする予定です。

You can use トラフィック分割を使って既定のバージョンから別のバージョンへ分散させることもできますが、トラフィックマイグレーションのほうが簡単で、より効果的です。既にトラフィック分割を有効にしている場合トラフィックマイグレーションは使用できず、トラフィックマイグレーション中にはトラフィック分割は使用できないので注意してください。



ウォームアップリクエスト

ユーザーのリクエストによって新しいインスタンスが作成された場合、まずインスタンスへ loading requestが送られ、インスタンスが初期化され、そしてアプリケーションコードを読み込みます。最初にユーザーリクエストを制御する時、このために待ち時間が増加します。

App Engine バックエンドはユーザーリクエストが割り振られる前に新しいインスタンスへコードを読み込むことができます。 これはウォームアップリクエスト(warmup request)を送信することで行えます。 トラフィックマイグレーションは、新しいバージョンでウォームアップリクエストが有効になっている場合にのみ動作します。

Java モジュールでは、既定で既にウォームアップリクエストは有効になっています。 Pythonと Goと PHP モジュールの場合、app.yaml ファイルに以下の行をインクルードしてウォームアップリクエストを有効にする必要があります。:


inbound_services:
- warmup

詳細情報については、Python, Java, Go ,PHP のドキュメントでウォームアップリクエストについて読んでください。



新しいバージョンをアップロードする

通常使うバージョンとして、新しいバージョンをアップロードしなければなりません。マイグレーションを有効にするまで、リクエストの受信は開始されません。



新しいバージョンへトラフィック移行する

新しいバージョンをアップロードした後、 この項目で説明されたようにして、Admin Console かappcfg ユーティリティを使って現在の既定バージョンから新しいバージョンへトラフィック移行をしてください。 Do not use the appcfg のset_default_versionコマンドは使用しないでください。

トラフィック移行には数分かかります。移行が完了すると、新しいバージョンはあなたの既定モジュールの既定バージョンに設定されます。 元のバージョンは配置されたままです - しかし、そのバージョンを対象とする明確なURLパスを送信されない限り、ユーザーリクエストを一切受信しません。

管理コンソールでのトラフィック移行

新しいコードをアップロードしたら、管理コンソールを開いてあなたのプロジェクトを選んでください。(現時点で、トラフィックの移行はM管理コンソールでのみ使用できます。もうすぐ、開発者コンソールでも使えるようにする予定です。)

バージョンのページをクリックしてください。あなたの既定モジュールの全てのバージョンの一覧が表示されます。 その左側にあるボタンを使って新しくアップロードしたバージョンを選び、 Migrate Trafficをクリックしてください。

appcfg コマンドでのトラフィック移行

新しいコードをアップロードした後、以下のappcfg コマンドでトラフィックマイグレーションを初期化できます。:

# config ファイルであなたが割り当てたバージョン名を使用してください
appcfg
.py [options...] migrate_traffic <app-directory>

# -V オプションでconfigファイルのバージョン名を上書きするので、configファイルを編集する必要は一切ありません。
appcfg
.py [options...] -V <name-of-new-def-version> migrate_traffic <app-directory>

migrate_traffic コマンドでは、config ファイルからアプリケーション名とバージョン名のみを読み込みます。他のパラメータは処理されません。

このコマンドは、移行を開始してすぐに終了します。実際の移行がいつ完了するか調べるには、管理コンソールにあるバージョンのページを開いて既定のバージョンが変更されたことを確認してください。