API管理を楽にしてくれる「Kong Gateway」の仕組み
APIファーストのAPIマネジメントプラットフォームについて解説するのはKong株式会社 Wenhan Shi氏。かつては大規模なソフトウェア開発に従事しており、転職後は数種のOSS関連に携わり、今ではKong株式会社でソリューションエンジニアとしてAPIゲートウェイの紹介などをしている。
APIファーストの話に移る前に、コードファーストの時代を振り返ってみよう。Shi氏もLinuxカーネルの開発経験があり、チームをまたいでソースコードをかき集め、コンパイルに3~4時間かかっていたそうだ。
マイクロサービス化が進み、APIファーストな設計となれば、細かなサービスごとに開発や管理を行い、APIで連携するような形になる。
とはいえ、APIファーストになると別の課題が出てくる。例えばシンプルなECサイトでもショッピングと会計するだけで大量のマイクロサービスが登場する。問題が起きればどこからデバッグすればいいか探すのに苦労したり、APIごとに細かくアクセス制御したいとか、効率的にログを記録するにはどうするかなどの問題が出てきて、一元管理できる基盤がほしくなってくる。
こうしたAPIファーストの課題解決に役立つのがKongのAPIゲートウェイとなる「Kong Gateway」だ。もともとAPIゲートウェイとは外部にAPI公開するためのものだが、近年ではモノリシックなアプリケーションを複数のマイクロサービスに分解した環境で、APIを内部で統一的に管理するところで役立てられている(下図の中央)。Shi氏は「APIをAPIゲートウェイに登録して一元的に公開するとか、ロギングや認証認可などの共通業務をすべてゲートウェイレイヤに集約することで自社アプリケーション開発に集中できます」と話す。
サービスメッシュも含めたデザインパターンだと上図の右になる。APIゲートウェイは内外の通信を管理するので南北のつながりとなり、サービスメッシュは内部の通信を管理するので東西のつながりとなる。これらを合わせて東西南北でマイクロサービスを接続するようになる。
Kong Gatewayでは複数のアプリケーション、複数のサービスを一括管理できるのがメリットだ。
例えば大きなモノリシックなシステムがあったとする。1つの巨大なロジックからポリシー(認証認可、ロギング、流量制限など)だけを抽出して、APIゲートウェイレイヤに乗せることができる。あるいはAPIをAPIゲートウェイに登録するだけでルーティングやロードバランスのポリシーをAPIゲートウェイレイヤに集約できて、そのための開発をしなくてすむのもメリットとなる。Shi氏は「Kong Gatewayはマイクロサービスだけではなく、サーバーレスの関数やサードパーティーのAPIなど一括して1画面で管理できます」と説明する。
馴染みの技術からLLM実装まで! 多様なプラグインを活用可能
Kong Gatewayではカスタマープラグイン開発も可能となる。現在Kongには、100以上のプラグインがあり、多数の言語やプロトコルがサポートされているため、自社要件に合わせた開発ができる。Shi氏は「KongはNginxをベースに開発したので、ネイティブにはLuaです。しかしJavaScript、Python、Goなど馴染みのある言語でカスタマープラグインを開発できるのです」と言う。プロトコルもHTTPやRESTはもちろん、GraphQL、gRPCなど「一般的なものはすべて網羅的にサポートしています」とShi氏。
デプロイ方式が柔軟であることも特徴だ。Kong Gatewayはパッケージサイズが30MB程度でコンパクトなので、クラウドやコンテナなど多種多様な環境にデプロイしやすく、スピーディーにスケールアウトできる。
さらにShi氏が「他のゲートウェイ製品に絶対負けません」と強調するのがパフォーマンスの良さだ。スループットは1ノードあたり50k以上のTPSを実現可能だ(およそ8コアのCPUでメモリ16GB程度を想定)。レイテンシもミリ秒未満を実現している。
また開発者にとってうれしいのは自動化かもしれない。Kong Gatewayの設定やデプロイはすべてCI/CDで実行できる。設定変更はシステムがオンラインの状態でできるため、サービスの停止や再起動は必要なく、顧客への影響も最小限で済む。
あらためてShi氏は「先に述べたようにプラグインは100以上あり、全部アウトオブザボックスですぐに利用できます。プラグインのパーツはパッケージに入っているので有効化するだけで、1秒未満で起動します。Kongのプラグインは大きなメリットとなるでしょう」と胸を張る。
プラグインの例として、Shi氏はアクセス制限のプラグインを挙げる。本番環境でアクセスのスパイクが生じたため、ユーザーアクセスを制限するプラグインを活用することにする。ユーザーはプラグインを有効化すれば、システムを稼働させたまま1秒未満でプラグインが機能しはじめて制限がかかるようになる。
オンラインのまますぐ利用できることに加えて「数は関連製品のなかでも最大級」とShi氏は言う。プラグインには認証認可に関わるもの、流量制限をかけるもの、ロギング、サーバーレス、セキュリティなどがある。これらは「プラットフォームに依存せず、APIに付加価値を追加できます」とShi氏は言う。
さらにShi氏は(2月16日)Developers Summit当日に発表された「AI Gateway」についても、いち早く解説してくれた。LLM実装の統合を可能にする「ai-proxy」プラグインや、AI機能を組み込むことができる「ai-request-transformer」と「ai-response-transformer」プラグインなどAI関連のプラグインが多く実装されている。本機能により、AIの導入時の障壁は取り払われ、AI搭載アプリケーションを迅速に提供できるようになるという。Shi氏は「Kongのプラグイン開発のスピードは早いので、新しいプラグインがどんどん出てきますので、ぜひOSSで試してみてください」と話す。
アプリケーションのライフサイクル管理を4ステップで解説
日本における採用事例には、まずLINEヤフーが挙げられる。運用しているAPIの数も、トラフィック量も膨大であることは想像に難くない。同社ではサービス開発と展開のスピードを高めるために、KongのAPIゲートウェイほかメッセージキューイングサービスやFaaSを実装することで、コード作成時間を大幅に短縮できるようになったという。
加えてLINEヤフーではロギングと認証認可をKong GatewayのAPIゲートウェイレイヤに一元化することで運用管理の負担を減らすことにも役立てることができた。またマルチテナント機能を活用することで、サービス開発とプラットフォーム運用を分離し、100を超えるクラウドワークスペース間の相互運用性を実現した。
もう1社はインターネット関連の大手日本企業。大規模有名サイトを運営しており、ピークトラフィック時のレイテンシの長さが課題となっていた。そこでKong Gatewayを導入することで低レイテンシ向けに最適化したカスタムプラグインを開発することで、本番環境で150個のプラグインを使用している状態ですべてのリクエストのレイテンシを4ms未満にできた。
それまでは手動でスケーリングしていたところをCI/CDパイプラインで実施できるようになり、効率的にスケールアウトできるようになったことで100k以上のTPSで処理できるようになった。他にもGUIのKong Manager(運用管理ツール)で運用や設定、性能を可視化できるようになるなど運用面でも改善できた。さらにKongではロギングやメトリクス情報をエクスポートできるため、慣れ親しんだロギング基盤でレイテンシなどを確認できるようになった。全社的にシンプルな運用と保守管理が実現した。
次にアプリケーションのライフサイクル管理の実現について考えて行こう。Shi氏は4つのステップに分解した。1ステップ目はアプリケーションを実装して公開、2ステップ目はオペレーション、3ステップ目はログからトレースを確認、4ステップ目は可視化して分析する。そうしてアプリケーションをアップグレードして実装するというライフサイクルを回していく。
それぞれの段階でKong Gatewayをどのように活用するかも併せて見ていこう。1ステップ目の実装では、シンプルにサービスとルートの登録をするだけでKongで管理できるようになる。外部に公開する時には、Kong Gatewayで決められたポリシーを適用して、複数の方法(HTTPやgRPCなど)で公開できる。
2ステップ目のオペレーションでは、GUIとCLIの2通りで操作できる。人間が操作する時にはGUIで、CI/CDに組み込み自動化する時にはCLIを使うといいだろう。3ステップ目のアクセス情報(ログ)出力では、Prometheusのプラグインでメトリクス情報を出力したり、HTTPでリクエストとレスポンスのログをエンドポイントに出力することもできる。複数のサービスや複数のAPIがあれば、Kongに集約したり、下図のようにFilebeatを使うこともできる。
4ステップ目のログ可視化では、Kong Gatewayのダッシュボードを使うことはもちろん、プラグインを通じて他の基盤(例えばElasticsearch)と連携してログを可視化することもできる。
そうして一周し再び実装する時、つまりアプリケーションをアップグレードする時には、Kongのカナリアリリースのプラグインが有効だ。例えば元のバージョンは70%、新しいバージョンは30%とするなど、ユーザーからの流量を分けるように設定できる。最初は少なめの流量で様子を見て、大丈夫そうなら増やして行くことで安全にアップグレードすることができる。
最後にShi氏はデモを披露した。まずはアプリケーションをKong Gatewayに登録し、人気の流量制限とキャッシングのプラグインを実装、さらにHTTPロギングのプラグインを実装したところで、ダッシュボードでログを確認する。最後に新しいバージョンのアプリケーションをカナリアリリースでアップグレードする様子を披露し、講演を締めた。
Kongについて詳しく知りたい方はこちら!
APIマネジメントプラットフォームのリーディング企業であるKongは、世界中の企業が「APIファースト」企業になることを使命としています。本記事でご関心を持たれた方は、下記メールアドレス宛にお問い合わせください。
Kongに関するお問い合わせはこちら:info-jp@konghq.com