Azure API Management を使用して API を構成する利点
マイクロサービス アーキテクチャは、管理が困難な場合があります。 たとえば、セキュリティなどのクロスカット要件を一貫した方法で実装する個別のチームに依存しているとします。
オンライン ストアでは、自社の開発者チームがさまざまなホスト URL の製品詳細と注文詳細のマイクロサービスを構築しました。 また、注文詳細サービスは XML を使用して応答します。 あなたは、クライアント アプリ開発者の作業が容易になるように、すべての応答を確実に JSON 形式にしたいと考えています。
このユニットでは、複数のマイクロサービスを統合して、1 つの URL で一貫した動作を使用してクライアント アプリケーションに提供する API Management の機能について説明します。
マイクロサービス アーキテクチャの課題
アーキテクチャに対するマイクロサービスのアプローチでは、各部分が疎結合されているモジュール型のアプリケーションを作成します。 この方法では、各サービスの新しいバージョンを他とは独立してデプロイできるため、継続的デリバリーの実装が容易になります。 テスト中にバグが検出されず、運用環境まで残った場合でも、その影響は軽くなり、安定したバージョンにロールバックしやすくなります。 また、マイクロサービスごとに小規模で自律的な開発者チームを作成できます。 この分割は、最新のアジャイル プラクティスに適しています。
ただし、マイクロサービス アーキテクチャでは次のような課題が生じることもあります。
- クライアント アプリはマイクロサービスに結合されます。 マイクロサービスの場所または定義を変更する場合は、必要に応じてクライアント アプリを再構成または更新します。
- 各マイクロサービスは、異なるドメイン名または IP アドレスで提示される場合があります。 このような提示は、一貫性のない印象をユーザーに与え、ブランドに悪影響を及ぼす可能性があります。
- すべてのマイクロサービスにわたって一貫した API ルールと標準を適用することは困難な場合があります。 たとえば、XML で応答することを好むチームや、JSON を好むチームがあります。
- マイクロサービスにセキュリティを正しく実装することは個々のチームに依存しています。 これらの要件を一元的に強制することは困難です。
API Management の利用方法
複数の API、関数、およびその他のサービスを API Management に追加することで、それらのコンポーネントを、クライアント アプリケーションへの 1 つのエントリ ポイントを提示する統合された製品へとまとめることができます。 API Management を使用した API の作成には、次のような利点があります。
- クライアント アプリは、個々のマイクロサービスを使用した基礎となる技術的な実装ではなく、ビジネス ロジックを表す API と結合されます。 クライアント アプリを再構成または更新することなく、サービスの場所と定義を変更することができます。
- API Management は仲介役として機能します。 配置されている場所にかかわらず、適切なマイクロサービスに要求が転送され、ユーザーに応答が返されます。 マイクロサービスがホストされているさまざまな URI がユーザーに表示されることはありません。
- API Management ポリシーを使用して、製品のすべてのマイクロサービスに一貫したルールを適用できます。 たとえば、好みの形式に応じて、すべての XML 応答を JSON に変換できます。
- また、ポリシーを使用して、一貫したセキュリティ要件を適用することもできます。
API Management には便利なツールもあります。各マイクロサービスとその操作をテストして、要件に従って動作していることを確認できます。 また、デプロイされたサービスの動作とパフォーマンスを監視することもできます。
Azure API Management は、Azure Function App の新しい API としてのインポートや既存の API への追加をサポートします。 プロセスが自動的に Azure Function App 内にホスト キーを生成して、Azure API Management 内の名前付きの値に割り当てます。
次のユニットでは、前の演習で作成したオンライン ストア API に注文詳細マイクロサービスを追加します。 これを行うことで、注文詳細を製品詳細マイクロサービスと統合し、統合 API の一部として同じドメインに両方を提示することができます。
ヘルプが必要ですか? Microsoft のトラブルシューティング ガイドをご覧になるか、問題を報告して具体的なフィードバックをお送りください。