F5 Office of the CTOチームは、1年以上にわたり、API関連のテクノロジ分野を検討してきました。この最新のホワイト ペーパーでは、進化し続けるAPIエコシステムを理解するための私たちの継続的な取り組みの成果をご紹介します。
APIスプロールの管理で詳しく説明した課題は、APIゲートウェイ スプロールにおける課題をもたらし、従来のアプローチでは、これらの課題に対処するには十分ではないでしょう。GraphQLなどのグラフ テクノロジは、APIに関連する複雑さを緩和するという点で大きな期待が寄せられていますが、こうした課題は接続、セキュリティ、ルーティングの範囲を超えているため、グラフ テクノロジは部分的な解決策にすぎません。システムとアプリケーションのスケーリングにおける30年近くに及ぶ専門知識に基づいた適切なアプローチは、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-GW)、つまりAPI呼び出しのエントリ ポイントとして機能する専用ソフトウェア層では、新興のAPIエコシステムの規模と複雑さを管理するには不十分であり、APIアーキテクチャは変換点に来ています。
図1は、APIスプロールの管理からAPIゲートウェイ スプロールの管理へと遷移してきた様子を示しています。
上記の設計パターンは、図2に示すように、APIゲートウェイが分散データ プレーンを形成している集中型コントロール プレーンを示唆しています。
APIゲートウェイは、最新のソフトウェア アーキテクチャの重要なコンポーネントであり、APIの制御とセキュリティの中心です。しかし、APIゲートウェイが提供する機能が増えるにつれて、APIゲートウェイはますます複雑になり、管理が困難になっています。多くの場合、こうしたゲートウェイは、幅広い機能が1つのパッケージにまとめられたモノリシック システムへと進化しています。
複数のゲートウェイの管理は分散設計のように見えるかもしれませんが、実際には真の分散には程遠いものです。なぜなら、ゲートウェイは依然として緊密に結合されていて、分離するのが難しいリソースと構成を共有しているからです。その結果、多くの企業は分散モノリスとそれが生み出すあらゆる課題を管理することになります。
図3は、既存のAPIゲートウェイのアーキテクチャを示しています。クライアントから発信されたAPIリクエストは、まず共有ネットワークまたは専用ネットワークを介して送信され、APIゲートウェイに到達する前にファイアウォールを通過します。APIゲートウェイはリバース プロキシとして機能し、トラフィックをAPIワークロードに転送します。
レガシーAPI-GWがAPI管理のチョーク ポイントとなるのは、APIゲートウェイが企業全体に展開されている場合や、APIスプロールと戦いながらAPIワークロードの運用をリージョン、ゾーン、複数のクラウド、あるいはエッジへと移行している場合です。さまざまなチームが複数のAPI-GWを立ち上げていて、そこに企業規模の単一の管理・制御ポイントはありません。個々の、または一連のAPIサービスを別のインフラストラクチャ(クラウドなど)に移行する場合、運用チームには、登録、検出、認証、ネットワーキング、セキュリティ、さらにはガバナンス、リスク、コンプライアンス(GRC)ポリシーといった、API管理のすべての側面を移行する手段が必要です。
図3に示したアーキテクチャは拡張性に欠け、長期的な実用性がなく、時間が経つと分散モノリスを管理しなければならなくなります(図2)。
APIゲートウェイのチョーク ポイントを生む2つの問題があります。1つ目は、APIゲートウェイ ベンダーのスプロール、2つ目は、企業がより多くの場所でより多くのアプリケーションを実行するのに合わせて拡張していくことです。
図4は、APIゲートウェイ スプロールに対処するための分散ゲートウェイ アクターのパターンを示しています。分散パターン自体は新しいものではありませんが、このホワイトペーパーでは、それをAPIゲートウェイの文脈で捉えています。クライアントがAPIリクエストを開始します。分散ゲートウェイ アクターは一時的であり、可能な限りクライアントの近くで、オンデマンドでインスタンス化されます。APIリクエストをゲートウェイ アクターから簡素化されたAPIゲートウェイに送信するのはAPIトランスポート層の役割となり、その後、リクエストは適切なAPIワークロードにルーティングされます。分散アクターにおけるGraphQLサポートの使用は、このパターンが機能するための要件というよりは細部に過ぎませんが、これによってサービス オーケストレーションなどの機能をサポートできます。したがって、新しいサービス オーケストレーション層を作成しなくても、GraphQLがそのサポートを提供できます。
確認ですが、トラフィック パターンは右から左に流れます。つまり、図5に示すように、クライアントは右側にあり、APIリクエストはクライアントによって開始されます。
企業内と企業全体のAPIを管理する上でAPIゲートウェイへの過剰な依存を置き換えたり軽減したりするために、ゲートウェイ アクターを使用する新たな導入パターンが登場しています。ゲートウェイ アクターは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ゲートウェイ スプロールをより重要な検討事項の1つとして強調しながら、既存のAPIインフラストラクチャが持つ複数の制約を考慮した新しいアプローチが必要であると結論付けることができます。
以下に、ソリューションを構築する際に組み込む必要があると考えられる高レベルの設計上の検討事項をいくつかまとめました。このリストは一部を示したものであり、網羅したものではありません。
分散ゲートウェイ アクター(DGA)ソリューションに組み込まれたこれらの設計上の検討事項に基づいて、特定の要件を導き出すことができます。
ここまでは、APIゲートウェイを詳しく見てきました。次に分散ゲートウェイ アクター ソリューションを見ていきましょう。
分散ゲートウェイ アクター(DGA)の設計パターンは、エッジ コンピューティングや、クライアントの近くで利用可能なコンピューティングからインスピレーションを得たものです。このアイデアの核心は、各ゲートウェイ アクターをクライアントのできるだけ近くに高度に分散させ、そのトランザクションの間だけゲートウェイ アクターを存在させて、最後に消去することにあります。
次に、このソリューションの基礎となる前提をいくつか示します。
エッジ コンピューティングの普及が進み、地理的にクライアントの近くで利用できる何らかのコンピューティングが見つかるようになりました。ゲートウェイ アクターは、これらのエッジ コンピューティング ノード上でインスタンス化することができます。その目的は、DGAが非常に軽量かつ一時的なものであるため、あらゆるエッジ コンピューティングでインスタンス化できるような実装にすることです。
APIトランスポートは、ゲートウェイ アクターとAPIゲートウェイの間のネットワークの確立に関与するため、インフラストラクチャの重要なコンポーネントです。必要なインフラストラクチャのタイプはベンダーや企業によって異なります。例えば、大規模なパブリック クラウドでは、独自のバックボーンを使用してAPIトランスポートを実行する場合があります。また、企業のデータ センター内にある高帯域幅、低遅延の既存のネットワーク上に低遅延メッセージング バスを階層化する実装も考えられます。
繰り返しになりますが、APIゲートウェイは本質的にリバース プロキシであり、その主な機能はHTTPトラフィックを適切なAPIワークロードにルーティングすることです。このアプローチは、ローカルのオンプレミス ネットワーク内やアベイラビリティ ゾーン内の仮想プライベート クラウド(VPC)内など、すべてのAPIが同じ場所に配置されている場合には合理的です。しかし、APIの数が増大したり、ハイブリッド インフラストラクチャに移行したり、モバイル化したりすることで、このAPIゲートウェイ設計のアプローチは非効率的になり、運用が複雑になり、コストが高くなります。
図6で説明したすべての機能の分類方法についてはさまざまな見解があるかもしれませんが、API管理インフラストラクチャが多くのコンポーネントで構成され、導入が複雑であり、オーケストレーションを慎重に行う必要があるという点では同意していただけると思います。
図7は、図6のAPI管理のさまざまな機能を分散ゲートウェイ アクター アーキテクチャに対応させたものです。この対応付けは、各機能がDGAアプローチとどのように連携しているかを視覚的に示し、アーキテクチャ内のAPI管理コンポーネントのシームレスな統合を強調しています。
上記の機能のほとんどには、論理的に一元化できる管理コンポーネントが含まれています。私たちの目標は、管理プレーンを再設計することではなく、可能であれば一部の機能を削除することです。
これらはデータ プレーン機能であるため、APIに実装し、アプリケーション ワークロードとともに配置するのが最適です。APIゲートウェイは、最新のマイクロサービス アーキテクチャの重要なコンポーネントであり、すべての外部トラフィックのエントリ ポイントとして機能します。私たちはそのコア機能をルーティング、ロード バランシング、動的ルーティング、健全性チェック、再試行、フォールバックに分類しました。
APIゲートウェイは、受け取ったリクエストを適切なマイクロサービスに転送し、複数のインスタンス間でトラフィックを分散し、動的ルーティングをサポートし、マイクロサービスとそのインスタンスの健全性を監視し、失敗したリクエストを再試行し、マイクロサービスが利用できないか失敗した場合にはフォールバック レスポンスを提供します。認証、許可、レート制限、キャッシュ、ロギングなどの他の機能は、システムの特定の要件に応じてエッジの機能や一元化された機能に分散できます。
このモジュール式のアプローチにより、より柔軟で最適化されたアーキテクチャが可能になるため、このアプローチはエンタープライズAPIインフラストラクチャの簡素化、モダナイズ、拡張に向けた私たちの提案の中核となります。
APIゲートウェイとAPI管理をAPIゲートウェイ機能の一部としてベンダーが誤って混同していることがよくありますが、実際には、これらは2つの異なる機能であり、別々に扱う必要があります。APIゲートウェイはクライアントからのリクエストをバックエンド サービスにルーティングする役割を果たしますが、API管理にはアクセス制御、レート制限、分析、開発者ポータルの管理など、幅広い機能が含まれます。
一部のベンダーは、1つの製品の一部としてAPIゲートウェイ機能とAPI管理機能をどちらも提供していますが、これらの機能の違いを理解し、特定の要件に基づいて個別に評価することが重要です。これらの機能を組み合わせると混乱が生じ、組織のAPIインフラストラクチャの柔軟性と拡張性が制限される可能性があります。これは、APIゲートウェイ機能の配布に関する当社の立場を理解する上でも重要です。
ここで挙げた機能は、データ パスにインライン化する必要があるコア機能です。分散ゲートウェイ パターンでは、APIゲートウェイのインライン機能の一部も分散されます。これらの機能には、アクセス制御、レート制限、リクエスト検証、API分析、使用状況レポート、エラー率の監視、アラートとイベント、認証統合、サードパーティ統合、監視とロギング統合、エッジ キャッシュ、圧縮などがあります。
これらの機能を分散ゲートウェイ パターンに移行することには、次のメリットがあります。
例えば、アクセス制御、レート制限、リクエストの検証は、クライアントの近くに導入されたエッジ ゲートウェイ アクターで処理できます。これにより、集中型APIゲートウェイで処理するリクエストの数が減り、パフォーマンスと拡張性が向上します。同様に、API分析、使用状況レポート、エラー率の監視、アラートとイベント、監視とログの統合は、複数のマイクロサービスからデータを収集して集約できるエッジ ゲートウェイで処理することができます。
現在、APIゲートウェイがサポートする重要な機能は、サービスの構成とオーケストレーションです。これはかなり複雑になるため、この機能が簡素化されたAPIゲートウェイでサポートされないとすれば、懸念材料となります。私たちは、GraphQLが既存のAPIに対する一種のミドルウェアとして機能し、サービス構成に対する興味深いアプローチになり得ると考えています。
すべてのAPIを可視化できるため、APIゲートウェイはサービスの構成を行うのに論理的に適した場所となり、開発者は、新しいサービスを作成することなく、ゲートウェイの背後でAPIを組み合わせてビジネス ロジックを強化することができます。APIはサービス構成層で簡単に組み合わせることができます。
GraphQLにおけるサービス構成は、クライアントが利用できるデータの形式を定義する、厳密に型指定されたスキーマを使用することで可能になります。クライアントは、このスキーマを使用して、どのサービスやソースがデータを提供するかに関係なく、必要なデータを正確に指定するクエリを構築できます。クエリをデータ ソースにマップする関数であるリゾルバが、適切なサービスやソースからデータを取得するために使用されます。GraphQLによってセキュリティの強化が約束されますが、最終的なセキュリティは、開発者が作成するコード次第です。
「図6:API管理とインフラストラクチャの機能」には示されていない機能がまだいくつかあります。これらの残りの機能は、個別の管理と運用やデータプレーン機能に移行できる候補となります。
特定の実装やベンダー テクノロジを示唆することを避けるため、私たちは意図的に「アクター」という用語を使いました。ゲートウェイ アクターの実装は、VM、コンテナ、サーバーレス、あるいはベンダー固有のその他のアプローチに基づくインフラストラクチャを使用して実装される、メソッド、関数、ワーカー、スレッド、プロセスなどに基づいたものとなるでしょう。
分散ゲートウェイ アクター(DGA)アーキテクチャで採用されたアプローチにより、APIゲートウェイ機能が簡素化され、他のインライン機能がエッジやコントロール プレーンに移行されます。
APIゲートウェイ機能とは別に、DGAアーキテクチャでは、モノリシックAPIゲートウェイ内に実装するのではなく、論理的に集中化したコンポーネントとしてコントロール プレーンで適切に提供できる機能を特定することも推奨しています。この追加機能を含めるように、既存のAPIインフラストラクチャの管理と制御を拡張することができます。
したがって、APIゲートウェイの簡素化は、すべてのAPIゲートウェイ ベンダーが共通の設定パラメータ セットを使用して管理できる、コア機能の標準セットを導き出す作業になります。
こうした変革を望む企業は、アプリケーション1つずつに順番にDGAアーキテクチャを展開することができます。既存の導入環境を中断させる必要も、完全に置き換える必要もありません。
DGAの重要な特長として、各ゲートウェイ アクターが一時的なものであり、1つのAPIセッションの間(つまり、1つのクライアントが1つのAPI呼び出しを行う間)だけインスタンス化されることが挙げられます。
分散ゲートウェイ アクターは、従来のAPIゲートウェイよりも柔軟性、拡張性、コスト効率に優れています。APIトラフィックを集約して処理するために、さまざまなベンダーの複数のモノリシックAPIゲートウェイに依存するのではなく、ゲートウェイ アクターを使用することで、開発者はネットワークのエッジに近いAPIごとに個別のゲートウェイ インスタンスを指定して導入することができます。API自体は、優れた制御性を備え、特定のニーズに合わせてカスタマイズすることができます。
また、この新しいアプローチにより、開発者は大規模な集中型ゲートウェイの管理のオーバーヘッドを心配することなく、増加したトラフィックを処理するために必要に応じてゲートウェイ アクター インスタンスを簡単に立ち上げることができるため、拡張性も向上します。
ゲートウェイ アクターでは技術的なメリットに加え、企業は使用する一時的なゲートウェイ アクター インスタンスの料金のみを支払うことができるため、従来のAPIゲートウェイに比べてコストも削減できます。この導入モデルは、収益モデルの追加につながる可能性があります。
DGAは、APIトランスポート層を利用することで、基本的にAPIのイングレス ポイントをAPIゲートウェイから切り離します。DGAはエッジ、つまりAPI呼び出しを行うクライアントの近くに移動できます。APIはDGAで終了し、任意の手段で転送できます。これは、クライアント トラフィックのイングレスがトポロジ的にAPIゲートウェイに隣接している「図3:レガシーAPIゲートウェイ アーキテクチャ」とは異なります。
さまざまなベンダーが、ここで概説したような目標の達成に向けて、コンポーネントを構築するための独自の知的財産を持っていることから、私たちは、ベンダーと導入環境に依存しないアプローチを提案することを目指しています。
このホワイトペーパーでは、APIスプロール、Edge 2.0アーキテクチャ、APIエコノミー、GraphQLの調査など、複数の四半期にわたって私たちが得た知見をまとめました。レガシーAPIインフラストラクチャに関してはまだ結論が出ていませんが、私たちは新しいアプローチが必要であると考えています。
個々のデバイスやエンティティの価値をグローバルに解き放つことが約束されるだけでも、新しいアプローチを検討する十分な理由となります。分散しているように見えても、内部ではモノリシックであるレガシーAPIインフラストラクチャから、すぐにでも移行する必要があるからです。
私たちは、新興のAPIエコノミーの可能性を最大限に引き出す、ベンダーに依存しない手段として、分散型GraphQLベースのゲートウェイ アクター アプローチを提案します。