フル マネージドのオープン ソース データ エンジンを使用したストリーム処理

Azure Event Hubs
Azure Kubernetes Service (AKS)
Azure Cosmos DB
Azure Database for PostgreSQL
Azure Cache for Redis

この記事では、フル マネージド Azure データ サービスを使用するストリーミング ソリューションの例を示します。

アーキテクチャ

ストリーミング データがどのようにシステムを流れるかを示すアーキテクチャ図。Kafka、Kubernetes、Cassandra、PostgreSQL、Redis の各コンポーネントがシステムを構成します。

このアーキテクチャの Visio ファイルをダウンロードします。

ワークフロー

  1. Event Hubs for Apache Kafka は、Kafka プロデューサーからイベントをストリームする機能です。

  2. Apache Spark はイベントを消費します。 AKS は、Apache Spark ジョブの管理環境を提供します。

  3. Azure Cosmos DB for Apache Cassandra を使うアプリケーションで、Cassandra にイベントを書き込みます。 このデータベースは、イベントのストレージ プラットフォームとして機能します。 AKS は、Cassandra に書き込むマイクロサービスをホストします。

  4. Azure Cosmos DB の変更フィード機能では、イベントがリアルタイムで処理されます。

  5. スケジュールされたアプリケーションは、Cassandra に格納されているイベントに対してバッチ指向の処理を実行します。

  6. 参照データ エンリッチ イベント情報を保存します。 バッチ指向アプリケーションは、エンリッチされたイベント情報を PostgreSQL に書き込みます。 一般的な参照データ ストアは次のとおりです。

  7. バッチ指向アプリケーションでは、Cassandra データが処理されます。 そのアプリケーションは、処理したデータを Azure Database for PostgreSQL に保存します。 このリレーショナル データ ストアは、エンリッチされた情報が必要なダウンストリーム アプリケーションにデータを提供します。

  8. レポート アプリケーションとツールは、PostgreSQL データベース データを分析します。 たとえば、Power BI は、Azure Database for PostgreSQL コネクタを使用してデータベースに接続します。 このレポート サービスは、データを豊富な形式で表示します。

  9. Azure Cache for Redis は、メモリ内キャッシュを提供します。 このソリューションでは、重要なイベントに関するデータがキャッシュに含まれます。 アプリケーションはデータをキャッシュに格納し、キャッシュからデータを取得します。

  10. Web サイトや他のアプリケーションでは、キャッシュされたデータを使用して応答時間を向上させます。 キャッシュでデータを使用できない場合もあります。 そのような場合、これらのアプリケーションは cache-aside パターンまたは同様の戦略を使用して、Azure Cosmos DB で Cassandra からデータを取得します。

コンポーネント

  • Event Hubs は、毎秒数百万件のイベントを処理できるフルマネージドなストリーミング プラットフォームです。 Event Hubs は、オープンソースのストリーム処理プラットフォームとして広く使われている Apache Kafkaエンドポイントを提供します。 エンドポイント機能を利用すれば、組織はストリーム処理用の Kafka クラスターを構築、維持する必要がありません。 その代わりに、Event Hubs が提供するフルマネージドの Kafka 実装を利用できます。

  • Azure Cosmos DB は、マルチマスター レプリケーションを提供するフル マネージドの NoSQL とリレーショナル データベースです。 Azure Cosmos DB では、多くのデータベース、言語、プラットフォームのオープンソース API がサポートされています。 たとえば、次のようになります。

    Azure Cosmos DB for Apache Cassandra を通じて、Apache Cassandra のツール、言語、ドライバーを使って Azure Cosmos DB のデータにアクセスできます。 Apache Cassandra は、書き込み負荷の高いワークロードに適したオープンソースの NoSQL データベースです。

  • AKS は、高可用性とセキュリティを備えたフル マネージド Kubernetes サービスです。 Kubernetes は、コンテナ化されたワークロードを管理するための、急速に進化しているオープンソースのプラットフォームです。 AKS は、Apache Spark などのオープンソースのビッグデータ処理エンジンをホストします。 AKS を使用すると、マネージド環境で大規模なストリーム処理ジョブを実行できます。

  • Azure Database for PostgreSQL は、フルマネージドのリレーショナル データベース サービスです。 PostgreSQL に対して高可用性、弾力的なスケーリング、パッチ適用、その他の管理機能を提供します。 PostgreSQL は、広く採用されているオープンソースのリレーショナル データベース管理システムです。

  • Azure Cache for Redis は、Redis ソフトウェアをベースにしたメモリ内データストアを提供します。 Redis は、人気の高いオープンソースのインメモリ データストアです。 セッション ストア、コンテンツ キャッシュ、その他のストレージ コンポーネントは、パフォーマンスとスケーラビリティを向上させるために Redis を使用します。 Azure Cache for Redis は、オープンソースの Redis の機能をフルマネージドで提供します。

