この記事では、Azure でのリアルタイム ストリーミング処理を行うためのテクノロジの選択肢を比較します。
ストリーミング データの概要
多くの場合、組織には、メッセージ、レコード、またはデータを同時に出力するさまざまなデータ ソースがあります。 データの量は、数バイトから数メガバイト (MB) までの範囲で指定できます。 ストリーミング データは、ほぼリアルタイムで処理できる連続した増分方式で大量に出力されます。 この種類のデータには、企業がリアルタイム分析に使用する情報や、アプリケーション ログ、位置情報の更新、イベント、センサーの読み取りなど、ビジネスのさまざまな側面を可視化するために使用される情報が含まれます。
ストリーミング データには、多くの場合、次の特性があります。
不完全なデータ整合性: ソースで一時的なエラーが発生すると、データ要素が見つからない可能性があります。 ストリームの継続的な性質により、データの不整合が発生する可能性があります。 そのため、ストリーム処理と分析システムには、通常、これらのエラーを軽減するためのデータ検証のロジックが含まれます。
継続的なデータフロー: データ ストリームには開始または終了がないため、常にデータを収集する必要があります。 たとえば、サーバーのアクティビティ ログは、サーバーが実行されている限り蓄積されます。
多様なデータ形式: JSON、Avro、CSV などの複数の形式でデータをストリーミングできます。 また、文字列、数値、日付、バイナリ型など、さまざまなデータ型が含まれる場合があります。 ストリーム処理システムでは、これらのデータバリエーションを処理する必要があります。
時間に依存するデータの順序: データ ストリーム内の個々の要素にはタイムスタンプが含まれます。 また、データ ストリーム自体は時間の影響を受け、特定の時間が経過すると値が失われる可能性があります。 場合によっては、データ処理順序を保持する必要があります。
リアルタイム処理のためのテクノロジ オプション
適切なテクノロジの選択に役立つよう、このセクションでは、インジェストから使用まで、Azure の一般的なオプションの概要を示します。 各サブセクションでは、ストリーミング処理フロー内での役割に基づいて、推奨されるテクノロジが強調表示されています。
高度なストリーム処理フロー
このアーキテクチャの Visio ファイルをダウンロードします。
ストリーム プロデューサー
ストリーム プロデューサーは、Azure インジェスト サービスにデータを生成してプッシュします。 モノのインターネット (IoT) デバイス、アプリケーション ログ、データベースなどのソースから継続的にデータを生成します。
ストリーム プロデューサーには、次の利点があります。
ほぼリアルタイムのデータをキャプチャします。 プロデューサーは、IoT デバイス、ユーザー操作、アプリケーション ログなどのソースから継続的にデータを収集できます。 Azure Event Hubs や Azure IoT Hub などの Azure サービスにデータをストリーミングします。
バッチ処理と圧縮を使用してスループットを最適化します。 プロデューサーはメッセージをバッチ処理し、圧縮を適用して送信中のデータ サイズを最小限に抑えることができます。 これらの機能により、効率が向上します。
エラー処理と再試行を使用して、信頼性の高い転送を確保します。 プロデューサーは、信頼性の高いデータ配信を確保するために、自動再試行によってネットワークの中断やブローカーの障害を管理できます。
データの整合性をべき等性によって保証します。 プロデューサーは、 1 回だけ配信をサポートするように構成できます。これにより、メッセージの重複を防ぎ、一貫性のあるデータフローを確保できます。
コンポーネント
IoT Hub は IoT データを取り込みます。 双方向通信、デバイス認証、オフライン メッセージ バッファリングなどの機能が提供されます。 IoT デバイスとそのデータ ストリームを管理するのに最適です。
変更データ キャプチャ (CDC) プロデューサーには、 Azure SQL Database や Azure Cosmos DB などの Azure データベースが含まれます。
CDC データにアクセスするには、Sql Database の Debezium や Azure Cosmos DB の変更フィードなどのコネクタを使用できます。 これらのコネクタは、多くの場合、Azure Functions または Azure App Service 環境でホストされます。 Microsoft Fabric eventstreams 機能を使用する場合、CDC プロデューサーをダウンストリーム コンシューマーと接続するために、Debezium などの個別のアプリケーションは必要ありません。
Debezium などのカスタム アプリケーションは、Azure Kubernetes Service (AKS) や App Service 環境などのマネージド サービス上でスタンドアロン アプリケーションとしてホストすることもできます。 この方法では、より詳細な制御またはカスタマイズが提供されます。
一般的な機能
機能 | IoT ハブ | CDC プロデューサー | カスタム アプリケーション |
---|---|---|---|
デバイス テレメトリ | はい | いいえ | いいえ |
管理されたサービス | はい | いいえ | いいえ |
スケーラビリティ | はい | はい | はい |
データストリーム取り込み
Web アプリケーション、モバイル アプリケーション、IoT デバイス、センサーなどのプロデューサーは、継続的にデータを生成します。 ストリーム処理パイプラインでは、リアルタイムおよびバッチ分析のために、このデータを効率的に取り込む必要があります。
次の要因について検討します。
データ速度: 多くの場合、形式とサイズが異なる複数のソースからの高周波データを処理する方法を決定します。
スケーラビリティ: インジェスト レイヤーは、データ量、多様性、速度の増加に応じて動的にスケーリングできることを確認します。
データの整合性と信頼性: 転送中にデータの損失や重複を防ぎます。
コンポーネント
Event Hubs は、1 秒あたり何百万ものイベントを処理できるリアルタイム データ インジェスト サービスであり、高スループットのシナリオに最適です。 動的にスケーリングし、待機時間が短い大量のデータを処理できます。
Event Hubs では、並列処理やデータ保持ポリシーのパーティション分割などの機能がサポートされています。 Azure Stream Analytics、Fabric、Azure Databricks、Azure Functions などの Azure サービスと統合されます。 Event Hubs は Apache Kafka とも統合され、コードを変更することなく既存の Kafka ワークロードを実行できます。
Event Grid は、フル マネージドのイベント ルーティング サービスです。 さまざまなソースからのイベントの取り込み、分散、および対応を行うので、リアルタイムのイベント ドリブン アーキテクチャに最適です。 イベント通知を効率的に処理し、Azure サービス、カスタム アプリケーション、パートナー システムと統合します。 Event Grid は、ストリーム インジェストにおいて重要な役割を果たします。
Azure HDInsight 上の Kafka は、リアルタイムのデータ インジェストと大規模な処理のためのマネージド Apache Kafka サービスです。 このサービスを使用して、IoT デバイス、アプリケーション ログ、ソーシャル メディア フィードなど、さまざまなソースからのストリーミング データをキャプチャして格納します。 このサービスは、マネージド インフラストラクチャ上の Kakfa 構成を追加で制御します。
Confluent Cloud 上の Apache Kafka は、リアルタイムデータ インジェストのためのフル マネージド Apache Kafka サービスです。 デプロイとスケーリングを簡略化するために、Azure と統合されます。 このソリューションには、スキーマ レジストリ、ストリーム クエリ用の ksqlDB、エンタープライズ レベルのセキュリティなどの機能が含まれています。 Confluent のコネクタとストリーム処理ツールの拡張エコシステムを使用する場合は、このオプションを使用します。
一般的な機能
機能 | Event Hubs | HDInsight 上の Kafka | Kafka on Confluent |
---|---|---|---|
メッセージの保持期間 | はい | はい | はい |
メッセージ サイズの制限 | 1 MB | カスタマイズ可能 | カスタマイズ可能 |
管理されたサービス | はい | サービスとしてのマネージド インフラストラクチャ | はい |
自動スケーリング | はい | はい | はい |
パートナー提案 | いいえ | いいえ | はい |
価格モデル | 階層に基づく | クラスター時間ごと | 消費モデル |
ストリーム処理
この手順には、リアルタイムでデータを変換し、取り込まれたデータをフィルター処理、集計、強化、または分析するプロセスが含まれます。
次の要因について検討します。
ステートフル処理とステートレス処理: 処理が、以前に表示されたデータ (ステートフル) または独立したイベント (ステートレス) に依存するかどうかを決定します。
イベント時間の処理: 複数のソースからのデータ ストリームを一緒に処理する必要があるシナリオ (特に到着が遅いレコードの場合) を考慮します。
ウィンドウ: スライディング ウィンドウまたはタンブリング ウィンドウを使用して、時間ベースの集計と分析を管理します。
フォールト トレランス: データ損失や再処理エラーなしで、システムが障害から回復できることを確認します。
コンポーネント
Stream Analytics は、SQL ベースのクエリ言語を使用してリアルタイム分析を有効にするマネージド サービスです。 このサービスは、データ ストリームのフィルター処理、集計、結合などの単純な処理タスクに使用します。 これは、入力と出力のために Event Hubs、IoT Hub、Azure Blob Storage とシームレスに統合されます。 Stream Analytics は、SQL ベースのクエリを使用した単純なマネージド ソリューションで十分な、複雑度の低いリアルタイム タスクに最適です。
Spark Structured Streaming は、 Fabric、 Azure Databricks、 Azure Synapse Analytics などのサービスでサポートされています。 これらのサービスは、Apache Spark 上に構築され、複雑なデータ変換、機械学習パイプライン、ビッグ データ ワークロードを処理できる統合分析プラットフォームを提供します。 Spark ストリーミング API は、データのバージョン管理と一貫性のために Delta Lake との緊密な統合をサポートします。
ファブリック イベントストリーム は、統合分析プラットフォームである Fabric 内のリアルタイム データ ストリーミング機能です。 Eventstreams を使用すると、ストリーミング データをシームレスに取り込み、処理し、統合して、リアルタイムの分析とアプリケーションを実現できます。 ユーザーは、最小限の技術的専門知識でイベントストリームにアクセスできます。 データ パイプラインを設定するためのドラッグ アンド ドロップ インターフェイスが提供されます。
Azure Functions は、イベント ドリブン処理用のサーバーレス コンピューティング サービスです。 これは、データの変換や、リアルタイム イベントに基づくワークフローのトリガーなど、軽量なタスクに役立ちます。 Azure 関数は、設計上ステートレスです。 永続関数機能は、複雑なイベント調整のためのステートフル ワークフローをサポートするように機能を拡張します。
一般的な機能
機能 | ストリーム分析 | Spark 構造化ストリーミング (Fabric、Azure Databricks、Azure Synapse Analytics) | ファブリック イベントストリーム | Azure Functions(アジュール ファンクションズ) |
---|---|---|---|---|
マイクロバッチ処理 | はい | はい | はい | いいえ |
イベント ベースの処理 | いいえ | いいえ | はい | はい |
ステートフル処理 | はい | はい | はい | いいえ |
チェックポイントのサポート | はい | はい | はい | いいえ |
ローコード インターフェイス | はい | いいえ | はい | いいえ |
価格モデル | ストリーミング ユニット | はい | Fabric SKU | はい |
ストリーミング シンク
システムは、データを処理した後、適切な宛先 ( シンク) にデータを転送して、ストレージ、さらなる分析、またはリアルタイム アプリケーションでの使用を行います。 これらの変換先には、視覚化用のデータベース、データ レイク、分析ツール、またはダッシュボードを含めることができます。
次の要因について検討します。
データの使用量と使用状況: リアルタイム分析またはレポート ダッシュボードには Power BI を使用します。 Azure サービスとうまく統合され、データ ストリームのライブ視覚化が提供されます。
待機時間の短い要件: システムが、デバイス テレメトリやアプリケーション ログなどのリアルタイム データ ストリームで分析を提供する必要があるかどうかを判断します。 アプリケーションによっては、読み取りと書き込みに非常に短い待機時間が必要になる場合もあり、運用分析やリアルタイム アプリケーションに適しています。
スケーラビリティとボリューム: 大量のデータを取り込み、多様なデータ形式をサポートし、効率的かつコスト効率よくスケーリングするワークロードのニーズを評価します。
コンポーネント
Azure Data Lake Storage は、非構造化データと半構造化データを格納するためのスケーラブルで分散型のコスト効率の高いソリューションです。 大量のストリーミング データを格納するためのペタバイト規模のストレージと高スループットのワークロードをサポートします。 また、ストリーミング データとリアルタイム データ パイプラインの分析をサポートする高速な読み取りおよび書き込み操作も可能になります。
Fabric イベントハウスは、テレメトリやログ データ、時系列データ、IoT データなど、ベント ベースのデータに対するリアルタイムの分析と探索のための KQL データベースです。 待機時間が短い 1 秒あたり数百万件のイベントの取り込みをサポートします。 この機能により、ストリーミング データにほぼ瞬時にアクセスできます。 イベントハウスは Fabric エコシステムと深く統合されています。 これにより、ユーザーは Power BI などのツールを使用してストリーミング データのクエリと分析をすぐに行うことができます。
Azure Cosmos DB は、待機時間が短く、グローバルに分散され、拡張性の高いデータ ストレージ用の NoSQL データベースです。 SQL、MongoDB、Cassandra、Table、Gremlin などの複数の API と互換性があり、多様なアプリケーションに柔軟性を提供します。 Azure Cosmos DB は高いスループットを実現し、一貫したパフォーマンスで大量のストリーミング データを処理できます。
SQL Database は、フル マネージドのクラウドベースのリレーショナル データベース サービスです。 これは SQL Server エンジン上に構築されています。 そのため、従来の SQL Server データベースの機能に、クラウドベースのスケーラビリティ、信頼性、管理オーバーヘッドの削減という利点があります。
一般的な機能
機能 | データレイクストレージ | ファブリックイベントハウス | Azure Cosmos DB (アジュール コスモス データベース) | SQLデータベース |
---|---|---|---|---|
汎用オブジェクト ストア | はい | いいえ | いいえ | いいえ |
ストリーミング データ集計 | いいえ | はい | いいえ | いいえ |
JSON ドキュメントの読み取りと書き込みの待機時間が短い | いいえ | はい | はい | いいえ |
Power BI の構造化データ集計 | いいえ | はい | いいえ | はい |
価格モデル | GB または TB ごと | Fabric SKU | 要求ユニット | データベース トランザクション ユニット (DTU) または仮想コア |
寄稿者
Microsoft では、この記事を保持しています。 次の共同作成者がこの記事を書きました。
主執筆者:
- プラティマ・バラバラ |プリンシパル ソリューション アーキテクト
公開されていない LinkedIn プロフィールを見るには、LinkedIn にサインインしてください。
次のステップ
- Fabric Eventhouse
- 生地
- Data Lake Storage の
次のトレーニング モジュールを確認します。
- Azure Functions を調べる
- Stream Analytics の使用
- 高度なストリーミング データ変換を実行する
- Azure Databricks で Apache Spark を使用する