Service Mesh (ASM) では、アプリケーションのバージョンまたは特定の機能を独立したランタイム環境 (レーンと呼ばれます) に分離できます。次に、ルールを満たすリクエストをアプリケーションの宛先バージョンまたは機能にルーティングするようにレーンルールを設定できます。このトピックでは、トラフィックレーンの概念と使用シナリオ、および厳格モードと許容モードの両方のトラフィックレーンについて説明します。
機能の説明
カナリアリリースを使用すると、新しいサービスまたはバージョンを段階的にロールアウトできます。たとえば、新しいバージョンをリリースする場合、最初にトラフィックの一部をそのバージョンに転送して機能をテストし、機能が検証された後にトラフィックを増やすことができます。
サービスが相互に呼び出す場合、カナリアリリースを実行するときに、環境を分離し、エンドツーエンドのサービス呼び出しチェーンのトラフィックシェーピングを実行する必要がある場合があります。つまり、カナリアリリーストラフィックが、対応する呼び出しチェーン内のカナリアリリースバージョンのサービスのみに送信されるようにする必要があります。このようにして、異なる呼び出しチェーンは互いに分離されます。
同じバージョンまたは特定の機能を持つ異なるサービスで構成されるこのような呼び出しチェーンは、トラフィックレーンと呼ばれます。トラフィックレーンを使用することにより、ゲートウェイからサービスへのトラフィックの分離環境を構築するために、少数のルールのみを設定する必要があります。トラフィックレーンは、複数のサービスのリリースとサービスの複数のバージョンの並行開発を容易にします。
トラフィックレーンには、厳格モードと許容モードの 2 つのモードがあります。次のセクションでは、これらの 2 つのトラフィックレーンモードについて詳しく説明します。
厳格モードのトラフィックレーン
厳格モードでは、各トラフィックレーンには、関連する呼び出しチェーン内のすべてのサービスが含まれています。このモードには、アプリケーションに対する要件はありません。エンドツーエンドのトラフィック管理を実装するには、トラフィックレーンを設定するだけで済みます。詳細については、「厳格モードのトラフィックレーンを使用してエンドツーエンドのトラフィックを管理する」をご参照ください。

許容モードのトラフィックレーン
許容モードでは、関連する呼び出しチェーン内のすべてのサービスを含むベースラインレーンを作成するだけで済みます。他のレーンは、関連する呼び出しチェーン内のすべてのサービスを含む必要はありません。レーン内のサービスが相互に呼び出す場合、呼び出されるサービスがレーンに存在しない場合、リクエストはベースラインレーン内の同じサービスに転送されます。呼び出されるサービスがレーンで使用可能になると、リクエストはレーン内の目的のサービスに転送されます。許容モードでトラフィックレーンを使用する場合、アプリケーションは、対応する呼び出しチェーン全体で透過的に送信できるヘッダーをリクエストに追加する必要があり、そのようなヘッダーは異なる値を持つ必要があります。これらのリクエストヘッダーは、エンドツーエンド (E2E) パススルーリクエストヘッダーと呼ばれます。詳細については、「シナリオ 1:トレース内のトレース ID をパススルーする」および「シナリオ 2:トレース内のカスタムリクエストヘッダーをパススルーする」をご参照ください。

厳格モードと許容モードの比較
トラフィックレーンモード | メリット | 制限 | 使用シナリオ |
厳格モード | アプリケーションに要件は課されません。 | 各トラフィックレーンには、関連する呼び出しチェーン内のすべてのサービスが含まれている必要があります。 | このモードは、呼び出しチェーン内のすべてのサービスに対してカナリアリリースを実行するシナリオに適用できます。呼び出しチェーン内のすべてのサービスに対してカナリアリリースを実行する場合、厳格モードは許容モードと比較してアプリケーションへの要件が少なくなります。 |
許容モード | アプリケーションは、リクエストに E2E パススルーリクエストヘッダーを追加する必要があり、そのようなヘッダーは異なる値を持つ必要があります。 | ベースラインレーンに関連する呼び出しチェーン内のすべてのサービスが含まれており、他のレーン内のサービスクエリがベースラインレーンに転送できることを確認する必要があります。 | E2E パススルーリクエストヘッダーが使用される場合、許容モードのトラフィックレーンはより多くのシナリオで使用できます。たとえば、呼び出しチェーン内の一部のサービスの新しいバージョンのみがリリースされる場合、許容モードのトラフィックレーンを使用してこれらの新しいバージョンをテストできます。 |