Microsoft AZ-305: インテグレーションとメッセージングアーキテクチャ — 学習ガイド
こちらの一部です: Microsoft Azure Solutions Architect Expert AZ-305 — 学習ガイド. 検証済みの解答で練習: Microsoft試験ハブ, または時間制限付き模擬試験に挑戦: ExamRoll.io.
概要
Azureにおける統合とメッセージングアーキテクチャは、コマンド、イベント、データ移動のセマンティクスに適したサービスを選択し、信頼性、順序性、スケールを考慮して設計し、ハイブリッドシステムを安全に統合することが鍵となります。中核となる構成要素には、高機能なブローカーを備えたエンタープライズメッセージングのためのAzure Service Bus、リアクティブなイベントルーティングのためのAzure Event Grid、高スループットのストリーミングインジェストのためのAzure Event Hubs、そしてシンプルなキューイングのためのStorage Queuesが含まれます。これらを補完するものとして、プロセス自動化のためのAzure Logic Apps、ガバナンスと開発者エクスペリエンスのためのAPI Management、ETL/ELTのためのAzure Data Factory、ファイアウォールフレンドリーなオンプレミス接続のためのAzure Relay、モバイルプッシュのためのAzure Notification Hubsがあります。優れた設計では、ジョブに適したサービスを使用し、コントラクトと障害モードを明示的にモデル化し、適切な場合にはオーケストレーションまたはコレオグラフィパターンを適用します。
Azureでのメッセージングとイベント処理
Azure Service Busは、順序付き配信、トランザクション、グループ内でのFIFO、デッドレター処理を必要とするコマンドやワークフローのためのエンタープライズブローカーです。キューは、1つのプロデューサーと1つの競合するコンシューマーグループ間でポイントツーポイントのメッセージングを提供します。トピックは、SQLライクなフィルターとアクションを使用してメッセージをフィルタリングおよびルーティングできる、複数の独立したサブスクリプションを持つpub/subを可能にします。メッセージセッションは、関連するメッセージをsessionIdでグループ化し、グループごとのFIFOとステートフルな処理を可能にします。セッションロックにより、一度に1つのコンシューマーが1つのセッションを処理することが保証されます。デッドレターキューは、最大配信回数を超えた場合、TTLが期限切れになった場合、または明示的にデッドレター化された場合にポイズンメッセージをキャプチャし、隔離と後の検査を可能にします。各キューまたはサブスクリプションには、$DeadLetterQueueサブキューがあります。トランザクションは、同じ名前空間内のエンティティ間で、送信/受信/完了操作をアトミックに実行できます。これにより、例えば、後続のメッセージが正常に送信された場合にのみメッセージが完了することが保証されます(send-viaはエンティティ間のワークフローをサポートします)。
Azure Event Gridは、リアクティブなプッシュベースのパターンに対応した、フルマネージドのイベントルーターです。ネイティブのEvent GridスキーマまたはCloudEvents 1.0のいずれかを使用します。イベントサブスクリプションは、Functions、Logic Apps、Service Bus、Event Hubs、WebHooks、Storage Queuesなどのエンドポイントをターゲットとし、サブジェクトフィルターと高度なフィルターでノイズを低減します。配信は指数バックオフで再試行されます。サブスクリプションは、設定可能な再試行ポリシー(最大配信試行回数とイベントの有効期間)をサポートし、配信不能なイベントはストレージアカウントにデッドレター化できます。ハンドシェイク検証によりWebHookエンドポイントが保護され、マネージドIDにより、Azureエンドポイントへの発行と配信が簡素化されます。
Azure Event Hubsは、パーティション化されたログを使用して、テレメトリとストリーミングデータを大規模にインジェストします。パーティションは、並列処理とパーティション内での順序性を提供します。関連するイベントの順序を維持するためにパーティションキーを選択します。パーティション数はスケールを決定し、作成後に減らすことはできないため、将来のスループットを見越してサイズを決定します。コンシューマーグループは、互いのオフセットに干渉することなく、さまざまなアプリケーションに対してイベントストリームの独立したビューを提供します。Capture機能は、時間/サイズのウィンドウに基づいて、ほぼリアルタイムでデータをAzure Blob StorageまたはData Lake Storageに永続的にオフロードします。通常はAvro形式で、インジェストに影響を与えることなくバッチ分析を可能にします。組み込みのSchema Registryは、バージョン管理と互換性ポリシーを持つAvro/JSONスキーマを保存し、プロデューサーとコンシューマーがコントラクトを安全に検証し、進化させることを可能にします。
Storage Queuesは、配信保証がat-least-once(少なくとも1回)で、非表示タイムアウトと、メッセージTTLおよびアプリケーション管理のポイズン処理による基本的なデッドレター機能を備えた、シンプルでコスト効率の高いサービスです。トランザクション、セッション、高度なルーティング機能はありませんが、基本的なデカップリングや大規模なファンアウトを低コストで実現するのに優れています。
どちらをいつ選ぶか:
- Service Busは、FIFO(セッション経由)、トランザクション、遅延、重複検出、デッドレター監査を必要とするコマンド、ワークフロー、統合シナリオに使用します。
- Event Gridは、Azureサービスやカスタムアプリからの、きめ細かいフィルタリングとほぼリアルタイムのリアクションを伴う、軽量でプッシュベースのファンアウト通知に使用します。
- Event Hubsは、独立したコンシューマーとダウンストリーム分析を伴う、高スループットのストリーミングテレメトリとログのインジェストに使用します。
- Storage Queuesは、高度なブローカー機能が不要で、コストのシンプルさが最優先される、単純なプロデューサー/コンシューマーのデカップリングに使用します。
統合、API、ハイブリッド接続
Azure Logic Appsは、何百ものコネクタを備えたマネージドワークフローオートメーションを提供します。従量課金 (マルチテナント) では、アクションごとに支払い、自動スケーリングとマルチテナントコネクタを利用できます。バースト的な使用に最適です。Standard (シングルテナント) はFunctionsランタイム上で実行され、ステートフル/ステートレスワークフロー、より高いスループット、カスタムコネクタ、インプロセスで実行される組み込みコネクタ、コンテナ化、ローカル開発、VNET/プライベートエンドポイント統合をサポートします。エンタープライズレベルの分離と予測可能なキャパシティに最適です。統合サービス環境 (ISE) は、プライベートネットワークとデータ局所性のためのレガシーな専用スタンプです。新しい設計では、一般的にVNET統合を備えたLogic Apps StandardまたはApp Service Environment v3へのデプロイが推奨されます。
Azure API Management (APIM) は、APIに対する抽象化およびガバナンスレイヤーを提供します。ポリシーは、inbound、backend、outboundの各ステージで適用され、validate-jwt、rate-limit-by-key、quota、set-header、retry、cache-lookup/store、動的ルーティングのためのset-backend-serviceといった横断的な関心事を強制します。製品 (Product) は1つ以上のAPIをグループ化し、ポリシーの振る舞いをバンドルし、特定のグループに公開できます。サブスクリプションは、コンシューマーごとまたは製品ごとにキーを発行して、アクセスを測定および制御します。キーはローテーションでき、クォータに結びつけることができます。開発者ポータルは、セルフサービスの検出、ドキュメント、試用、オンボーディングワークフローを可能にし、セルフホステッドゲートウェイは、オンプレミスや他のクラウド向けのハイブリッドなコントロールプレーン/エッジデプロイを可能にします。
Azure Relayは、受信ファイアウォールポートを開くことなく、オンプレミスサービスへの受信接続を可能にします。ハイブリッド接続は、TLS 443を介したWebSocketsを使用し、オンプレミスからアウトバウンドで開始され、クライアントからRelayへの汎用的な双方向ソケット通信を実現します。HTTPやWebSockets上でカプセル化された任意のプロトコルに役立ちます。WCFリレーは、オンプレミスのWCFエンドポイント (NetTcp/HTTP) をリレーを介して公開し、トランスポートレベルまたはメッセージレベルのセキュリティとクレームベースのアクセスを提供します。セキュアでファイアウォールフレンドリーな公開が必要な既存のWCFサービスに最適です。
Azure Notification Hubsは、プラットフォーム通知システム (iOS用のAPNs、Android用のFCM、Windows用のWNS、Amazon用のADM) を抽象化するクロスプラットフォームのプッシュブローカーです。バックエンドは、デバイスやインストールをタグやテンプレートと共に登録し、大規模な通知のターゲティングとパーソナライズを行います。PNSごとにプラットフォームの資格情報が必要です:APNsのp8キーまたは証明書、FCMのサーバーキー/資格情報、WNSのパッケージSID/シークレット。Notification Hubsはファンアウト、スロットリング、トークン管理を処理するため、アプリケーションコードはPNSに依存しない状態を保てます。
データ移動とストリーミング分析
Azure Data Factory (ADF) は、ハイブリッド環境全体にわたるデータ統合をオーケストレーションします。統合ランタイム (IR) は、アクティビティのコンピューティングをホストします。Azure IRはAzure内でのサーバーレスなコピーとデータフロー用、Self-hosted IRは受信ポートを開かずにプライベートネットワーク内でのデータ移動/コンピューティング用、Azure-SSIS IRはSSISパッケージをマネージドクラスターにリフト&シフトするためです。パイプラインは、制御フロー (依存関係、ループ、分岐、トリガー) と再利用のためのパラメータ化を用いてアクティビティをオーケストレーションします。マッピングデータフローは、スキーマドリフト処理とパーティショニング制御を備えた、コードフリーでSparkベースの大規模な変換を提供します。変換は複雑だがマネージドコンピューティングを利用したい場合に使用します。リンクされたサービスは、ソース、シンク、およびコンピューティングの接続メタデータと資格情報を定義します。データセットとデータフローのソース/シンクはこれらを参照し、安全な再利用とRBACを可能にします。
Event Hubsは、Captureを介して永続ストレージにデータを保存し、分析サービスと統合します。その後、Azure SynapseやDatabricksがAvroファイルをマイクロバッチで処理できます。スキーマレジストリは、コントラクトを一元管理することでストリーミングジョブにおける逆シリアル化と進化を簡素化し、プロデューサーとコンシューマー間での脆弱な暗黙的な型付けを回避します。
信頼性とイベント駆動パターン
信頼性のための設計は、明示的な障害処理から始まります。Service Busはエンティティごとにデッドレターキューを提供します。コンシューマーはDLQを監視してトリアージし、オプションで分析用のキューに自動転送すべきです。重複検出とべき等なハンドラーを使用して、二重処理を回避します。トランザクションを活用して受信とアウトボックスメッセージの送信をアトミックに処理し、セッションを使用してビジネスエンティティごとの順序付き処理を実現しつつ、セッションをまたいでスケールします。Event Gridの再試行ポリシーは、設定可能な制限付きの指数バックオフを使用します。監査可能性のためにStorageへのデッドレタリングを設定し、リプレイツールを構築します。Event Hubsは少なくとも1回の配信を保証します。SDK(またはAzure Functionsのトリガー)を介したチェックポイント処理により、パーティション/コンシューマーグループごとの進捗追跡が保証されます。Storage Queuesは、明示的に実装する可視性タイムアウトとポイズンメッセージパターンに依存します。
イベント駆動アーキテクチャは、通常、コレオグラフィまたはオーケストレーションを使用します。コレオグラフィは、ピアからのイベントに反応するサービス間で協調を分散させます。疎結合でスケーラブル、部分的障害に強い反面、可視化や統制が難しくなり、補正処理が分散する可能性があります。オーケストレーションは、Azure Durable Functions、Logic Apps、またはワークフローエンジンのようなオーケストレーターにフロー制御を集中させ、可観測性、タイムアウト/補正ロジック、および人間が介在するステップを改善しますが、オーケストレーターへの結合が密になるという代償が伴います。サーガパターンは、2フェーズコミットの代わりに補正アクションを用いて、長時間実行される複数ステップのトランザクションを実装します。コレオグラフィでは、各サービスがドメインイベントをリッスンし、必要に応じて補正処理を発行します。オーケストレーションでは、オーケストレーターがアクティビティを呼び出し、障害やタイムアウト時に補正処理をトリガーします。Azureでは、信頼性の高いコマンド配信のためにService BusとDurable Functions(ステートフルなオーケストレーション、再試行、タイムアウト、補正パターン)を使用するか、堅牢なエンタープライズワークフローと組み込みコネクタのためにLogic Apps Standardを使用してサーガを実装します。
実践的な問題シナリオ
Contoso Retail社は、オンプレミスのERP、eコマースサイト、モバイルアプリ、および下流の分析システムにまたがる注文処理を近代化します。このソリューションは、パートナー通知、リアルタイムのテレメトリ分析、安全なオンプレミスアクセス、モバイルプッシュをサポートし、支払いと在庫に関する厳密な順序付けと補正処理を実装する必要があります。
- 取り込みとコマンドのワークフロー
- 注文コマンドにAzure Service Busのトピックを使用します。サブスクリプションによって処理(支払い、在庫、配送)をセグメント化します。OrderIdをキーとするメッセージセッションを有効にして、注文ごとのFIFOと単一コンカレンシーを保証します。理由: Service Busは、順序付けされた信頼性の高いビジネスワークフローに必要なセッション、トランザクション、デッドレタリングを提供します。
- オーケストレーションと補正処理
- Azure Durable Functionsでサーガを実装します。アクティビティは決済ゲートウェイの呼び出し、在庫の確保、出荷の作成を行い、失敗時には補正処理として返金や在庫の補充を行います。トランザクションスコープ内でService Busのトリガーと出力を使用し、受信メッセージの完了と後続メッセージの発行をアトミックに行います。理由: 中央集権的なオーケストレーションは、ブローカーの信頼性を維持しつつ、タイムアウト、再試行、補正処理を簡素化します。
- イベント駆動の通知
- ドメインイベント(OrderPlaced、OrderShipped)をAzure Event Gridのカスタムトピックに発行します。パートナーや内部アプリは、サブジェクトプレフィックスによるフィルターを使用してサブスクライブします。Storageアカウントへのデッドレタリングと、試行回数に上限を設けた再試行ポリシーを設定します。理由: Event Gridは、広範なファンアウトのために、きめ細かいフィルタリングとデッドレター監査を備えた低遅延のプッシュ配信を提供します。
- テレメトリのストリーミングと分析
- クリックストリームとアプリのテレメトリを、ユーザーセッションをキーとする8つのパーティションを持つAzure Event Hubsに送信します。5分ごとまたは100MBごとにData Lake StorageへのCaptureを有効にします。Schema RegistryにAvroスキーマを登録し、スキーマの互換性を強制します。理由: Event Hubsはコンシューマーから独立して取り込みをスケールできます。Captureは分析処理を分離し、Schema Registryはコントラクトの規律を維持します。
- データ統合
- オンプレミスのSelf-hosted Integration Runtimeを備えたAzure Data Factoryを使用してERPデータを安全に抽出し、Azure IRを使用してキュレーションされたデータをSynapseに取り込みます。Event HubsのCaptureファイルを使用して、SCD処理とエンリッチメントのためのパイプラインとマッピングデータフローを構築します。理由: ADFは、マネージドコンピューティングとリンクされたサービスを介したガバナンスの効いた接続により、ハイブリッドなデータ移動と変換をオーケストレーションします。
- APIとパートナーガバナンス
- すべてのパートナー向けエンドポイントをAzure API Managementでフロントに配置します。注文ステータスとWebhook登録APIを公開します。ポリシーを適用します:パートナー発行トークンにはvalidate-jwt、より厳格なパートナー調整にはrate-limit-by-key、コード変更なしで既存のLogic Appsにルーティングするためにrewrite/set-backend-serviceを使用します。サブスクリプションとキーを必要とするパートナー向けに製品を公開し、開発者ポータル経由でオンボーディングします。理由: APIMは、バックエンドのロジックに触れることなく、セキュリティ、スロットリングを強制し、セルフサービスのオンボーディングを提供します。
- ワークフローの自動化とコネクタ
- バックオフィス業務の自動化(例:メール送信、Dynamicsの更新)には、組み込みコネクタとVNET統合を備えたAzure Logic Apps Standardを使用します。理由: シングルテナントのパフォーマンス、プライベート接続、エンタープライズグレードのコネクタにより、SaaSや基幹業務アプリとの統合が簡素化されます。
- ハイブリッド接続
- 既存のWCFエンドポイントにはAzure RelayのWCF Relayを、軽量なHTTP/WebSocketアプリケーションにはHybrid Connectionsを使用して、選択したオンプレミスERPサービスを公開し、インバウンドのファイアウォール変更を回避します。理由: Relayは、VPNの複雑さなしに、安全なアウトバウンド開始の接続を提供します。
- モバイルプッシュ
- デバイス/ユーザーのセグメンテーションにはタグを、ローカライゼーションにはテンプレートを使用して、Azure Notification Hubs経由で配送状況の更新を送信します。APNsのトークン資格情報とFCMキーを設定します。理由: Notification HubsはPNSの違いを抽象化し、プッシュ配信をスケールさせます。
この設計は、各要件を専用のサービスにマッピングしています。信頼性の高いコマンドにはService Bus、オーケストレーションされたサーガにはDurable Functions、プッシュ通知にはEvent Grid、ストリーミング分析にはEvent Hubs + Capture + Schema Registry、ハイブリッドETL/ELTにはADF、ガバナンスにはAPIM、エンタープライズオートメーションにはLogic Apps、オンプレミスアクセスにはRelay、そしてモバイルエンゲージメントにはNotification Hubsを使用します。
← セキュリティアーキテクチャとゼロトラスト · すべてのドメイン · モニタリング、コスト最適化、運用 →
これらの問題を練習する → · ExamRoll.ioで時間制限付き練習 →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
試験に合格する →