API管理を楽にしてくれる「Kong Gateway」の仕組み
APIファーストのAPIマネジメントプラットフォームについて解説するのはKong株式会社 Wenhan Shi氏。かつては大規模なソフトウェア開発に従事しており、転職後は数種のOSS関連に携わり、今ではKong株式会社でソリューションエンジニアとしてAPIゲートウェイの紹介などをしている。
![s](http://cz-cdn.shoeisha.jp/static/images/article/19169/19169_1.jpg)
APIファーストの話に移る前に、コードファーストの時代を振り返ってみよう。Shi氏もLinuxカーネルの開発経験があり、チームをまたいでソースコードをかき集め、コンパイルに3~4時間かかっていたそうだ。
マイクロサービス化が進み、APIファーストな設計となれば、細かなサービスごとに開発や管理を行い、APIで連携するような形になる。
とはいえ、APIファーストになると別の課題が出てくる。例えばシンプルなECサイトでもショッピングと会計するだけで大量のマイクロサービスが登場する。問題が起きればどこからデバッグすればいいか探すのに苦労したり、APIごとに細かくアクセス制御したいとか、効率的にログを記録するにはどうするかなどの問題が出てきて、一元管理できる基盤がほしくなってくる。
こうしたAPIファーストの課題解決に役立つのがKongのAPIゲートウェイとなる「Kong Gateway」だ。もともとAPIゲートウェイとは外部にAPI公開するためのものだが、近年ではモノリシックなアプリケーションを複数のマイクロサービスに分解した環境で、APIを内部で統一的に管理するところで役立てられている(下図の中央)。Shi氏は「APIをAPIゲートウェイに登録して一元的に公開するとか、ロギングや認証認可などの共通業務をすべてゲートウェイレイヤに集約することで自社アプリケーション開発に集中できます」と話す。
![API Gatewayのアーキテクチャ](http://cz-cdn.shoeisha.jp/static/images/article/19169/19131_2.png)
サービスメッシュも含めたデザインパターンだと上図の右になる。APIゲートウェイは内外の通信を管理するので南北のつながりとなり、サービスメッシュは内部の通信を管理するので東西のつながりとなる。これらを合わせて東西南北でマイクロサービスを接続するようになる。
Kong Gatewayでは複数のアプリケーション、複数のサービスを一括管理できるのがメリットだ。
![Kong Gatewayにより共通ポリシーを提供](http://cz-cdn.shoeisha.jp/static/images/article/19169/19131_3.png)
例えば大きなモノリシックなシステムがあったとする。1つの巨大なロジックからポリシー(認証認可、ロギング、流量制限など)だけを抽出して、APIゲートウェイレイヤに乗せることができる。あるいはAPIをAPIゲートウェイに登録するだけでルーティングやロードバランスのポリシーをAPIゲートウェイレイヤに集約できて、そのための開発をしなくてすむのもメリットとなる。Shi氏は「Kong Gatewayはマイクロサービスだけではなく、サーバーレスの関数やサードパーティーのAPIなど一括して1画面で管理できます」と説明する。