Azure Event Hubsのイングレスとエグレス
少し宣伝させてください!Azureの試験対策本を執筆しました。
Azure Event Hubsのドキュメントを読んでいると「イングレス(Ingress)」や「エグレス(Egress)」といった言葉をよく目にします。これらはデータの流れを理解するうえで非常に重要な概念です。この記事では、これらの用語を具体例を交えながら分かりやすく解説しつつ、「エグレスクォータ」についても触れていきます。
こちらも参考にしてください。
https://learn.microsoft.com/ja-jp/azure/event-hubs/event-hubs-features?WT.mc_id=Portal-fx#partitions
イングレスとエグレスの関係
Event Hubsは、**データの「取り込み」と「配信」**を行うハブの役割を果たします。
たとえば:
- IoTセンサーが温度データを送信する → イングレス
- 分析システムがそのデータを受け取る → エグレス
これがEvent Hubsの基本的なデータフローです。
なぜ「イングレス」「エグレス」と呼ぶの?
ちょっと気になるのがこの用語の由来です。これらはラテン語がもとになっています。
- Ingress: 「入ること」や「入り口」
- Egress: 「出ること」や「出口」
シンプルに「入力」「出力」とも言えますが、技術者間ではこの言葉の方が「データの方向性」を明確に伝えられるとのことです。
AWSやGoogle Cloudなど、他のクラウドプラットフォームでも同じ用語が使われています。これにより、異なるサービスを扱う際にも混乱が少ないのかも?
イングレス(Ingress)って何?
まずは「イングレス」について。簡単に言うと、Event Hubsにデータが「入ってくる」プロセスを指します。
例
IoTデバイスやアプリが生成したデータをEvent Hubに送信する流れが「イングレス」です。たとえば、スマートホームの温度センサーが室温データをクラウドに送るとき、データはEvent Hubに「入る」わけです。
指標として重要なのは?
- スループットユニット(Throughput Units, TU)
1つのTUで、1秒間に最大1MBのデータを受け取ることができます。データ量が多い場合は、TUを追加することで処理能力を上げられます。 - コストに影響
イングレスしたデータ量が課金に直接影響します。送信データが多いほどコストも上がるので、効率的なデータ送信を意識することが大切です。
エグレス(Egress)って何?
一方で、「エグレス」はEvent Hubsからデータが「出ていく」プロセスを指します。
具体的には
- アプリやクライアントがEvent Hubsからデータを受信(コンシューム)する場合
コンシューマー(たとえば、Stream AnalyticsやSparkジョブなど)がEvent Hubsからデータを取得する際、このプロセスがエグレスに該当します。 - Event Hubs Capture機能を使ってデータをAzure Blob StorageやData Lake Storageに保存する場合
Event Hubs Captureは内部ストレージからデータを直接コピーする仕組みのため、エグレスクォータには含まれません。その結果、Captureを利用することで、他のコンシューマー(アプリケーションや処理ジョブ)に必要なエグレスリソースを節約することが可能です。
公式ドキュメントにも記載されています。
Event Hubs Capture は内部 Event Hubs ストレージからデータを直接コピーするため、スループット単位のエグレス クォータを回避でき、他の処理リーダー (Stream Analytics や Spark など) のためにエグレスを節約できます。
エグレスクォータ(Egress Quota)とは?
エグレスクォータとは、Azure Event Hubsから出力されるデータ量に設けられた上限のことを指します。これは、共有インフラストラクチャ上でサービスを提供するAzureが、全ユーザーに公平なリソース利用機会を提供し、システム全体の安定性を維持するための重要な仕組みです。
制限の背景
Azure Event Hubsは、複数のユーザーが同じインフラストラクチャを共有する形で運用されています。このような共有環境では、あるユーザーが大量のエグレス(データ出力)を行うと、他のユーザーの利用可能なリソースが圧迫され、全体のパフォーマンスが低下するリスクがあります。これを防ぐために、エグレスクォータが設けられています。
この仕組みにより、特定のユーザーやアプリケーションが過剰にリソースを利用することを抑制し、全ユーザーが安定して高品質なサービスを利用できる環境を確保しています。また、これによりサービスの公平性が保たれ、予期しない性能低下や障害を未然に防ぐことが可能です。
制限を超えるとどうなる?
エグレスクォータを超過した場合、Event Hubsはデータ転送を一時的にスローダウンさせる可能性があります。これにより、システム全体の負荷を緩和し、他のユーザーに影響が及ばないよう調整が行われます。ただし、この結果として特定のユーザーのエグレス処理が遅延する場合があります。
対応策
- スループットユニット(Throughput Units, TU)の追加
エグレスデータ量が増加する場合、スループットユニットを追加することで制限に対応可能です。スループットユニットを増やすことで、データ転送能力を向上させ、クォータの影響を回避できます。 - データ取得頻度の調整
クライアント側でデータを取得する頻度を適切に調整し、必要以上のデータ転送を防ぐことで、効率的なリソース利用を実現できます。
Event Hubsを使う上でのヒント
最後に、イングレスとエグレスを最適化するためのヒントをいくつか。
- データの頻度と量を計画的に管理
IoTデバイスなどのデータ送信間隔を調整することで、無駄なコストを抑えられます。 - エグレスを効率化
分析システム側で必要なデータだけを取得するように設計すれば、エグレスの負担を軽減できます。 - Event Hubs Captureを活用
イングレスしたデータを自動でストレージに保存できるので、後からバッチ処理する場合に便利です。
ディスカッション
コメント一覧
まだ、コメントがありません