代替

このソリューションに含まれるオープンソース対応の製品やサービスを、他のものと置き換えることができます。 Azure で使用できるオープンソース サービスの詳細は、Azure でのオープン ソースを参照してください。

シナリオの詳細

オープンソースのエンジンを搭載したフル マネージドの Azure データ サービスが、このストリーミング ソリューションを構成しています。

  • Azure Event Hubs は、ストリーム インジェスト用の Kafka 実装を提供します。
  • Azure Cosmos DB では、Cassandra でのイベント ストレージがサポートされます。
  • Azure Kubernetes Service (AKS) は、ストリーム処理のために Kubernetes マイクロサービスをホストします。
  • Azure Database for PostgreSQL は、PostgreSQL のリレーショナル データ ストレージを管理します。
  • Azure Cache for Redis は、Redis のメモリ内データ ストアを管理します。

オープンソース テクノロジには多くの利点があります。 たとえば、組織はオープンソース テクノロジを次の場合に使用できます。

  • 既存ワークロードを移行する。
  • 広範なオープンソース コミュニティを活用する。
  • ベンダーのロックインを制限する。

オープンソース テクノロジへのアクセスを可能にすることで、Azure のツールとサービスは、組織がこれらの利点を活用し、選択したソリューションを開発するのに役立ちます。

このソリューションでは、フル マネージドの サービスとしてのプラットフォーム (PaaS) サービスを使用します。 その結果、修正プログラムの適用、サービス レベル アグリーメント (SLA) のメンテナンス、その他の管理タスクが Microsoft によって処理されます。 もう 1 つの利点は、Azure のセキュリティ インフラストラクチャとのネイティブ統合です。

考えられるユース ケース

このソリューションは、さまざまなシナリオに適用されます。

  • Azure PaaS サービスを使用して、オープンソース テクノロジを使用する最新のストリーミング ソリューションを構築する
  • オープンソースのストリーム処理ソリューションを Azure に移行する

考慮事項

以降の考慮事項には、ワークロードの品質向上に使用できる一連の基本原則である Azure "Well-Architected Framework" の要素が組み込まれています。 詳細については、「Microsoft Azure Well-Architected Framework」を参照してください。

ベスト プラクティスを念頭に置いて、各サービスを設計、実装します。 各サービスのガイドラインについては、Microsoft ドキュメント サイトを参照してください。 次のセクションの情報も確認してください。

パフォーマンス

  • Azure Database for PostgreSQL 用の接続プールを実装します。 アプリケーション内で接続プール ライブラリを使用できます。 また、PgBouncerPgpool などのコネクション プーラーを使用することもできます。 PostgreSQL との接続の確立は、コストのかかる操作です。 接続プールを使用すると、アプリケーションのパフォーマンスの低下を回避できます。 PgBouncer は Azure Database for PostgreSQL フレキシブル サーバーに組み込まれています。

  • Azure Cosmos DB for Apache Cassandra は、適切なパーティション戦略を使用して最高のパフォーマンスを発揮するように構成されています。 テーブルをパーティション分割する際に、単一フィールドの主キー、複合主キー、またはコンポジット パーティション キーのいずれを使用するかを決定します。

