APISIX 大幅提升了 Junrunrenli 的研发效率
Peng Yuan
December 12, 2022
概要
課題
- 多数のビジネスシステム、CLB(設定可能なロジックブロック)のトラフィック転送、頻繁な設定変更により、開発とメンテナンスに多くの時間が消費される。
- 高並列ビジネス、数十億のデータをエクスポートする際にデータベースが不安定になり、サービスを再起動するか新しいバージョンをリリースするしか問題を解決できない。
- アクセスされたビジネスデータを監督する統一プラットフォームが不足している。
- 大規模で複雑なトラフィックがあり、効率的なトラフィック管理戦略が不足している。
- 1日あたり数千万のAPIリクエストがあり、大量のログデータが生成され、ディスクの負荷容量が限られている。
成果
- Apache APISIXは、Junrunrenliにさまざまな可観測性とセキュリティ保護方法を提供し、1日あたり数千万のアクセスを効率的にサポートしている。
- 開発のデリバリー効率が大幅に向上:汎用ドメイン名の設定が数秒で有効になり、コントロールプレーンがDevOpsの設定負担を軽減する。
- ロードバランサーを200以上から10以下に削減し、多くのコストを節約した。
Junrunrenli Human Resourcesについて
Junrunrenli Human Resourcesは、技術駆動型の人事ソリューションサービスプロバイダーで、主にブルーカラー雇用市場向けのワンストップ人事サービスを提供している。
2019年に設立されたJunrunrenliは、1000以上の顧客にサービスを提供し、300万人以上のブルーカラーをカバーしている。3年間で、開発チームは20人未満から250人以上に成長し、15以上の人事サービスプラットフォームを自社開発した。さらに、Junrunrenliは、B向けのSaaSアプリケーションとC向けのアプリケーションを含む統合人事サービスエコシステムを構築している。
イノベーションのペースが速まるにつれ、システムアーキテクチャに対する要件も高まっている。高可用性、並列性、パフォーマンスに加えて、Junrunrenliは弾力的な拡張性を必要としている。
では、JunrunrenliはどのようにAPIゲートウェイを選択したのか?
APISIXが選ばれた理由
Junrunrenliチームは、多くのAPIゲートウェイを調査し、いくつかの候補を絞り込んだ。その中で、Junrunrenliのニーズを完全に満たさないものは除外された。以下に、JunrunrenliのAPIゲートウェイ選択の詳細を示す。
上記の図は、Apache APISIXの機能を示しており、赤色で示されている部分がJunrunrenliが最も重視するポイントである。その理由は以下の通り:
-
Junrunrenliには多くの内部ビジネスシステムと自社構築の内部エコシステムがある。そのため、迅速なビジネス変化をサポートする堅牢なAPIゲートウェイが必要であり、頻繁にルートの設定や変更を行う必要がある。APISIXは、APIアクセスを制御するためのさまざまな方法を提供する。
-
Junrunrenliのビジネスは、同時に同じことを行うことに焦点を当てている。例えば、数十億の給与を支払ったり、その金額の資金を引き出したりする。数十万人のブルーカラーユーザーが同時にタイムカードを押し、契約を結び、タスクと給与を受け取る。そのため、並列トラフィックが非常に大きく、特に中国の「ブラックフライデー」では通常の2倍になる。
-
さまざまなシステムと個別のニーズにより、Junrunrenliは自社開発を行っている。「APISIXは99%のニーズを満たすが、残りの1%は自社で開発する必要がある」と、Junrunrenliの技術専門家であるYuan氏は語る。KongとAPISIXはOpenResty NGINX + Luaに基づいて開発されていることは周知の事実である。Luaでプラグインを開発するには追加のコストがかかるが、幸いにもAPISIXの外部プラグインはJavaプログラミング言語をサポートしており、学習コストを節約できる。さらに、APISIXのコミュニティは特に活発である。
JunrunrenliがAPISIXでシステムを強化
以下は、Junrunrenliのアーキテクチャ図の全体概要である。
Junrunrenliは、APISIXを使用した後、以下の4つの成果を上げた。
1. 効率的なルート管理のための革新的なルート戦略を作成
Radixtreeとetcdに基づくApache APISIXは、高速ルートマッチングと迅速な設定同期を実現できる。これらはすべて、高速パフォーマンスと超低遅延応答を実現するために設計されている。
システムのピーク使用期間中、MySQLデータベースは数百万のレポートデータをエクスポートする際に応答できなくなり、サービスが利用不能になることがある。この問題は、再起動後にのみ通常の動作に戻る。さらに、エクスポートが続くと状況が悪化し、新しいリリースでしか解決できない。
APISIXは、ルートの優先度設定とserverlessプラグインによるAPIの緊急シャットダウンを数分で設定できるため、ルートのインテリジェントな管理を可能にする。
さらに、Junrunrenliのビジネスシステム、特にSaaSシステムは、顧客定義のドメイン名アクセスをサポートする必要がある。そのため、Junrunrenliチームは、同じサービスに対して複数のドメイン名を設定することでエントリを統一した。設定は一度行うだけで全体のシステムで利用できる。
2. 全体のセキュリティ制御のためのPaaSプラットフォームを分離
Junrunrenliは、APISIXのカナリアリリース、セキュリティ制御、ID認識などの特性を利用して、上位ビジネスシステムのセキュリティ制御のためにPaaSゲートウェイを設定した。
以下の図は、JunrunrenliがAPISIXに基づいて2層のゲートウェイアーキテクチャを作成し、その上に論理的に分離されたゲートウェイ(PaaSプラットフォーム)を設定したことを示している。
ユーザーはCLBにアクセスし、その後APISIXがリクエストをビジネスシステムに転送する。ユーザーが使用する機能がPaaS機能を使用する必要がある場合、PaaSサービスゲートウェイを介してアクセスされる。PaaSプラットフォームはk8s内の閉じた領域であり、多くの重要なサービスが含まれている。
3. APISIXのtraffic-splitプラグインにより、自動トラフィック管理を実現
APISIXのtraffic-splitプラグインにより、JunrunrenliはSSO(シングルサインオン)、PaaSサービス、給与サービスなどのコアサービスのトラフィックを管理できるようになった。
以下の2つのシナリオがある:
- タグフィルタリング: テストユーザーのトラフィックは、ヘッダーやその他のパラメータに基づいて、プレプロダクションサービスに転送される。その後、テストエンジニアはプレプロダクション環境で検証を行い、その後本番環境で検証を行う。
検証が完了した後、エンジニアは重みに基づいてトラフィックを切り替え、一定期間観察した後にすべてのトラフィックを新しいバージョンに切り替える。
- マルチバージョン共存: 1つのサービスに複数のバージョンが存在する。この方法により、異なるビジネスシステムが異なるバージョンにアクセスできる。タグを活用することで、トラフィックを適切なサービスに転送できる。
4. APISIXのKafkaプラグインにより、透明なログデータ監視を実現
この図からわかるように、APISIXとpodサービスはk8s上にデプロイされており、すべてのバックエンドルートは同じサービスにバインドされている。APISIXのKafkaプラグインは、ログデータを収集するために特化している。
観測データによると、1日あたり数千万のAPIリクエストがあり、1日あたり30GBのログデータが生成され、ログの総量は1TB以上に達する。
SkywalkingとSky Agentもpodのサービス起動スクリプトに設定されている。Kafkaプラグインと組み合わせることで、Skywalkingとログクラウド上の呼び出しリンク全体をrequestId
とtraceId
に基づいて観察でき、各リンクのログ記録とAPIリクエストの消費時間が透明化され、ログデータ監視が可能になった。
JunrunrenliがAPISIXを使用した後のメリット
1. ビジネス開発をサポート
APISIXを使用した後、Junrunrenliのシステムは機能がより豊富になり、パフォーマンスがより強力になった。APIサービスに対してさまざまな可観測性とセキュリティ保護方法を提供し、1日あたり数千万のアクセストラフィックを効率的にサポートしている。
2. 開発のデリバリー効率が向上
APISIXを使用する前、JunrunrenliはDNS解決ごとに10分かかっていたが、現在では数秒で汎用ドメイン名を設定できる。10以上のシステムと100以上のサービスがあり、多くの設定がある。開発者はCLBとNGINXの両方で設定を変更する必要があった。APISIXは設定変更のための中央データプレーンを提供し、DevOpsの作業負荷を大幅に軽減した。
3. コストを削減
ロードバランサーの高コストを削減し、200以上のサービスを10以下に削減した。
Junrunrenliの将来の計画
-
Junrunrenliは、java-plugin-runnerをカスタマイズし、sentinelを統合して、プラガブルな動的レート制限を有効にし、日次および月次のトラフィック制御をサポートする予定である。
-
Junrunrenliチームは、APIリクエストログデータを保存し、ルールエンジンに基づいてリスク制御識別を行い、アラーム情報をプッシュし、迅速に運用とメンテナンスに介入することを検討している。
-
Junrunrenliは、階層化されたガバナンスを実施する予定である。現在は1つのエントリしかないが、後で複数のAPISIXクラスターを提供する予定である。例えば、オープンプラットフォームは、Junrunrenliのk8sの内部サービスに別のエントリからアクセスできる。
-
さらに、Junrunrenliは、ログとskyプラグインを組み合わせて、フルチェーンのログ分析を行う予定である。
APISIXのサポートを探していますか?
Apache APISIXは、オープンソースの動的でスケーラブルな高性能クラウドネイティブAPIゲートウェイであり、すべてのAPIとマイクロサービスに対応している。API7.aiによってApache Software Foundationに寄贈されたAPISIXは、トップレベルのオープンソースApacheプロジェクトに成長した。
Junrunrenli Human Resourcesのように、自信を持って開発を加速したいですか?APISIXのサポートを最大限に活用するには、API7が必要です。私たちは、APISIXとAPI管理ソリューションに対する深いサポートを提供します!
いつでもご連絡ください:https://api7.ai/contact。