すべてのプロダクト
Search
ドキュメントセンター

Serverless App Engine:Production scenario: Implement an end-to-end canary release based on a self-hosted Spring Cloud Gateway or Zuul gateway

最終更新日:Apr 01, 2026

セルフマネージドの Spring Cloud または Zuul ゲートウェイによってバックアップされた SAE アプリケーションでカナリアリリースを実行する場合、特定のトラフィックを各マイクロサービスのグレーバージョンにルーティングし、そのルーティングがサービスチェーン全体に自動的に伝播する方法が必要です。このトピックでは、ビジネスコードを変更することなく、単一の HTTP リクエストヘッダーを使用してエンドツーエンドのトラフィックルーティングを構成する方法について説明します。

基本概念

用語説明
Baseline environmentマイクロサービスの安定した本番バージョン — アプリケーション A、B、C。すべてのトラフィックはデフォルトでここにルーティングされます。
Canary release environment検証中の新しいバージョン — アプリケーション A-gray、B-gray、および C-gray。カナリアヘッダーを持つリクエストのみがこの環境に到達します。
End-to-end propagationイングレスゲートウェイがリクエストをグレーインスタンスにルーティングすると、グレータグはコード変更なしで、すべてのダウンストリームサービス呼び出し (A-gray → B-gray → C-gray) を介して自動的に伝播します。
x-mse-tagこのシナリオでのみ、カナリアリリース環境にトラフィックをルーティングするために使用される HTTP リクエストヘッダーです。アプリケーションのカナリアリリースルールを構成する際には、このヘッダーを使用しないでください。

前提条件

開始する前に、以下を確認してください。

  • イングレスゲートウェイとして構成された Application Load Balancer (ALB) インスタンス

  • サービス登録と検出に利用可能な Nacos サービスレジストリ

  • mse-simple-demo パッケージをダウンロード済み

SAE デモアプリケーションのデプロイ

バックボーンアプリケーションのデプロイ

アプリケーション A (ショッピングカート)、アプリケーション B (トランザクションセンター)、およびアプリケーション C (在庫センター) を SAE にデプロイします。セットアップ手順については、「アプリケーションのサービス登録と検出を Nacos に変更する」をご参照ください。

カナリアリリースアプリケーションのデプロイ

アプリケーション A-gray、アプリケーション B-gray、アプリケーション C-gray をデプロイします。各カナリアアプリケーションの起動コマンドに -Dalicloud.service.tag=gray を追加して、システムがそれらをベースラインの対応するアプリケーションと区別できるようにします。

デプロイメントで SAE 組み込み以外のサービスレジストリを使用している場合は、以下の起動パラメーターも追加します。-Dnacos.use.endpoint.parsing.rule=false -Dnacos.use.cloud.namespace.parsing=false

Spring Cloud または Zuul ゲートウェイのデプロイ

同じドメイン名へのリクエストを、異なる URL パスを使用して転送します。構成の詳細については、「CLB インスタンスを使用してアプリケーションのゲートウェイルーティングを設定する」をご参照ください。

カナリアリリース環境へのトラフィックルーティング

クライアントのドメイン名を変更できない場合は、www.base.com ドメイン名をルートに関連付け、カナリアリリース環境にルーティングされるべきリクエストに x-mse-tag:gray ヘッダーを追加します。ALB イングレスゲートウェイはヘッダーを読み取り、リクエストをグレーサービスインスタンスにルーティングします。これにより、グレータグはすべてのダウンストリームサービスに伝播されます。

警告

x-mse-tag ヘッダーは、この特定のシナリオでのみ機能します。アプリケーションのカナリアリリースルールを構成する際には、使用しないでください。詳細については、「Java アプリケーションのカナリアリリースルールを管理」をご参照ください。

次の図は、x-mse-tag:gray ヘッダーが追加された後、受信リクエストがどのようにカナリアリリース環境に誘導されるかを示しています。

End-to-end canary release using self-managed Spring Cloud or Zuul gateways

カナリアリリースの検証

トラフィックが正しくルーティングされることを確認するために、以下のコマンドを実行します。

ベースライントラフィックの確認x-mse-tag ヘッダーのないリクエストは本番環境にルーティングされます。

curl -H "Host:www.base.com" http://106.14.XX.XX/a

期待される出力:

A[172.18.XX.XX] -> B[172.18.XX.XX] -> C[172.18.XX.XX]

カナリアトラフィックの確認x-mse-tag:gray を追加して、3つのグレーインスタンスすべてを介してリクエストをルーティングします。

curl -H "Host:www.base.com" -H "x-mse-tag:gray" http://106.14.XX.XX/a

期待される出力:

Agray[172.18.XX.XX] -> Bgray[172.18.XX.XX] -> Cgray[172.18.XX.XX]%

出力は、Classic Load Balancer (CLB) イングレスコントローラーがリクエストをアプリケーション A のカナリアリリース環境にルーティングし、グレータグがアプリケーション B-gray およびアプリケーション C-gray を介してエンドツーエンドで伝播したことを確認します。

次のステップ

  • Java アプリケーションの自動カナリアリリースルールを構成するには、「Java アプリケーションのカナリアリリースルールを管理」をご参照ください。