F5 の CTO チームのオフィスは、1 年以上にわたって API に関連するテクノロジー分野を調査してきました。 この最新のホワイトペーパーは、進化し続ける API エコシステムを理解するための当社の取り組みの継続です。
API の無秩序な増加を管理する際に詳細に説明した課題は、APIゲートウェイの無秩序な増加の課題につながり、これらの課題に対処するための従来のアプローチでは不十分になります。 GraphQL などのグラフ テクノロジーは、API に関連する複雑さを軽減する点で大きな可能性を秘めていますが、課題は接続性、セキュリティ、ルーティングだけにとどまらないため、これはソリューションの一部にすぎません。 システムとアプリケーションのスケーリングに関する約 30 年の専門知識に基づく適切なアプローチは、GraphQL を採用しながらも GraphQL だけに依存しない、分散型 (フェデレーション型ではない) アーキテクチャに基づいています。
このホワイト ペーパーでは、API ゲートウェイの無秩序な拡大の課題に対処するための分散アーキテクチャ アプローチについて説明します。
デジタル経済は API を通じて推進され、 API 主導の経済が実現します。 API スプロールに関するホワイト ペーパーに従って、私たちは API スプロールの影響を排除または軽減する方法を理解することに取り組みました。 GraphQL は API の拡散による影響を軽減する効果が期待できるものの、開発者に API コードベースの大部分を書き直す責任を負わせる傾向があります。 しかし、GraphQL に関して新たな視点として、効果的なゲートウェイ アクターとして使用できるという点が挙げられます。 ゲートウェイ アクターは、API リクエストを開始するクライアントの近くに作成される関数またはプロセスです。 このゲートウェイ アクターは、API リクエストを終了する最初の API ゲートウェイとして機能します。 また、リクエストを処理した後で破棄されるような一時的なものにすることもできます。
開発者と運用チームが API ゲートウェイよりも API 管理を優先していることに加えて、API の拡散によりAPI ゲートウェイが拡散するという問題も発見しました。 開発者の観点から見ると、主な懸念事項は、API が正しく、タイムリーに機能することを保証することです。 一方、運用チームは、検出、セキュリティ、使いやすさ、アクセス制御などの側面に重点を置いています。 今日の API ゲートウェイは API インフラストラクチャの重要なコンポーネントであるため、API の普及により API ゲートウェイの導入が増加し、API ゲートウェイの無秩序な増加につながることが明らかになりました。
API アーキテクチャの将来は、展開と運用を簡素化しながら API の拡散に対応できるように進化する必要があります。 提案されたアーキテクチャは、API ゲートウェイの設計パターンが必要とされる次の進化形です。 GraphQL はアーキテクチャの中心ではなく、必須でもありませんが、ゲートウェイ アクター パターンを強化する機能があります。
API 管理エコシステムは、API ゲートウェイモノリスの管理から、より現代的なシステム設計アプローチへと移行する必要があります。 これにより、より俊敏で効果的な API 管理エコシステムが実現します。
API エコノミー内ですでに課題となっている API の無秩序な拡大は、 API ゲートウェイの無秩序な拡大にもつながります。これは、多様な API ゲートウェイ ベンダーのテクノロジーと API ゲートウェイを管理する偏ったチームによって API の管理が制御不能になる状況です。 API 呼び出しのエントリ ポイントとして機能する専用のソフトウェア レイヤーである従来の API ゲートウェイ (API-GW) では、新たな API エコシステムの規模と複雑さを管理するのに十分ではなくなったため、API アーキテクチャは転換点を迎えています。
図 1 は、API の拡散の管理から API ゲートウェイの拡散の管理へとどのように移行したかを示しています。
上記の設計パターンは、図 2 に示すように、API ゲートウェイが分散データ プレーンを形成する、集中型コントロール プレーンを示しています。
API ゲートウェイは、API の制御とセキュリティの中心点を提供する、最新のソフトウェア アーキテクチャの重要なコンポーネントです。 しかし、API ゲートウェイが提供する機能の数が増えるにつれて、API ゲートウェイはますます複雑になり、管理が困難になってきました。 多くの場合、これらのゲートウェイは、幅広い機能が 1 つのパッケージにまとめられたモノリシック システムに進化しています。
複数のゲートウェイを管理することは分散設計のように見えるかもしれませんが、実際には真の分散には至っていません。 これは、ゲートウェイが依然として緊密に結合されており、分離するのが難しいリソースと構成を共有しているためです。 その結果、多くの企業は分散モノリスと、それによって生じるあらゆる課題を管理することになります。
図 3 は、既存の API ゲートウェイのアーキテクチャを示しています。 クライアントから発信された API リクエストは、まず共有ネットワークまたは専用ネットワークを介して送信され、ファイアウォールを通過してから API ゲートウェイに到達します。 リバース プロキシとして機能する API ゲートウェイは、トラフィックを API ワークロードに転送します。
API ゲートウェイが企業全体に展開されている場合、または API の拡散に対処しながら API ワークロードがリージョン、ゾーン、複数のクラウド、またはエッジに運用上移動する場合、従来の API-GW は API 管理のボトルネックになります。 企業全体で単一の管理および制御ポイントを持たずに、複数の API-GW がさまざまなチームによって立ち上げられます。 個々の API サービスまたは API サービスのグループが別のインフラストラクチャ (クラウドなど) に移動する場合、運用チームは、登録、検出、認証、ネットワーク、セキュリティ、ガバナンス、リスク、コンプライアンス (GRC) ポリシーなど、API 管理のすべての側面を移行する方法を持っている必要があります。
したがって、図 3 に示すアーキテクチャは、長期的にはスケーラブルでも実用的でもなくなり、時間の経過とともに分散モノリスの管理につながります (図 2)。
API ゲートウェイのチョークポイントを作成する際に問題が 2 つあります。 (1) API ゲートウェイ ベンダーの拡散、(2) 企業がより多くの場所でより多くのアプリケーションを実行している場合の拡張。
図 4 は、API ゲートウェイの無秩序な拡大に対処するための分散ゲートウェイ アクターのパターンを示しています。 分散パターン自体は新しいものではありませんが、このホワイト ペーパーでは、API ゲートウェイのコンテキスト内でそれを形式化します。 クライアントが API リクエストを開始します。 分散ゲートウェイ アクターは一時的なものであり、可能な限りクライアントに近い場所でオンデマンドでインスタンス化されます。 API リクエストをゲートウェイ アクターから簡略化された API ゲートウェイに送信するのは API トランスポート層の責任となり、簡略化された API ゲートウェイはリクエストを適切な API ワークロードにルーティングします。 分散アクターでの GraphQL サポートの使用は、このパターンが機能するための要件というよりは詳細ですが、サービス オーケストレーションなどのサポート機能を有効にします。 したがって、新しいサービス オーケストレーション レイヤーを作成する代わりに、GraphQL がそのサポートを提供できます。
明確に言えば、交通パターンは右から左です。 つまり、図 5 に示すように、クライアントは右側にあり、API リクエストはクライアントによって開始されます。
企業内および企業間で API を管理するために、API ゲートウェイへの過度の依存を置き換えるか軽減するために、ゲートウェイ アクターを使用する新しい展開パターンが登場しています。 GraphQL はアーキテクチャに必須ではありませんが、ゲートウェイ アクターは GraphQL をサポートするのに適した手段であるため、GraphQL の導入はタイムリーです。
潜在的なソリューションとしてのゲートウェイ アクターをより深く理解するには、API インフラストラクチャ、特に API ゲートウェイの現在の状態を詳しく調べる必要があります。 これは、ゲートウェイの無秩序な増加が API インフラストラクチャの運用と拡張の課題の大きな原因であることが判明したためです。
API ゲートウェイをより深く理解するには、まず最新の API 管理インフラストラクチャのさまざまなコンポーネントを調べることが重要です。
図 6 は、API 管理に不可欠なさまざまな機能とコンポーネントを包括的に視覚的に表したものです。 バックエンド サービスへのトラフィックのルーティングと管理に必要な API ゲートウェイに加えて、その他の重要なインフラストラクチャ コンポーネントがいくつかあります。 これらには、認証、レート制限、キャッシュ、サービス メッシュなどのソリューションが含まれる場合があります。 これらの機能を組み込むことで、組織は API を制御し、セキュリティを強化し、パフォーマンスを最適化することができます。
API ゲートウェイの一般的に認識され、よく知られている機能を調べてみましょう。
API 管理インフラストラクチャの機能を分析した結果、API ゲートウェイの役割をより深く理解し、現在のモノリシック API ゲートウェイ設計の代替案を検討する必要があることがわかりました。
API 数の増加により API の無秩序な増加と API ゲートウェイの無秩序な増加がすでに起こっており、モバイル化または高度に分散化されたクライアントが増加し、コンピューティング インフラストラクチャがエッジを含むあらゆる場所で利用できるようになりました。 したがって、API エコシステムの俊敏性、柔軟性、スケーラビリティ、パフォーマンス、セキュリティを向上できるアプローチが必要です。
この新しいアプローチには、真に分散されたアーキテクチャの利点を最大限に活用できる合理化された設計が必要です。
API ゲートウェイの機能と範囲をさらに分析して、そのニュアンスと制限を明らかにします。
API ゲートウェイは、今日の API 管理インフラストラクチャの重要なコンポーネントです。 本質的に、API ゲートウェイはリバース プロキシであり、着信リクエストに対してさまざまなタスクを実行しながら、クライアントとバックエンド サービス間の仲介役として機能します。 たとえば、ゲートウェイは、適切なバックエンド サービスにリクエストを転送する前に、認証、レート制限、ルートの要求、セキュリティ ポリシーの適用、監視、バージョン管理の適用を行うことができます。 バックエンド サービスがリクエストを処理して応答を返すと、API ゲートウェイは、キャッシュ、プロトコル変換、応答処理などのタスクを実行してから、応答をクライアントに転送できます。
API の数が増えるにつれて、API ゲートウェイは基本的なルーティングを超えたさまざまな新しい機能を含むように進化し、事実上モノリシック システムになりました。 これらのゲートウェイは、認証やレート制限などのタスクを管理して、パフォーマンスを向上させ、バックエンド サービスの負担を軽減します。 ただし、このように機能が強化されても、API ゲートウェイはバックエンド サービスへの単一のアクセス ポイントのままであり、高度に分散された環境では課題が生じる可能性があります。
特に、クラウド、ハイブリッド マルチクラウド、エッジ インフラストラクチャの台頭により、API ゲートウェイ アプローチで俊敏性、セキュリティ、管理性を維持することが困難になっています。 クライアント、デバイス、アプリケーションのワークロードが広範囲の場所に分散している可能性があるため、API ゲートウェイは、必要なレベルのエッジフレンドリーなアーキテクチャを提供するのに適していない可能性があります。
API ゲートウェイは幅広いタスクを処理し、複数のシステムと統合する必要があるため、通常は導入と管理が困難です。 API ゲートウェイの管理は複雑になる場合がありますが、API の可用性、セキュリティ、スケーラビリティを確保するために重要なタスクです。企業は、API ゲートウェイをより効果的に管理および監視するために、API 管理プラットフォームなどの専用ツールを使用する傾向があります。
以下のリストは包括的なものではありませんが、API ゲートウェイの複雑さに寄与する要素には次のようなものがあります。
API ゲートウェイの無秩序な増加とは、組織内で複数の独立した API ゲートウェイが増加することを意味します。 多くの場合、さまざまなチームやビジネス ユニットが独自の API を作成するため、これらのさまざまな API を処理するために複数の独立した API ゲートウェイが作成されることがあります。 異なるチームでは、異なるベンダーまたはソリューションの API ゲートウェイを使用して、異なるタイプの API を処理する場合もあります。
これにより、さまざまな機能セットを備えた複数の API ゲートウェイが展開されることになります。
API ゲートウェイの拡大により、次のような追加の課題が生じます。
企業は API 管理とガバナンスを一元化し、単一タイプの API ゲートウェイを使用するよう努めるべきです。 これにより、API ゲートウェイの無秩序な拡大に関する上記の課題は軽減されますが、API ゲートウェイの均質化戦略は決して簡単ではありません。
企業が有機的に成長したり、買収によって成長したりすると、特定のビジネス ユニット (BU) に所属する社内チームは、API ゲートウェイ テクノロジーやベンダーを選択する際に互いに意見が対立するようになります。 これには次のような理由が考えられます。
したがって、既存のアプリケーションに確立された独自のチームがある場合、そのチームはサービスに中断が生じないように、異なるデプロイメント パターンに切り替えることを望まないでしょう。
したがって、既存の API インフラストラクチャの複数の制限を考慮しつつ、API ゲートウェイの無秩序な拡大を重要な考慮事項の 1 つとして強調する新しいアプローチが必要であると結論付けることができます。
以下は網羅的なリストではありませんが、ソリューションを構築する際に組み込む必要があると思われる高レベルの設計上の考慮事項の一部をまとめたものです。
これらの設計上の考慮事項に基づいて具体的な要件を導き出すことができ、分散ゲートウェイ アクター (DGA) ソリューションに組み込まれています。
API ゲートウェイを完全に理解したので、分散ゲートウェイ アクター ソリューションについて説明します。
分散ゲートウェイ アクター (DGA) 設計パターンは、エッジ コンピューティングとクライアントの近くで利用可能なコンピューティングからインスピレーションを得ています。 このアイデアの核心は、各ゲートウェイ アクターをクライアントのできるだけ近くに超分散し、ゲートウェイ アクターをトランザクションの終了時にクリアされるまでの期間のみ存在させることにあります。
このソリューションの基本的な前提をいくつか示します。
エッジ コンピューティングはより普及しており、クライアントに近い地理的に利用可能なコンピューティング タイプが見つかるようになりました。 ゲートウェイ アクターは、これらのエッジ コンピューティング ノード上でインスタンス化できます。 目的は、DGA が非常に軽量かつ一時的な実装となり、あらゆるエッジ コンピューティングでインスタンス化できるようにすることです。
API トランスポートは、ゲートウェイ アクターと API ゲートウェイ間のネットワークを確立することを伴うため、インフラストラクチャの重要なコンポーネントです。 必要なインフラストラクチャのタイプはベンダーまたは企業によって異なり、異なる場合があります。 たとえば、大規模なパブリック クラウドでは、独自のバックボーンを使用して API トランスポートを実行する場合があります。 もう 1 つの実装としては、エンタープライズ データ センター内の既存の高帯域幅および低遅延ネットワークの上に低遅延メッセージング バスを重ねるという方法があります。
繰り返しになりますが、API ゲートウェイは本質的にリバース プロキシであり、その主な機能は HTTP トラフィックを適切な API ワークロードにルーティングすることです。 このアプローチは、ローカルのオンプレミス ネットワーク内や、アベイラビリティ ゾーン内の仮想プライベート クラウド (VPC) 内など、すべての API が同じ場所に配置されている場合に適しています。 しかし、API の数が増えたり、ハイブリッド インフラストラクチャ間で移動したり、モバイル化したりすると、この API ゲートウェイ設計のアプローチは非効率になり、操作が複雑になり、コストも高くなります。
図 6 で説明されているすべての機能をどのように分類するかについてはさまざまな見解があるかもしれませんが、 API 管理インフラストラクチャは、慎重に調整する必要がある多くのコンポーネントの複雑な展開になっていることには同意できます。
図 7 は、図 6 の API 管理のさまざまな特徴と機能を分散ゲートウェイ アクターのアーキテクチャにマッピングしています。 このマッピングは、各機能が DGA アプローチとどのように連携しているかを視覚的に示し、アーキテクチャ内での API 管理コンポーネントのシームレスな統合を強調しています。
上記の機能のほとんどには、論理的に集中化できる管理コンポーネントがあります。 私たちの目標は、管理プレーンを再設計することではなく、可能であれば特定の機能を削除することです。
これらはデータ プレーン機能であるため、API で実装し、アプリケーション ワークロードと一緒に配置するのが最適です。 API ゲートウェイは、すべての外部トラフィックのエントリ ポイントとして機能する、最新のマイクロサービス アーキテクチャの重要なコンポーネントです。 コア機能は、ルーティング、負荷分散、動的ルーティング、ヘルスチェック、再試行、フォールバックに分類しました。
API ゲートウェイは、受信リクエストを適切なマイクロサービスに送信し、トラフィックを複数のインスタンスに分散し、動的ルーティングをサポートし、マイクロサービスとそのインスタンスの状態を監視し、失敗したリクエストを再試行し、マイクロサービスが利用できないか失敗した場合にフォールバック応答を提供します。 認証、承認、レート制限、キャッシュ、ログ記録などのその他の機能は、システムの特定の要件に応じて、エッジまたは集中機能に分散できます。
このモジュール式のアプローチにより、より柔軟で最適化されたアーキテクチャが可能になり、エンタープライズ API インフラストラクチャの簡素化、最新化、拡張に関する当社の推奨事項の中心となります。
API ゲートウェイと API 管理は、ベンダーによって API ゲートウェイ機能の一部として誤って混同されることがよくありますが、実際にはこれらは別々に扱う必要がある 2 つの異なる機能です。 API ゲートウェイはクライアントからバックエンド サービスへのリクエストのルーティングを担当し、API 管理にはアクセス制御、レート制限、分析、開発者ポータル管理などのより広範な機能が含まれます。
一部のベンダーは API ゲートウェイ機能と API 管理機能の両方を 1 つの製品の一部として提供している場合もありますが、これらの機能の違いを理解し、特定の要件に基づいて個別に評価することが重要です。 これらの機能を組み合わせると混乱が生じ、組織の API インフラストラクチャの柔軟性と拡張性が制限される可能性があります。 これは、API ゲートウェイ機能の配布に関する当社の立場を理解する上でも重要です。
ここにリストされている機能は、データ パスにインライン化する必要があるコア機能です。 分散ゲートウェイ パターンでは、API ゲートウェイのインライン関数の一部も分散されます。 これらの機能には、アクセス制御、レート制限、リクエスト検証、API 分析、使用状況レポート、エラー率監視、アラートおよびイベント、認証統合、サードパーティ統合、監視およびログ統合、エッジ キャッシュ、圧縮が含まれます。
これらの機能を分散ゲートウェイ パターンに移行すると、次の利点があります。
たとえば、アクセス制御、レート制限、およびリクエストの検証は、クライアントの近くにデプロイされたエッジ ゲートウェイ アクターによって処理できます。 これにより、集中型 API ゲートウェイで処理する必要があるリクエストの数を削減し、パフォーマンスとスケーラビリティを向上させることができます。 同様に、API 分析、使用状況レポート、エラー率の監視、アラートとイベント、監視とログの統合は、複数のマイクロサービスからデータを収集して集約できるエッジ ゲートウェイによって処理できます。
現在、API ゲートウェイがサポートする重要な機能は、サービスの構成とオーケストレーションです。 これはかなり複雑になる可能性がありますが、この機能が簡素化された API ゲートウェイでサポートされていない場合は問題になります。 GraphQL は、既存の API に対する一種のミドルウェアとして機能し、サービス構成に対する興味深いアプローチになると考えています。
すべての API が可視化されるため、API ゲートウェイはサービス構成を実行するための論理的な場所となり、開発者はゲートウェイの背後で API を組み合わせてビジネス ロジックを強化できます。サービス構成レイヤーで簡単に組み合わせられる新しいサービスを作成する必要はありません。
GraphQL でのサービス構成は、クライアントが利用できるデータの形状を定義する、厳密に型指定されたスキーマを使用することで可能になります。 クライアントはこのスキーマを使用して、どのサービスやソースがデータを提供するかに関係なく、必要なデータを正確に指定するクエリを構築できます。 リゾルバーは、クエリをデータ ソースにマップする関数であり、適切なサービスまたはソースからデータを取得するために使用されます。 ただし、GraphQL はより優れたセキュリティを約束しますが、そのセキュリティはコードを作成する開発者の能力によってのみ決まります。
図 6 では強調表示されていない機能がまだいくつか残っています。 API 管理およびインフラストラクチャ機能。 これらの残りの機能は、個別の管理および運用またはデータプレーン機能に移行できる候補です。
特定の実装やベンダーのテクノロジーを示唆することを避けるために、意図的に「アクター」という用語を使用しています。 ゲートウェイ アクターの実装は、VM、コンテナ、サーバーレス、またはベンダー固有のその他のアプローチに基づくインフラストラクチャを使用して実装されたメソッド、関数、ワーカー、スレッド、およびプロセスに基づくことができます。
分散ゲートウェイ アクター (DGA) アーキテクチャで採用されたアプローチにより、API ゲートウェイ機能が簡素化され、他のインライン機能がエッジまたはコントロール プレーンに移動します。
DGA アーキテクチャでは、API ゲートウェイ機能の他に、モノリシック API ゲートウェイ内に実装するのではなく、論理的に集中化されたコンポーネントとしてコントロール プレーンでより適切に提供される機能を特定することも推奨されています。 既存の API インフラストラクチャの管理と制御を拡張して、この追加機能を含めることができます。
したがって、API ゲートウェイの簡素化は、すべての API ゲートウェイ ベンダーが共通の構成パラメータ セットを通じて管理できる標準的なコア機能セットを導き出す作業になります。
この変革を実現したい企業は、既存の展開を妨げたり、フォークリフト操作を必要とせずに、一度に 1 つのアプリケーションずつ DGA アーキテクチャを展開できます。
DGA の重要な側面は、各ゲートウェイ アクターが一時的であり、API セッションの期間中のみインスタンス化されることです (つまり、1 つのクライアントが 1 つの API 呼び出しを行う)。
分散ゲートウェイ アクターは、従来の API ゲートウェイよりも柔軟性、拡張性、コスト効率に優れています。 ゲートウェイ アクターを使用すると、API トラフィックを集約して処理するために、異なるベンダーの複数のモノリシック API ゲートウェイに依存するのではなく、開発者はネットワークのエッジに近い各 API に対して個別のゲートウェイ インスタンスを指定して展開できます。 API 自体により、特定のニーズに合わせてより高度な制御とカスタマイズが可能になります。
この新しいアプローチにより、開発者は大規模な集中型ゲートウェイの管理のオーバーヘッドを気にすることなく、必要に応じてゲートウェイ アクター インスタンスを簡単に起動してトラフィックの増加に対応できるため、スケーラビリティも向上します。
ゲートウェイ アクターは技術的な利点に加えて、企業が使用する一時的なゲートウェイ アクター インスタンスに対してのみ料金を支払うことができるため、従来の API ゲートウェイに比べてコストを節約できます。 この展開モデルにより、追加の収益モデルの機会が生まれます。
DGA は、API トランスポート層を活用することで、API イングレス ロケーションを API ゲートウェイから本質的に分離します。 DGA はエッジ、つまり API 呼び出しを行うクライアントの近くに移動できます。 API は DGA で終了し、その後任意の手段で転送できます。 これは図3とは異なります。 レガシー API ゲートウェイ アーキテクチャ クライアント トラフィックが API ゲートウェイにトポロジ的に隣接して入力される場合。
したがって、私たちの意図は、ベンダーやデプロイメントに依存しないアプローチを提案することです。異なるベンダーが、概説した同様の目的を達成するためにこれらのコンポーネントを構築するための独自の知的財産を持っている可能性があるためです。
このホワイト ペーパーでは、 API の拡散、 Edge 2.0アーキテクチャ、 API エコノミー、GraphQL の調査を複数四半期にわたって調査した結果をまとめています。 従来の API インフラストラクチャについてはまだ結論が出ていませんが、新しいアプローチが必要であると考えています。
世界中のあらゆる個別のデバイスやエンティティ内の価値を解き放つという約束だけでも、新しいアプローチを模索する十分な理由になります。 今日では、従来の API インフラストラクチャから脱却する必要があります。分散されているように見えても、内部的にはモノリシックだからです。
私たちは、新興の API エコノミーの可能性を最大限に引き出すベンダーに依存しない方法として、分散 GraphQL ベースのゲートウェイ アクター アプローチを提案します。