スケーラビリティ

  • Event Hubs 階層を選択する際には、ストリーミング要件を考慮してください。

    • 120 MBps 以下のミッドレンジのスループット要件には、Premium 階層 を検討してください。 この階層では、ストリーミング要件を満たすために柔軟にスケーリングされます。
    • ギガバイト単位のデータが入力されるハイエンドのストリーミング ワークロードには、Dedicated 階層 をご検討ください。 この階層は、容量が保証されたシングルテナント オファリングです。 専用クラスターのスケール アップとスケール ダウンが可能です。
  • Azure Cosmos DB の autoscale-provisioned throughput は、ワークロードが予測不可能で急激に変化する場合に検討してください。 Azure Cosmos DB では、手動でプロビジョニングされた、またはオートスケールでプロビジョニングされたスループットを使用するように設定できます。 自動スケーリングを使用すると、Azure は使用量に応じて 1 秒あたりの要求ユニット数を自動的に瞬時にスケーリングします。

セキュリティ

セキュリティは、重要なデータやシステムの意図的な攻撃や悪用に対する保証を提供します。 詳細については、「セキュリティの重要な要素の概要」を参照してください。

  • Azure Private Link を使用して、Azure サービスを自身の仮想ネットワークの一部にします。 プライベート リンクを使用すると、サービスとのネットワーク間のトラフィックは、パブリック インターネットを経由することなく、Azure のバックボーン上を流れます。 このソリューションの Azure サービスは、一部の SKU でプライベート リンクをサポートしています。

  • 組織のセキュリティ ポリシーを確認します。 Azure Cosmos DB for Apache Cassandra では、キーを使って、キー スペースやテーブルのようなリソースにアクセスできます。 Azure Cosmos DB インスタンスには、これらのキーが格納されます。 セキュリティ ポリシーによっては、Azure Key Vault などの鍵を鍵管理サービスに伝搬する必要があるかもしれません。 また、組織のポリシーに従ってキーのローテーションを行うようにしてください。

回復性

可用性ゾーンを使用して、ビジネス クリティカルなアプリケーションをデータセンターの障害から保護することを検討してください。 このソリューションのサービスは、可用性ゾーン対応地域における特定の SKU の可用性ゾーンをサポートします。 最新の情報は、可用性ゾーンをサポートするサービスの一覧を確認してください。

コスト最適化

コストの最適化とは、不要な費用を削減し、運用効率を向上させる方法を検討することです。 詳しくは、コスト最適化の柱の概要に関する記事をご覧ください。

このソリューションのコストを見積もるには、Azure 料金計算ツールを使用してください。 また、次の点に留意してください。

  • Event Hubs には、Basic、Standard、Premium、Dedicated の 4 つの階層があります。 Premium や Dedicated 階層は、大規模なストリーミング ワークロードに最適です。 スループットは拡張できますので、最初は小さく始めて、需要の増加に応じてスケールアップすることを検討してください。

  • Azure Cosmos DB には、2 つのモデルがあります。

    • 負荷の高いワークロードに最適なプロビジョン スループット モデルです。 このモデルには、スタンダードとオートスケールの 2 つの容量管理が用意されています。
    • 小規模でスパイクの多いワークロードの実行に適したサーバーレス モデルです。
  • AKS クラスターは、Azure で動作する一連のノード、または仮想マシン (VM) で構成されています。 クラスターの主なコストを構成するのは、コンピュート、ストレージ、ネットワークの各コンポーネントのコストです。

  • Azure Database for PostgreSQL は、単一サーバーおよびフレキシブル サーバーのサービス レベルで提供されています。 異なる階層は、予測可能なワークロード、バースト可能なワークロード、ハイパフォーマンスなワークロードなど、さまざまなシナリオに対応します。 コストは主に、コンピュート ノードの選択とストレージの容量に依存します。 新しいワークロードについては、単一サーバー レベルよりも幅広い機能がサポートされるフレキシブル サーバー レベルを選択することを検討してください。 また、単一サーバーは非推奨になる予定であることに注意してください。

  • Azure Cache for Redis は複数の階層で利用可能です。 これらの階層は、250 メガバイトから数テラバイトの容量のキャッシュに対応します。 容量に加え、他の要件も階層の選択に影響します。

    • クラスタリング
    • 永続化
    • アクティブな地理的レプリケーション

このシナリオのデプロイ

このソリューションをデプロイする場合は、次の点に注意してください。

共同作成者

この記事は、Microsoft によって更新および保守されています。 当初の寄稿者は以下のとおりです。

プリンシパル作成者:

  • Ajit Ananthram |クラウド ソリューション アーキテクト

次の手順

関連するソリューションの詳細は、次の情報を参照してください。