How to use traffic mirroring across clusters based on intra-cluster service layer and grid layer
トラフィックミラーリングとは
マイクロサービスは、迅速な開発とデプロイメントという優れた特徴をもたらしますが、迅速な開発とデプロイメントに伴う変更リスクをどのように低減するかが重要な課題となっています。サービスグリッド技術は、トラフィックミラーリング (Traffic Mirroring) の機能を提供しており、シャドウトラフィック (Traffic Shadowing) とも呼ばれます。この機能は、リアルタイムトラフィックのコピーをミラーサービスに送信し、ミラートラフィックはメインサービスのクリティカルパスの外で処理されます。これにより、本番トラフィックをテストクラスターや新しいテストバージョンにミラーリングして、実際のトラフィックを切り替える前にテストを実行でき、バージョン変更のリスクを効果的に低減し、最小限のリスクで本番環境に変更を適用できます。
トラフィックミラーリングには以下の利点があります。
• トラフィックが異なるサービスにミラーリングされる場合、リクエストのクリティカルパスの外で処理されるため、トラフィックミラーリングに起因する問題が本番環境に影響を与えることはありません。
• ミラーリングされたトラフィックへのレスポンスはすべて無視されます。トラフィックは「送りっぱなし」として扱われ、ミラーリングされたインスタンスから送信されるレスポンスはすべて無視されるため、通常の本番トラフィックのレスポンスに干渉することはありません。
• トラフィックがミラーリングされる際、リクエストはホストヘッダーまたは認可ヘッダーに「-shadow」フラグを含めてミラーサービスに送信され、トラフィックのミラーリング元を識別できます。
• 実際の本番環境のユースケースとトラフィックを使用することで、よりリアルなテスト環境を構築でき、デプロイメントのリスクを効果的に低減できます。
トラフィックミラーリングを有効にする典型的なシナリオ
以下では、トラフィックミラーリングの利点を活用できるいくつかの典型的な使用シナリオを紹介します。
• オンライントラフィックのシミュレーションとテスト:テストクラスターのテストでは、本番インスタンスの実際のトラフィックを、本番環境のクリティカルパスに影響を与えずに使用できます。たとえば、旧システムを新システムに置き換える際や大規模なシステム改修を行った際に、オンライントラフィックを新システムに導入して試運転を行ったり、実験的なアーキテクチャ変更をオンライントラフィックでシミュレーションしてテストしたりできます。
• 新バージョンの検証:本番トラフィックとミラートラフィックの出力結果をリアルタイムで比較できます。フルサンプルシミュレーションであるため、シャドウトラフィックは新サービスの本番前リハーサルに適用できます。従来の手動テストはサンプリングに過ぎませんが、実際のトラフィックパターンを導入することで、異常な特殊文字や悪意のあるトークンなど、すべてのオンライン状況を完全にシミュレートでき、本番前サービスの最もリアルな処理能力と例外処理能力を検証できます。
• 協調サービスのバージョンロールバック:ミラーリングトラフィックを使用するサービスが協調サービスを変更する必要がある場合、ミラーリングモードでは「-shadow」フラグが追加されるため、ミラーリングリクエストを正常に処理しつつコミット前にロールバックできます。コンテナイメージバージョンの変更は本番バージョンに影響しません。
• テストデータベースの分離:データ処理関連のビジネスでは、空のデータストレージとロードテストデータを使用して、データに対してミラーリングトラフィック操作を行うことで、テストデータの分離を実現できます。
• オンライン障害の調査と一時的なデータ収集:たとえば、突発的なオンライン障害はオフラインでは再現できないことが多いですが、ブランチサービスを一時的に起動してシャドウトラフィックを流し込むことで、オンラインサービスに影響を与えずにデバッグと調査が可能です。
• ログによる行動データの収集:レコメンデーションシステムやアルゴリズムにおいて、サンプルとデータは非常に重要です。従来の自動化テストが直面する最大の課題は、実際の環境におけるユーザー行動データを構築できないことです。シャドウトラフィックにより、ログ形式でユーザー行動を保存でき、レコメンデーションシステムやアルゴリズムモデルのシミュレーションテスト用サンプルデータを構築できます。また、ユーザープロファイルのビッグデータ分析のデータソースとして、レコメンデーションサービスにも応用できます。
トラフィックミラーリングを有効にする方法
上記の VirtualService は、トラフィックの 100% を v1 サブセットにルーティングしつつ、同じトラフィックを v1-mirroring サブセットにもミラーリングします。v1 サブセットに送信された同じリクエストが複製され、v1-mirroring サブセットにも送信されます。
この動作を最も簡単に確認するには、アプリケーションにリクエストを送信しながら、v1-mirroring のアプリケーションログを確認することです。
アプリケーション呼び出し時のレスポンスは v1 サブセットから返されます。ただし、v1-mirroring サブセットにもリクエストがミラーリングされていることを確認できます。
クラスター内のサービスレイヤーベースのトラフィックミラーリング
例を使って説明します。まずすべてのトラフィックを v1 バージョンにルーティングし、その後ルールを使用して v1-mirroring バージョンにトラフィックをミラーリングします。
ステップ 1:サンプルアプリケーションサービスの設定と起動
ステップ 2:ルーティングポリシーの作成
ステップ 3:トラフィックリクエストの送信
サービスグリッドレイヤーベースのクロスクラスタートラフィックミラーリング
ゲートウェイレイヤーベースのトラフィックミラーリングは、一般的にプレリリース環境のために実際のオンライントラフィックを導入するために使用されるため、主にクラスターをまたいで使用されます。ここでは、本番環境のクラスター (clusterA) とテストクラスター (clusterB) を例に説明します。リクエストは本番環境の clusterA で処理され、そのゲートウェイがトラフィックのコピーを clusterB にミラーリングします。以下の図の通りです。
ステップ 1:テストクラスターでサンプルアプリケーションサービスの設定と起動
ステップ 2:テストクラスターでゲートウェイルーティングルールの設定
ステップ 3:メインクラスターのサービスグリッドで外部アクセスルールの設定
メインクラスターのイングレスゲートウェイ Pod で Envoy の設定ダンプを確認すると、以下のような内容を確認できます。
まとめ
トラフィックミラーリングは、主にエンドクライアントに一切影響を与えることなく、実際の本番トラフィックでサービスをテストするために使用されます。既存のサービスをリライトして新バージョンが実際の多様な受信リクエストを同じように処理できることを検証する場合や、同じサービスの 2 つのバージョン間でベンチマーク比較を行う場合に特に有効です。また、リクエストに対して追加のアウトオブバンド処理を非同期で行う場合にも活用できます。たとえば、追加の統計データの収集や、拡張ロギングなどです。
まとめると、本番トラフィックをテストクラスターにミラーリングすることは、本番環境であっても非本番環境であっても、新しいデプロイメントのリスクを低減する非常に効果的な方法です。大規模なインターネット企業は、この方法を長年にわたり実践してきました。サービスグリッド技術は、レイヤー 7 ベースのシャドウトラフィック機能を提供し、クラスター内でのミラーリングからクロスクラスターのトラフィックレプリケーションまでを容易に実現できます。トラフィックミラーリングにより、よりリアルな実験環境を構築でき、実際のトラフィック環境下でのデバッグ、テスト、データ収集、トラフィックリプレイを実行できるため、オンライン作業をより制御しやすいものにします。さらに、サービスグリッド技術による一元的なメッシュポリシー管理は、技術スタックを統一し、チームを複雑な技術スタックから解放し、認知的な負荷を大幅に軽減します。
マイクロサービスは、迅速な開発とデプロイメントという優れた特徴をもたらしますが、迅速な開発とデプロイメントに伴う変更リスクをどのように低減するかが重要な課題となっています。サービスグリッド技術は、トラフィックミラーリング (Traffic Mirroring) の機能を提供しており、シャドウトラフィック (Traffic Shadowing) とも呼ばれます。この機能は、リアルタイムトラフィックのコピーをミラーサービスに送信し、ミラートラフィックはメインサービスのクリティカルパスの外で処理されます。これにより、本番トラフィックをテストクラスターや新しいテストバージョンにミラーリングして、実際のトラフィックを切り替える前にテストを実行でき、バージョン変更のリスクを効果的に低減し、最小限のリスクで本番環境に変更を適用できます。
トラフィックミラーリングには以下の利点があります。
• トラフィックが異なるサービスにミラーリングされる場合、リクエストのクリティカルパスの外で処理されるため、トラフィックミラーリングに起因する問題が本番環境に影響を与えることはありません。
• ミラーリングされたトラフィックへのレスポンスはすべて無視されます。トラフィックは「送りっぱなし」として扱われ、ミラーリングされたインスタンスから送信されるレスポンスはすべて無視されるため、通常の本番トラフィックのレスポンスに干渉することはありません。
• トラフィックがミラーリングされる際、リクエストはホストヘッダーまたは認可ヘッダーに「-shadow」フラグを含めてミラーサービスに送信され、トラフィックのミラーリング元を識別できます。
• 実際の本番環境のユースケースとトラフィックを使用することで、よりリアルなテスト環境を構築でき、デプロイメントのリスクを効果的に低減できます。
トラフィックミラーリングを有効にする典型的なシナリオ
以下では、トラフィックミラーリングの利点を活用できるいくつかの典型的な使用シナリオを紹介します。
• オンライントラフィックのシミュレーションとテスト:テストクラスターのテストでは、本番インスタンスの実際のトラフィックを、本番環境のクリティカルパスに影響を与えずに使用できます。たとえば、旧システムを新システムに置き換える際や大規模なシステム改修を行った際に、オンライントラフィックを新システムに導入して試運転を行ったり、実験的なアーキテクチャ変更をオンライントラフィックでシミュレーションしてテストしたりできます。
• 新バージョンの検証:本番トラフィックとミラートラフィックの出力結果をリアルタイムで比較できます。フルサンプルシミュレーションであるため、シャドウトラフィックは新サービスの本番前リハーサルに適用できます。従来の手動テストはサンプリングに過ぎませんが、実際のトラフィックパターンを導入することで、異常な特殊文字や悪意のあるトークンなど、すべてのオンライン状況を完全にシミュレートでき、本番前サービスの最もリアルな処理能力と例外処理能力を検証できます。
• 協調サービスのバージョンロールバック:ミラーリングトラフィックを使用するサービスが協調サービスを変更する必要がある場合、ミラーリングモードでは「-shadow」フラグが追加されるため、ミラーリングリクエストを正常に処理しつつコミット前にロールバックできます。コンテナイメージバージョンの変更は本番バージョンに影響しません。
• テストデータベースの分離:データ処理関連のビジネスでは、空のデータストレージとロードテストデータを使用して、データに対してミラーリングトラフィック操作を行うことで、テストデータの分離を実現できます。
• オンライン障害の調査と一時的なデータ収集:たとえば、突発的なオンライン障害はオフラインでは再現できないことが多いですが、ブランチサービスを一時的に起動してシャドウトラフィックを流し込むことで、オンラインサービスに影響を与えずにデバッグと調査が可能です。
• ログによる行動データの収集:レコメンデーションシステムやアルゴリズムにおいて、サンプルとデータは非常に重要です。従来の自動化テストが直面する最大の課題は、実際の環境におけるユーザー行動データを構築できないことです。シャドウトラフィックにより、ログ形式でユーザー行動を保存でき、レコメンデーションシステムやアルゴリズムモデルのシミュレーションテスト用サンプルデータを構築できます。また、ユーザープロファイルのビッグデータ分析のデータソースとして、レコメンデーションサービスにも応用できます。
トラフィックミラーリングを有効にする方法
上記の VirtualService は、トラフィックの 100% を v1 サブセットにルーティングしつつ、同じトラフィックを v1-mirroring サブセットにもミラーリングします。v1 サブセットに送信された同じリクエストが複製され、v1-mirroring サブセットにも送信されます。
この動作を最も簡単に確認するには、アプリケーションにリクエストを送信しながら、v1-mirroring のアプリケーションログを確認することです。
アプリケーション呼び出し時のレスポンスは v1 サブセットから返されます。ただし、v1-mirroring サブセットにもリクエストがミラーリングされていることを確認できます。
クラスター内のサービスレイヤーベースのトラフィックミラーリング
例を使って説明します。まずすべてのトラフィックを v1 バージョンにルーティングし、その後ルールを使用して v1-mirroring バージョンにトラフィックをミラーリングします。
ステップ 1:サンプルアプリケーションサービスの設定と起動
ステップ 2:ルーティングポリシーの作成
ステップ 3:トラフィックリクエストの送信
サービスグリッドレイヤーベースのクロスクラスタートラフィックミラーリング
ゲートウェイレイヤーベースのトラフィックミラーリングは、一般的にプレリリース環境のために実際のオンライントラフィックを導入するために使用されるため、主にクラスターをまたいで使用されます。ここでは、本番環境のクラスター (clusterA) とテストクラスター (clusterB) を例に説明します。リクエストは本番環境の clusterA で処理され、そのゲートウェイがトラフィックのコピーを clusterB にミラーリングします。以下の図の通りです。
ステップ 1:テストクラスターでサンプルアプリケーションサービスの設定と起動
ステップ 2:テストクラスターでゲートウェイルーティングルールの設定
ステップ 3:メインクラスターのサービスグリッドで外部アクセスルールの設定
メインクラスターのイングレスゲートウェイ Pod で Envoy の設定ダンプを確認すると、以下のような内容を確認できます。
まとめ
トラフィックミラーリングは、主にエンドクライアントに一切影響を与えることなく、実際の本番トラフィックでサービスをテストするために使用されます。既存のサービスをリライトして新バージョンが実際の多様な受信リクエストを同じように処理できることを検証する場合や、同じサービスの 2 つのバージョン間でベンチマーク比較を行う場合に特に有効です。また、リクエストに対して追加のアウトオブバンド処理を非同期で行う場合にも活用できます。たとえば、追加の統計データの収集や、拡張ロギングなどです。
まとめると、本番トラフィックをテストクラスターにミラーリングすることは、本番環境であっても非本番環境であっても、新しいデプロイメントのリスクを低減する非常に効果的な方法です。大規模なインターネット企業は、この方法を長年にわたり実践してきました。サービスグリッド技術は、レイヤー 7 ベースのシャドウトラフィック機能を提供し、クラスター内でのミラーリングからクロスクラスターのトラフィックレプリケーションまでを容易に実現できます。トラフィックミラーリングにより、よりリアルな実験環境を構築でき、実際のトラフィック環境下でのデバッグ、テスト、データ収集、トラフィックリプレイを実行できるため、オンライン作業をより制御しやすいものにします。さらに、サービスグリッド技術による一元的なメッシュポリシー管理は、技術スタックを統一し、チームを複雑な技術スタックから解放し、認知的な負荷を大幅に軽減します。
Related Articles
-
A detailed explanation of Hadoop core architecture HDFS
Knowledge Base Team
-
What Does IOT Mean
Knowledge Base Team
-
6 Optional Technologies for Data Storage
Knowledge Base Team
-
What Is Blockchain Technology
Knowledge Base Team
Explore More Special Offers
-
Short Message Service(SMS) & Mail Service
50,000 email package starts as low as USD 1.99, 120 short messages start at only USD 1.00
