よくあるご質問(FAQ)

Kongとは何ですか?
Kongは、ハイブリッドクラウド環境やマルチクラウド環境でAPIやマイクロサービスの連携をかつてないほど簡単かつ高速に処理します。KongのエンドツーエンドのAPIプラットフォームは数々の大手企業に採用され、世界中で数兆件のAPIトランザクションを処理しています。
Kong Gatewayは世界で最も広く使われているオープンソースのAPIゲートウェイです。マルチクラウドやハイブリッドでの利用に適した設計で、マイクロサービスや分散アーキテクチャ向けに最適化されています。
軽量なプロキシを土台として、あらゆる場所で稼働するすべてのマイクロサービスアプリケーションに、抜群のレイテンシ、パフォーマンス、スケーラビリティをもたらします。Kongのプラグインアーキテクチャのもとで、トラフィックのきめ細かな制御が可能です。
Kong Enterpriseのサービスコントロールプラットフォームは、あらゆるサービスにわたる企業の情報連携を仲介します。Kong Enterpriseは、豊富な稼働実績を持つKongのオープンソースのコアプログラムを土台としています。Kong Enterpriseを導入することで、ハイブリッドクラウド環境やマルチクラウド環境のAPIやマイクロサービスをシンプルに管理できます。
異常と脅威の早期特定や、タスクの自動化、組織全体の可視性の向上が可能です。
Kongを利用するメリットは何ですか?
現在市場に出ている他のAPIゲートウェイやプラットフォームにはない重要なメリットがKongには数多くあります。Kongは以下の特徴をすべて備えたAPIゲートウェイプラットフォームです。
- 抜群の拡張性
- 超高速
- オープンソース
- あらゆるプラットフォームに対応
- APIライフサイクル全体を管理
- クラウドネイティブ
- RESTful
Kongの全機能については、公開ドキュメントをご覧ください。
Kongの仕組みは?
Kong Server
Kong ServerはNGINXを基盤としています。APIリクエストを実際に処理し、基盤のAPIに付加機能を適用するためのプラグインを設定どおり実行したうえで、プロキシとしてリクエストを上流に送ります。Kongはいくつかのポートで通信をリッスンします。これらのポートは、外部のトラフィックを許可するように設定する必要があります。デフォルトのポートは以下のとおりです
- 8000:プロキシ用です。KongはこのポートでHTTPトラフィックをリッスンします。proxy_listenを参照してください。
- 8443:HTTPSトラフィックのプロキシ用です。proxy_listen_sslを参照してください。
加えて、以下のポートを内部的に使用します。本番環境ではこれらのポートにファイアウォールを適用する必要があります。
- 8001:Kongの操作に使用できるAdmin APIを提供します。admin_api_listenを参照してください。
- 8444:KongのAdmin APIをHTTPS経由で提供します。admin_api_ssl_listenを参照してください。
Admin APIでは、Kongの設定、ユーザーの新規作成、プラグインの有効化/無効化など、いくつかの操作が可能です。Kongの操作にはこのRESTful APIを使用することになるため、Kongは既存のシステムとも非常に簡単に統合できます。
Kongのデータストア
Kongは、登録済みのAPI、コンシューマ、プラグインなどの設定を外部のデータストアに保存します。プラグイン自体も、例えばレート制限のデータやコンシューマの認証情報など、永続化が必要な一つひとつの情報を保存できます。Kongはこうしたデータのキャッシュを保持しておくことで、リクエストのプロキシ処理の際にデータベースとのやり取りを行わなくて済むようにしています。こうしたやり取りはパフォーマンスに大きく影響するからです。データのキャッシュは、Admin APIへの呼び出しを行うときのノード間通信で無効化されます。したがって、Kongのデータストアを直接操作することは控える必要があります。ノードのキャッシュが適切に無効化されないことになるためです。Kongはこのようなアーキテクチャとなっていることから、新しいノードを追加するだけで水平スケールが可能です。各ノードは同じデータストアに接続し、独自にキャッシュを保持します。
サポートしているデータストアは?
リリース2.7以降では、Kong Gatewayの設定のデータストアとしてCassandraを使用することは非推奨となります。
Apache Cassandra
Apache Cassandraは堅牢で信頼性の高い人気のデータストアで、NetflixやFacebookなどの大手企業により採用されています。優れたパフォーマンスと、耐障害性のあるアーキテクチャを備えていることから、単一のデータセンターとマルチデータセンターの両方の環境で安全なデータ保存に効果を発揮します。可用性に優れた分散型のKong環境を構築するときには、Cassandraをメインのデータストアとして使用できます。複数のリージョンにわたるインフラも、Cassandraのデータストアを使用して比較的容易に構成できます。Cassandraが最高のパフォーマンスを発揮するのは、例えばAWSのm4.xlargeインスタンスのように、CPU数やメモリー容量が潤沢なマシンを使用する場合です。Cassandraのサイジングや構成については、以下のリソースを参考にしてください。
- データレプリケーションについての情報と、便利な計算ツール
- データの読み書きの一貫性
- 本番環境の推奨設定
備考:Cassandraのクラスタの管理やスケーリングを自ら行うことを望まない場合は、Instaclustrなどのサービスプロバイダが提供しているCassandraのマネージドサービスの利用を検討してください。
PostgreSQL
PostgreSQLは、Kongで使用されるSQLデータベースとして定番のひとつです。比較的シンプルであることや、パフォーマンスに優れていることから、シングルインスタンスや一元的な環境での使用に適しています。Amazon RDSを筆頭に、PostgreSQLのインスタンスのホスティングやスケーリングに対応しているクラウドプロバイダは数多くあります。CassandraとPostgreSQLのどちらを使用する場合も、Kongは独自のキャッシュを保持します。したがって、Kong Gatewayやプラグインのパフォーマンスは、大半のユースケースでミリ秒未満となります。
Kongのスケーラビリティは?
Kongのスケーリングに関して留意すべきことは、主にKongのサーバーのスケーリングが必要になることと、最終的にデータストアがインフラの単一障害点とならないようにすることです。
Kong Server
Kong Serverのスケールアップやスケールダウンは比較的容易です。各サーバーはステートレスですので、同じデータストアを使用するノードをロードバランサの配下で必要な数だけ追加または削除できます。ノードを終了させるときには、そのサーバーで実行中だったHTTPリクエストが中断する可能性があることに注意してください。ノードを終了させる前に、すべてのHTTPリクエストの処理が完了していることを確認するとよいでしょう。
Kongのデータストア
データストアのスケーリングは、通常は主たる懸念事項ではありません。前述のとおり、Kongは独自のキャッシュを保持していることから、データストアのトラフィックが比較的抑えめであることが主な理由です。一方で、インフラに単一障害点(SPOF)を生じさせないことを常に心がけてください。そのために、データストアを細かく監視し、データのレプリケーションを確保してください。分散型のCassandraならではの大きなメリットに、使いやすいレプリケーション機能があります。このFAQのCassandraのセクションで紹介したリソースを参照してください。
プラグインとは何ですか?
プラグインはKongで最も重要な機能のひとつです。KongのAPIゲートウェイには、プラグインとして提供されている機能が数多くあります。認証、レート制限、変換、ログ記録などはいずれも、プラグインとして個別に実装されています。プラグインのインストールと設定は、Kongに付随して動作するAdmin APIを通じて行うことができます。ほとんどのプラグインは、プロキシ先の特定のサービスを対象にしたカスタマイズだけでなく、特定のコンシューマを対象にしたカスタマイズも可能です。
技術的に見ると、プラグインとはLuaのコードであり、リクエストとレスポンスのプロキシ処理のライフサイクルのなかで実行されます。プラグインを利用することで、独自のニーズや統合上の課題に合わせてKongを拡張できます。例えば、APIのユーザー認証をサードパーティのエンタープライズセキュリティシステムと統合する場合には、その処理を専用のプラグインで実装して、当該のAPIを対象とするすべてのリクエストに適用することになります。
Kong Plugin Hubには、そのままデプロイできる多種多様なプラグインがあります。プラグイン設定APIでプラグインを有効化する方法もあわせてご確認ください。このほか、コミュニティが開発したプラグインがGitHubにあります。開発者の皆様は、プラグイン開発ガイドをぜひご覧になり、Kongのプラットフォームの機能を拡張する新たなプラグインを開発してください。
KongのAPIゲートウェイは、従来型のAPIマネジメントソリューションと何が違うのですか?
KongのマイクロサービスAPIゲートウェイが従来型のAPIマネジメントソリューションと一線を画しているのは、根本的に異なるアーキテクチャを採用している点や、通信のレイテンシを抑制している点、多種多様なサービスに対応している点です。
従来型のAPIマネジメントソリューションは、現在より古いアプリケーション開発の時代に登場し、当時の非常に重要な問題を解決しました。すなわち、既に確立しているモノリシックアプリケーションに外部からアクセスするためのサードパーティ向けAPIを開発するにはどうすればよいかという問題です。
例えば、初期のモバイルアプリ向けアドオンや、安定稼働しているミッションクリティカルなアプリケーションのデータを読み取るためのパートナー向けAPIを思い出してみましょう。
当時のアプリケーションは基本的にモノリシックなデザインだったことから、機能同士の内部通信の処理には、外部APIではなく内部の関数呼び出しを使用していました。
従来型のAPIマネジメントソリューションが考案されてから現在までの間に、アプリケーションの開発とデプロイのパターンは様変わりしました。RESTful API、マイクロサービス、コンテナ、クラウドコンピューティング、分散システムといったイノベーションは、現代のアプリケーション開発では当たり前になりました。こうしたイノベーションを開発者が取り入れるためには、内部通信と外部通信を低レイテンシで処理できる手段が必要です。こうしたニーズが、モダンなマイクロサービスAPIゲートウェイの進化、そしてKongの誕生へとつながりました。
APIゲートウェイは現代のアプリケーション開発に不可欠な構成要素となっており、大量の内部通信と外部通信を低レイテンシで処理します。加えて、認証、レート制限、キャッシュ、ログなどの付加サービスを内部と外部の両方のコンシューマに提供します。ゲートウェイがこうしたサービスに対応していれば、開発者がこれらの機能をそれぞれのマイクロサービスに繰り返し実装する必要がなくなり、チームの生産性向上につながります。
APIマネジメントシステムは外部APIの通信を処理するうえで現在も効果があります。しかし、KongのようなAPIゲートウェイは、ミリ秒未満のレイテンシと、上位互換のAPIマネジメント機能を備えており、開発者は内部APIと外部APIの処理に単一のテクノロジで対応できます。
APIゲートウェイとサービスメッシュの違いは何ですか?
APIゲートウェイは、クライアントとアプリケーションの間のAPI通信や、アプリケーション内のマイクロサービス間のAPI通信を円滑化します。レイヤー7(HTTP)で動作し、内部通信と外部通信のサービスに加えて、認証、レート制限、変換、ログなどの付加価値サービスに対応しています。
サービスメッシュは、内部通信のルーティングに的を絞った新たなテクノロジです。主にレイヤー4(TCP)で動作し、内部通信のほかにヘルスチェックやサーキットブレーカーなどのサービスを提供します。APIゲートウェイとサービスメッシュは、ネットワークスタックの別レイヤーで動作することから、持ち味がそれぞれ異なります。
KongはAPIゲートウェイとサービスメッシュの両方のソリューションに力を入れています。信頼できる一元的なインターフェースを開発者が利用できるようにして、あらゆる内部通信と外部通信、付加価値サービスに対応することが必要だとKongは考えています。現状では、APIゲートウェイとサービスメッシュはまったく別のソリューションのように見られ、アーキテクチャや実装を別々に選択することが必要と思われていますが、状況は間もなく変わるはずです。
REST APIとは何ですか?
REST APIとは、ブラウザ、モバイル、IoTクライアントからアクセスするウェブアプリケーションやSaaSアプリケーションで最も広く採用されているAPI標準です。KongはREST APIを完全にサポートしています。RESTとはRepresentational State Transferの略で、ステートレスでクライアントサーバー型のキャッシュ可能な通信プロトコル、一般にはHTTPかHTTPSを使用します。RESTful APIを利用する「コンシューマ」は、アプリケーションとのやり取りを進めていく際に、/product/vase/のようなリンク(リソース)と、GET、DELETE、POST、PATCHなど、HTTPの個別の操作(メソッド)を選択します。この結果、次なるリソース(アプリケーションの次の状態を表すもの)がコンシューマに送られ、コンシューマはこれを利用できます。REST APIについて学ぶには、「Learn REST」をはじめ、さまざまなチュートリアルがあります。またKongの管理者は、RESTful APIであるAdmin APIを利用して、Kongのデプロイと管理、APIの追加、コンシューマの設定などを行うことができます。
Kongに追加できるマイクロサービスやAPIの数は?
Kongで処理するマイクロサービスやAPIは、必要に応じていくつでも追加できます。Kongは現在、HTTPまたはHTTPSを使用するRESTfulサービスに対応しています。新しいサービスを追加する方法はこちらをご覧ください。Kongで大量のリクエストを処理する場合には、クラスタにKongサーバーを追加するだけで水平スケールが可能です。
マイクロサービスやAPIに認証を追加するには?
サービスに認証レイヤーを追加するには、Plugin Hubで提供されている認証プラグインを使用できます。例えば、ベーシック認証、キー認証、OAuth 2.0、OpenID Connectなどに対応するプラグインがあります。
Kongはパブリッククラウドやオンプレミスで使用できますか?
使用できます。
Kongはクラウドとオンプレミスのシングルベンダー環境、マルチベンダー環境、分散環境をサポートしています。Kongは本当の意味であらゆるプラットフォームに対応している数少ないAPIゲートウェイのひとつです。プライベートデータセンターからパブリッククラウドに、アプリケーションをスムーズに移行できます。また、アプリケーションを別のパブリッククラウドに移行することや、データセンターやクラウド環境をいくつも使用するグローバルなハイブリッド環境を構成することも可能です。
Kongを採用することで、お客様はクラウドのベンダーロックインから解放され、コンピューティング環境を自ら選択できるようになります。
別のAPIゲートウェイからKongに移行するにはどうすればよいですか?
現在利用している既存のAPIゲートウェイからKongに移行する場合には、次の2つの手順を考慮する必要があります。
1)データの移行:Kongには、データを既存のAPIゲートウェイからKongに移行するためのRESTful APIがあります。APIゲートウェイによっては、データをJSONファイルやCSVファイルなどの形式でエクスポートできる場合があります。こうしてエクスポートしたデータを読み込む処理と、API、コンシューマ、プラグインをプロビジョニングする適切なリクエストをKongに送信する処理には、スクリプトを作成する必要があります。
2)ネットワーク設定の移行:データの移行とKongの設定が完了したら、すべてが正常に動作することをステージング環境で確認します。Kongを利用する本番環境にユーザーを切り替える準備が整ったら、Kongクラスタを経由するようにネットワーク設定を変更します(通常はDNS設定を更新することで対応します)。
Kong Enterpriseをご利用のお客様については、Kongが移行を支援いたします。
Kongは、当社が現在のスタックで採用している[製品名]と互換性がありますか?
おそらく問題ありません。KongとKongプラグインは、HTTPやJSONをはじめとする業界標準に準拠しています。Kongのテストは、NGINXのウェブサーバーとプロキシサーバー、PostgreSQLとCassandraのデータストア、Linuxとコンテナのオペレーティング環境、マイクロサービスのデザインパターンに基づくAPIを使用して、広範囲に行っています。
Kongはアプリケーションレベルで動作し、業界標準に準拠していることから、ウェブ技術とオーケストレーション、ログ管理、継続的デプロイメント、マイクロサービス開発の主要なツールすべてと幅広い互換性があります
その他の質問
このFAQで解決しない疑問は、公式ドキュメントをご覧になるか、Kong Nationでコミュニティやコアメンテナーに質問してください。Kong Nationは、APIゲートウェイのトピックの調査や、質問の投稿、Kongに関するあらゆる議論に使える便利なサイトで、目的の回答を探したり、新しい質問を投稿したりするのも簡単です(投稿にはユーザー登録が必要です)。
商用バージョンであるKong Enterpriseは、高度な機能を備えており、Kong Inc.のカスタマーサクセスチームによる支援も受けることができます。Kong Enterpriseの利用をお考えの場合は、Kongのセールス部門に在籍するAPIエキスパートにぜひご相談ください。
Kong Enterpriseをご利用中のお客様は、Kong Inc.のカスタマーサクセスチームへのご相談を通じて、Kongのエキスパートからタイムリーに回答を得ることができます。
社内のAPIとマイクロサービスを管理しましょう。Kongの統合プラットフォームをぜひお試しください。