API7 Enterprise的Canary流量切换策略实现精准流量控制

January 29, 2024

Products

現代のマイクロサービスアーキテクチャにおいて、APIゲートウェイはシステムのトラフィックエントリとして機能し、リクエストのルーティング、認証、レートリミット、サーキットブレーカーなどの重要なタスクを処理します。API7 Enterpriseは、APISIXを基盤とした堅牢なAPI管理プラットフォームであり、ユーザーに豊富で柔軟な機能を提供します。その中でも、カナリアトラフィックシフトは、シームレスなサービスアップグレードや新機能の検証などのシナリオで重要な役割を果たします。

機能の概要

アップストリームサービスに基づくアップストリームの作成

API7 Enterpriseのゲートウェイグループにサービスがデプロイされると、管理者は既存のベースラインアップストリームからカナリアトラフィックシフト用の新しいアップストリームを簡単に作成できます。このアップストリームは、ベースラインアップストリームのすべての設定を継承するか、テスト済みの過去の設定を選択的に継承することができます。この設計により、設定プロセスが大幅に簡素化され、繰り返し作業や設定ミスのリスクが低減されます。さらに、カナリアトラフィックシフト用のアップストリームは、新しいノードの設定やサービスディスカバリメカニズムの統合をサポートしています。これにより、既存のビジネスロジックに影響を与えることなく、一部のトラフィックを新しいサーバーや環境にリダイレクトして、パフォーマンステストや機能検証などの評価を行うことが可能です。

柔軟なシフト条件と重み付け

カナリアトラフィックシフト戦略を開始する際、管理者はシフト条件と重み付けを細かく定義できます:

シフト条件: どのトラフィックをカナリアトラフィックシフト用のアップストリームにリダイレクトするかを決定します。管理者は、論理演算子(「AND」や「OR」など)を使用して複数の条件を組み合わせ、特定の条件を満たすリクエストのみがカナリアトラフィックシフト環境に入るようにすることができます。

判断に使用できるプロパティは以下の通りです:

  • ヘッダー: リクエストヘッダーの特定のフィールド(例: User-Agent)。

  • Cookie: クライアントから送信されるCookie情報(ユーザー識別やセッション状態の認識に使用)。

  • クエリパラメータ: URLのクエリ文字列パラメータ。

  • 変数: システムまたはカスタム変数(地理的位置やユーザーロールなど)。

    マッチングロジックには、等しい(==)、等しくない(~=)、正規表現マッチング(~~)などがあり、条件判断の柔軟性と精度を確保します。

    例えば、管理者は次のシフト条件を設定できます:「リクエストヘッダーのUser-Agentフィールドに'iPhone'が含まれ、かつCookieのuser_groupフィールドが'test_group'に等しい場合、リクエストをトラフィックシフト用のアップストリームにリダイレクトする。」

シフト重み: カナリアトラフィックシフト用のアップストリームにリダイレクトするトラフィックの割合を決定します。これはパーセンテージ値であり、管理者はカナリアトラフィックシフト環境に入るトラフィックを徐々に増減させることができます。

初期段階では、重みを低い値(例: 10%)に設定し、新機能を小範囲でテストすることができます。テストが進み、結果が収集されるにつれて、重みを徐々に増やし、最終的には100%のトラフィックを新バージョンに切り替えることができます。

シフト条件と重みを柔軟に調整することで、管理者はカナリアトラフィックシフトテストの範囲と影響を効果的に制御し、新機能のスムーズな展開とシステムの安定性を確保できます。

API7 Enterpriseのトラフィックシフト

実用的なアプリケーションシナリオ

  1. 新機能の検証: 開発チームが新機能を完成させ、リリース準備が整った際、カナリアトラフィックシフトを使用して、新機能を一部のユーザーや特定のユーザーグループに初期展開できます。これにより、実際の環境でユーザーフィードバックを収集しながら、問題が発生した場合の影響範囲を管理できます。

  2. パフォーマンステスト: 大規模なイベントや高負荷シナリオにおいて、管理者はカナリアトラフィックシフトを使用して、一部のトラフィックを新しく設定された高容量ノードにリダイレクトし、システムのパフォーマンス限界と安定性をテストできます。

  3. 段階的な移行: サービスのアップグレードや移行中、カナリアトラフィックシフトを使用して、管理者は古い環境から新しい環境へのトラフィックを段階的に移行し、スムーズな移行プロセスを確保できます。

ベストプラクティス

  1. 適切なシフト条件の設定: 実際のニーズに基づいて適切なシフト条件を選択することが重要です。例えば、特定のユーザーグループを対象としたテストでは、Cookieやヘッダーのユーザー識別子を使用して、正確なシフトを実現できます。

  2. 重みの動的調整: テスト中に、テスト結果やユーザーフィードバックに基づいてシフト重みを動的に調整することで、有効なデータの収集を加速したり、問題の範囲を狭めたりできます。

  3. 監視とアラート: トラフィックシフト中に関連するメトリクスの監視を強化し、適切なアラートメカニズムを設定することで、問題を迅速に検出し、解決できます。

結論

API7 Enterpriseのカナリアトラフィックシフトを通じて、企業はサービスの安定性を確保するだけでなく、新機能のテストやパフォーマンス最適化などの操作を柔軟に行うことができ、ビジネスの急速な成長を強力にサポートします。

Tags: