APISIX 赋能人机交互中的运维与流量控制

Jing Yan

Jing Yan

December 16, 2022

Case Study

概要

CVTEとSeewoについて

CVTEは、LCD(液晶ディスプレイ)技術の世界的リーダーであり、LCDメインボード、インテリジェントインタラクティブパネル、医療機器、および関連するインテリジェントハードウェアを専門としています。2005年に設立され、LCD TVメインボードカテゴリーで31%の市場シェアを保持しています。この専門知識は、Seewo(デジタル教育ツールとサービスを提供する企業)やMAXHUB(高度なスマートコラボレーションプラットフォーム)など、いくつかの主要な業界ブランドの設立につながり、教育コラボレーションや企業コミュニケーションを強化しています。

6,500人以上の従業員を擁するCVTEのSeewoインタラクティブフラットパネルは、世界中の100万以上の教室で使用されています。ディスプレイドライバー、信号処理、電源管理、人間とコンピュータのインタラクション、アプリケーション開発、システム統合に関する専門知識を持ち、継続的な技術革新を通じて消費者向けおよび商用電子機器のコミュニケーション体験を向上させることに専念しています。

課題

  • 急速な事業拡大により、Seewoの2層ゲートウェイアーキテクチャで頻繁にリロードが発生し、システムのパフォーマンスと安定性に影響を与え、ユーザー体験が低下していました。
  • Seewoのゲートウェイは、トラフィック制御を効率的に調整するのに苦労しており、運用効率の低下とトラフィック制御能力の限界が生じていました。
  • Seewoのゲートウェイは、多くのドメインを管理し、さまざまな個別設定要件に対応する必要があり、細心の管理とカスタマイズされた制御が求められていました。

成果

  • APISIXは、より柔軟でシームレスな設定更新方法を提供し、Seewoが必要に応じてルートや証明書を簡単に更新できるようにし、最終的にSeewoの運用効率とシステムの安定性を向上させました。
  • APISIXを導入した後、Seewoはサーキットブレーカーとレートリミット機能を強化し、トラフィック制御を改善し、コアビジネスプロセスをさらに強化しました。
  • APISIXゲートウェイの強力な拡張性と優れたプラグインパフォーマンスにより、Seewoはカスタムプラグインを開発し、ゲートウェイ機能を拡張して、ますます増えるビジネスニーズに対応できるようになりました。

背景

Seewoのゲートウェイは、いくつかのバージョンを経て進化し、技術革新とチームの不断の努力を示す旅をたどってきました。各リリースごとに、前のバージョンを強化し最適化し、ユーザーにより効率的で安定したネットワーク体験を提供し、より豊富な機能を提供することを目指してきました。

  • 第一世代ゲートウェイ: Seewoの最初のゲートウェイは、OpenRestyとNGINXを使用して構築され、静的設定が行われていました。しかし、Secure Copy(SCP)を使用してデプロイする必要があり、スムーズなリリースを確保するために運用支援が必要でした。

  • 第二世代ゲートウェイ: 第二世代システムでは、upsyncモジュールをOpenRestyに統合し、Consulをサービスディスカバリに組み込むことで改善が図られました。このバージョンでは、開発者が独立して更新をリリースできるようになりましたが、スケーリングには依然として運用支援が必要でした。

  • 第三世代ゲートウェイ: Seewoの第三世代システムは、Kubernetes(K8s)上で開発されました。この適応により、以前のデプロイメントとスケーラビリティの課題は解決されましたが、新たな複雑さが生じました。一部のアプリケーションが依然としてホストマシン上にあることを認識し、ゲートウェイアーキテクチャでは、K8s上のIngress NGINXを第二層として組み込み、第一層ゲートウェイとしてOpenRestyを維持しました。しかし、このアプローチはスケーラビリティを向上させたものの、ルーティング変更時に持続的な接続を持つアプリケーションに影響を与える問題が発生しました。

ゲートウェイトラフィックトポロジ図

Seewoのビジネスの急速な成長により、全体的な安定性に対する要求が高まっています。この二層ゲートウェイ構造を採用することには、第一層のNGINXのリロードや第二層ゲートウェイのルーティング変更などの調整が、長時間持続する接続の切断につながるという問題があります。これは、特に接続が途切れないことが重要なシナリオにおいて、重大な問題を引き起こす可能性があります。例えば、Seewoのソフトウェアが教師の授業ステータスを取得している最中に、突然接続が切断される状況を想像してください。この中断は、ステータス取得プロセスを妨げるだけでなく、授業体験の質に直接的な影響を与えます。

APISIX使用前の欠点

  • 二層アーキテクチャでの時間のかかるリロード: 二層ゲートウェイ構造では、ドメインの追加、設定変更、特別なルールの実装などの小さな調整でも、時間のかかるNGINXのリロードが必要です。このプロセスは煩雑で、Seewoの運用効率に影響を与えます。

  • 管理不能なトラフィック制御と切り替え: 1,000万人以上のユーザーを抱えるSeewoのアーキテクチャにおける複雑なトラフィック制御の問題に対処するには、全体的な視点が必要です。Seewoは、広大なユーザーベースを考慮して、トラフィック制御のためのコンポーネントを調整するという大きな課題に直面しています。クライアント側の問題では、サーバー側の操作を妨げ、連鎖的な障害を引き起こすリスクがありました。ゲートウェイレベルでの強力なトラフィック制御の欠如は、Seewoのバックエンドシステムへの影響をさらに悪化させました。さらに、NGINXとIngressゲートウェイ間の相互作用における従来からの課題が、Seewoの将来のトラフィック切り替えに障害をもたらし、シームレスなインフラ運用のために迅速な解決が必要でした。

  • ドメインの過負荷とカスタマイズ: Seewoの運用では、700以上のドメインを管理し、それぞれにリダイレクト、拒否リスト、許可リストなどの多くのカスタマイズされた設定が伴っていました。これらの設定をAPISIXプラグインに適応させることは、大きな複雑さを引き起こしました。

  • 複雑な二層DNS: Seewoは、二層DNSアーキテクチャに直面し、ロールバック手順において不便さがありました。同時に、インフラ内での効率的な内部ネットワーク呼び出しに必要な最適化が欠けていました。

これらの課題に対応し、運用効率を向上させるために、SeewoはAPISIXゲートウェイソリューションを採用するという戦略的な決定を下しました。

APISIXへの移行時の解決策

APISIXルート生成とアーキテクチャの最適化

移行プロセスの初期段階で、Seewoは戦略的にAPISIXルートを作成し、システムの機能を強化することを目指しました。この決定により、既存のアーキテクチャを合理化し、「rewrite」や「set-header」などの特定の機能の追加層を排除しました。これらの機能は、第二層のIngressにシームレスに統合され、全体的な構造をより効率的で簡素化しました。特に、SeewoはAPISIXプラグインをNGINX設定にシームレスに組み込み、APISIXの多用途性とシームレスな統合能力を強調しました。

ルート転送の検証とパフォーマンスの評価

ルートを生成した後、SeewoはAPISIXの重要な役割を認識し、転送プロセス全体の検証に取り組みました。goreplayツールを使用して記録と再生を行い、ルート転送の精度を確保しました。これは、APISIXが精度を維持する上で重要な役割を果たしていることを示しています。その後、APISIXプラグインの機能を厳密に自動テストし、そのシームレスな動作を保証しました。機能が確認された後、SeewoはAPISIXが内部のパフォーマンス要件にどれだけ適合しているかを評価することに焦点を移しました。この評価を容易にするために、elastic-apmプラグインが導入され、QPSに影響を与える特定のプラグインが最適化され、APISIXがパフォーマンスと機能の両方を強化する多用途性を示しました。

シームレスなロールバックのためのトラフィック切り替えの合理化

ゲートウェイ移行において最も大きな課題は、トラフィック切り替え時に発生し、生産品質に直接影響を与えました。goreplayを使用してトラフィックを記録し再生したにもかかわらず、信頼性の高いロールバックソリューションが不可欠でした。トラフィック切り替えによる転送問題やAPISIXのクラッシュなどの異常が発生した場合、Seewoは迅速で信頼性の高いロールバックメカニズムを必要としていました。

この課題に対処するため、Seewoは戦略的にパブリックネットワークトラフィックの移行を開始し、APISIXの重要な役割を強調しました。この戦略的な操作により、Seewoは移行中にソースアドレスを効率的に変更し、異常な状況下での迅速なトラフィックロールバックを確保しました。異常な状況下でのトラフィック切り替えプロセス全体は、数秒以内にシームレスに実行でき、APISIXが迅速で中断のない移行を促進する上で重要な役割を果たしていることを示しました。

トラフィック切り替え

APISIXデプロイメントにおけるSSLとルートマッチングの課題の克服

Seewoが初めてAPISIXを実装した際、SSLハンドシェイクに関連する課題に直面しました。例えば、古いシステムやOpenSSLライブラリでは、ssl_ciphersがサーバーのデフォルト値と交差しないため、SSLハンドシェイクが失敗することがありました。しかし、APISIXチームは積極的にこれらの問題に対処しました。Seewoの古いシステムでの互換性の課題を乗り越え、バージョンアップを行う中で、SeewoはAPISIXチームと緊密に協力し、効果的な解決策を見つけ、デプロイメント前にSSLハンドシェイクの交差を確認することを推奨し、シームレスな移行を実現しました。

一方、APISIXのバージョン2.15 LTSへのアップグレードにより、特にルートマッチングにおいて新たな課題が生じました。問題に直面したにもかかわらず、APISIXチームは迅速に対応し、マスターブランチで解決しました。これらの課題にもかかわらず、APISIXは積極的に強力なサポートを提供していることを強調することが重要です。この協力は技術的な領域を超え、ポジティブなビジネス開発を推進するための共有の旅を表しています。

APISIX使用後の成果

運用効率の最適化

APISIXを運用フレームワークにシームレスに統合した後、Seewoはリロードに関連する課題を完全に解消するという大きな成果を達成しました。この成果により、Seewoはルートや証明書の更新を驚くほど簡単に実行できるようになり、開発者チームのワークフローが効率化されました。

トラフィック管理能力の向上

APISIXの驚異的な拡張性と優れたプラグインパフォーマンスにより、SeewoのインフラにAPISIXを統合することで、サーキットブレーカーとレートリミット機能が大幅に向上しました。この戦略的な実装により、Seewoはトラフィックを効果的に管理し制御する能力が強化され、コアビジネスプロセスが大幅に強化されました。APISIXの固有の強みは、Seewoの運用全体の回復力を高め、よりスムーズで信頼性の高いサービス提供を確保します。APISIXの強力な拡張性を活用し、Seewoはプラグイン開発に積極的に取り組み、進化するニーズに対応する能力をさらに強化しています。

ゲートウェイ強化のためのカスタムプラグイン開発

Seewoは、拡張性と信頼性のあるプラグインパフォーマンスを誇るAPISIXの能力を活用し、カスタムプラグイン開発に取り組んでいます。特に注目すべき例として、APISIXに統一認証機能をシームレスに統合し、新しいサービスをオンボーディングする際に別個の認証システムが必要なくなりました。この合理化されたアプローチにより、Seewoの製品イテレーションプロセスが大幅に加速し、変化する要件や進化する市場のニーズに迅速に対応できるようになり、より敏捷で応答性の高い運用フレームワークが構築されました。

コスト削減のための効率的なアーキテクチャ

Seewoは、冗長なNGINX層を排除することで、コスト削減と運用効率の向上を実現しました。以前の二層ゲートウェイ構造では、開発者は最初のNGINX層に対して不透明でした。しかし、二つのゲートウェイ層を一つに統合することで、冗長性が排除され、開発者はルート、プラグインなどのアーキテクチャ設定を透明に把握できるようになりました。この調和のとれた統合により、トラブルシューティングと問題解決が効率化され、Seewoのインフラ内での透明性と効率性を促進する上でAPISIXが重要な役割を果たしていることが明らかになりました。

まとめ

APISIXを導入して以来、Seewoは運用効率とトラフィック制御能力を大幅に向上させました。同時に、ゲートウェイ機能の強化により、製品イテレーションプロセスが加速し、全体的な作業効率が向上し、コストが削減されました。この旅を通じて、Seewoはコミュニティに積極的に貢献し、エコシステムプラグインに関連するさまざまな問題に対処し改善するために、合計8つのプルリクエストを提出しました。これらの貢献には、batch_request機能でのカスタムURIのサポートの改善や、hmac-authプラグインのリクエストボディ検証の実装が含まれます。今後、SeewoはAPISIXの機能を最大限に活用し、探求することを目指し、将来的により多くのコラボレーション機能を導入することを期待しています。

Tags: