トラフィック移行は、アプリケーションのサービス内にあるバージョン間でリクエストのルーティングを切り替えて、1 つ以上のバージョンから単一の新しいバージョンにトラフィックを移行する機能です。
アプリの複数のバージョン間でトラフィックを分割する方法については、トラフィックの分割をご覧ください。
始める前に
あるバージョンへのトラフィックを構成する際は、ユーザー アカウントに必要な権限が含まれていることを確認してください。
トラフィックを徐々に移行する
スタンダード環境では、リクエストをターゲット バージョンにすぐにルーティングするのか、段階的にルーティングするのかを選択できます。
デフォルトでは、ウォームアップ リクエストは無効です。トラフィックは新しいバージョンにすぐに移行されます。
トラフィックを段階的に新しいバージョンに移行する場合は、ウォームアップ リクエストを有効にすることもできます。インスタンスを実行していない状態で直ちにトラフィックを新しいバージョンに移行すると、リクエストを読み込む際のレイテンシが急増します。既存のバージョンと同じ名前の新しいバージョンをデプロイすると、トラフィックはすぐに移行されます。同時に、古いバージョンのすべてのインスタンスがシャットダウンされます。そのため、新しいバージョンに対するリクエストの読み込みによってレイテンシが急増します。
ウォームアップ リクエストを有効にした場合、異なる環境に存在するバージョン間でトラフィックを移行するには、トラフィックの即時移行を指定する必要があります。
アプリケーションにウォームアップ リクエストを追加する
ウォームアップ リクエストを有効にすると、トラフィックは段階的に移行されます。最初にウォームアップ リクエストが新しいインスタンスに送信され、その後、インスタンスがユーザー リクエストを受信します。ウォームアップ リクエストを使用すると、これらのリクエストが現在トラフィックを受信しているバージョンで処理され、新しいインスタンスの作成中に新しいバージョンにトラフィックが移行されるので、ユーザーのレスポンス時間が改善されます。
ウォームアップ リクエストが有効でない場合は、新しいインスタンスが作成される前にユーザー リクエストが送信されます。新しいインスタンスが作成され、アプリケーション コードが読み込まれるまでに遅延が生じるため、ユーザー レスポンスでレイテンシが発生します。
レイテンシを回避し、ウォームアップ リクエストを有効にするには、構成ファイルに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 を使用できます。詳細については、トラフィックの移行と分割をご覧ください。