web-dev-qa-db-ja.com

ほとんどのAPI Gatewayソリューションで「集約」がサポートされていないのはなぜですか?

API Gatewayについて読むとき、毎回出てくることの1つは、API Gatewayが複数のエンドポイントからの結果を集約する場所であることです。いいですね。ただし、AWS API Gateway、Kongo、Netflix Zuulなどの一般的なAPI Gatewayソリューションの多くは、このような機能をサポートしていません。あなたはそれをハックするか、自分でカスタムフィルターを実装する必要があります。

集計は悪い習慣と考えられていますか?複数のエンドポイントから結果を返すにはどうすればよいですか?

16
Moon

この質問に回答できる方法はいくつかあります。

エンドポイントの集約

APIゲートウェイは主に他のエンドポイントを集約しますが、必ずしもその結果を集約するわけではありません。つまり、認証やルーティングなどの追加機能を備えた他のエンドポイントをミラーリングできる単一のサーバーです。

ポイントは、いくつかのサービスを集中化すること、実際のサーバーを外部ネットワークから隠すことなどです。

結果の集計

ゲートウェイでビジネスロジックを使用したい場合、別のドキュメントを一緒に別のドキュメントにプルしたい場合、または要求や応答を変更したい場合は、 Enterprise Service Bus を参照している可能性があります。

集計が良いかどうか

これはもちろん議論の余地があり、個人の意見次第です。 SOA/ESBタイプのソリューションから(ほとんど)離れた理由があると主張する人もいるかもしれません。この理由は、個々の責任が明確ではなく、ESB側で収集される傾向があり、エンドポイントが「ばかげた」ままであるためです。最終的にESBがすべてを知るようになります。

「REST」アプローチは異なります。 「スマート」エンドポイント上に構築され、それらの部分を認識し、他のコンポーネントが詳細を知る必要がないことを確認します。 このアイデア自体は、ゲートウェイに応答についての詳細を通知することと矛盾しているようです

実際、 Self-Contained Systems のようないくつかのアーキテクチャのアイデアがあり、そのアイデアに基づいて構築され、クライアントが必要とするすべての機能をカバーする必要があります完全に指定されたエンドポイントによって。自分の責任範囲で要求を満たすために、他の人との同期通信は必要ありません。これは、結果を集計すると逆効果になることも示唆しています。

いつものように、それはすべて正確な要件に依存します。

11