中央集権的なレイヤーを用いて、複数のアプリケーションに跨る課題を一元管理する
中央集権的なレイヤーを用いるアプローチ
LLMを活用したアプリケーション開発の問題を解決するもう一方のアプローチは、中央集権的なレイヤーを用いるものです。具体的には、以下のようにアプリケーションとLLMの間に中間レイヤーを配置し、そのレイヤーに共通の課題に対する実装をオフロードする方法です。
同様に単一のアプリケーションに対して実装を行う際も有効的に活用することで実装コストを減らすことができますが、複数のアプリケーションに対して実装を行う際にはさらに強力に活用できます。中央集権的なレイヤーを活用して実装するメリットとしては、プログラミング言語に依存することなく導入できる点と、複数環境に対して一元的な制御が可能な点です。図解すると以下の通りです。
各アプローチのまとめ
| ライブラリを利用するアプローチ | 中央集権的なレイヤーを用いるアプローチ | |
|---|---|---|
| 方法 | アプリケーションの内部で制御する | アプリケーションの外部で制御する |
| 長所 | 導入が容易にできること 柔軟性やカスタマイズ性に優れること |
プログラミング言語に依存することなく導入ができること 複数環境に対して一元的な制御が可能なこと |
| 短所 | 特定の言語(多くは、Pythonや TypeScript)に依存すること アプリケーションごとにライブラリを用いた実装が必要なこと |
独立したコンポーネントの運用が必要なこと 柔軟性やカスタマイズ性にかけること |
| 適した用途 | 単一のアプリケーションに対して実装をする 複雑なロジックの実装が必要な場合 |
複数のアプリケーションに対して実装をする 中央集権的にセキュリティ管理などが必要な場合 |
わかりやすいように対比形式でまとめていますが、上記のアプローチは排他的ではなく相互補完しながら利用することも可能です。例えば、複雑なロジックの実装はライブラリを利用し、全体のガバナンスを効かせたいセキュリティ対策は中央集権的なレイヤーに寄せるなどバランスを取りながら進めることで、柔軟かつセキュリティレベル高く実装を進めることができます。以降は、中央集権的なレイヤーを用いるアプローチについてより深掘りをしていきます。
そもそもAPI Gatewayが解決したかったこと
先に述べたAPI通信において共通した課題を解決するために、中央集権的なレイヤーを用いるアプローチは、**API Gateway パターン**と呼ばれているデザインパターンの一種です。ここでは、LLMアプリケーションにおいてAPI Gatewayパターンを活用することで、開発や運用がどのように変わるのか説明します。
API Gatewayとは
まずは、API Gatewayについて説明します。下図は、API Gatewayを用いずにクライアントアプリケーションから直接APIサーバーに通信を行っている様子です。APIエンドポイント自体が増えることも実装や管理の点で面倒ですが、それ以上にAPIの能力を適切に把握しながら実装する必要があることも課題です。「APIの能力」とは、例えばどのような認証方法がサポートされているのかやレート制限が挙げられます。
これを回避するために、API通信の中間層にAPI Gatewayを配置し、今まで複数存在していたAPIエンドポイントをGatewayのエンドポイントに集約します。API Gatewayで統一的なポリシーを設定することでクライアントの実装や管理が楽になります。
また、APIを実装する側からしても個々のAPIに実装する必要があった認証・認可制御、レート制限、オブザーバビリティといった事項をAPI Gateway側の実装にオフロードし、本来実装するべきビジネスロジックに集中できるメリットもあります。このような背景から、マイクロサービスアーキテクチャなどでシステム全体を構築している場合、API Gatewayは非常に強力なデザインパターンと言えるでしょう。
API Gatewayは自作することも可能ですが、OSSや SaaS、クラウドプラットフォームの一部としても提供されています。以下は、API Gatewayとして知られている代表的な製品やサービスです。(※名称順)
| 名前 | 提供形態(OSS, SaaS, Cloud) |
|---|---|
| Apache APISIX | OSS |
| Amazon API Gateway | Cloud |
| Azure API Management | Cloud |
| Envoy Gateway | OSS |
| Google Apigee | Cloud |
| Kong Gateway | OSS, SaaS |
| OCI API Gateway | Cloud |
| TyK | OSS |
さて、このAPI Gatewayですがマイクロサービスアーキテクチャのような構成に限らず[中央集権的なレイヤーを用いるアプローチ](#中央集権的なレイヤーを用いるアプローチ)で述べた通り、LLMを活用したアプリケーションでも有効活用することができます。
第2回は、LLM アプリケーションでどのようにAPI Gatewayを活用できるのか説明します。
