トラフィック移行は、アプリケーションのサービス内にあるバージョン間でリクエストのルーティングを切り替えて、1 つ以上のバージョンから単一の新しいバージョンにトラフィックを移行する機能です。
アプリの複数のバージョン間でトラフィックを分割する方法については、トラフィックの分割をご覧ください。
始める前に
あるバージョンへのトラフィックを構成する際は、ユーザー アカウントに必要な権限が含まれていることを確認してください。
トラフィックを徐々に移行する
リクエストのターゲット バージョンへのルーティングを段階的に行うか、すぐに行うかを選択できます。
デフォルトでは、ウォームアップ リクエストを無効にすると、トラフィックはバージョンにすぐに移行します。トラフィックをあるバージョンにすぐに移行する場合は、ウォームアップ リクエストを無効にします。
インスタンスを実行していない状態で直ちにトラフィックを新しいバージョンに移行すると、リクエストを読み込む際のレイテンシが急増します。既存のバージョンと同じ名前の新しいバージョンをデプロイすると、トラフィックはすぐに移行されます。同時に、古いバージョンのすべてのインスタンスがシャットダウンされます。そのため、新しいバージョンに対するリクエストの読み込みによってレイテンシが急増します。
ウォームアップ リクエストを有効にした場合、異なる環境に存在するバージョン間でトラフィックを移行するには、トラフィックの即時移行を指定する必要があります。
アプリケーションにウォームアップ リクエストを追加する
ウォームアップ リクエストを有効にすると、トラフィックは段階的に移行されます。最初にウォームアップ リクエストが新しいインスタンスに送信され、その後、インスタンスがユーザー リクエストを受信します。ウォームアップ リクエストを使用すると、これらのリクエストが現在トラフィックを受信しているバージョンで処理され、新しいインスタンスの作成中に新しいバージョンにトラフィックが移行されるので、ユーザーのレスポンス時間が改善されます。
ウォームアップ リクエストが有効でない場合は、新しいインスタンスが作成される前にユーザー リクエストが送信されます。新しいインスタンスが作成され、アプリケーション コードが読み込まれるまでに遅延が生じるため、ユーザー レスポンスでレイテンシが発生します。
Java を除くすべてのランタイムで、レイテンシを回避し、ウォームアップ リクエストを有効にするには、構成ファイルに inbound_services
要素を追加してから、App Engine にアプリケーションをデプロイします。
たとえば、App Engine にデプロイする前に app.yaml
ファイルに次の行を含めます。
inbound_services:
- warmup
ウォームアップ リクエストを有効にする方法については、ウォームアップ要求を構成してパフォーマンスを改善するをご覧ください。
トラフィックを新しいバージョンに移行する
コンソール
Google Cloud コンソールでトラフィックを移行するには、[バージョン] ページに移動します。
- すべてのトラフィックの移行先となるバージョンを選択します。
- [トラフィックを移行] をクリックします。
- 省略可: ウォームアップ リクエストを有効にすると、トラフィックは段階的に移行されます。トラフィックをすぐに移行するには、[詳細設定を表示] でオプションを選択します。
gcloud
Google Cloud CLI をインストールした後、gcloud
app services set-traffic
コマンドを実行して、すべてのトラフィックを 1 つのバージョンに移行します。次に例を示します。
- トラフィックをすぐに移行するには、次のコマンドを実行します。
gcloud app services set-traffic [MY_SERVICE] --splits [MY_VERSION]=1
- トラフィックを段階的に移行するには、任意の
--migrate
フラグを使用します。gcloud app services set-traffic [MY_SERVICE] --splits [MY_VERSION]=1 --migrate
API
プログラムでトラフィックを移行する場合は、Admin API を使用できます。詳細については、トラフィックの移行と分割をご覧ください。