• TOP
  • DataStax
  • Apache Pulsar とストリーミングにおけるリアルタイム化の年
Apache Pulsar とストリーミングにおけるリアルタイム化の年
2023.02.01 DataStax翻訳記事

データのグローバル展開は、その必要性や成長率が凄まじい勢いで高まっています。その中でも取り分け圧倒的なデータは、リアルタイム データです。2022 年に、Apache Pulsar のようなオープンソース プロジェクトをうけ、開発者にとってリアルタイム データがより身近なものになったのはなぜでしょうか。

このブログ シリーズのパート 1 では、リアルタイム データが組織にとって活用しづらく、実務者にとって導入しにくい理由について調べてみました。今回のパート 2 と次回のパート 3 では、2022 年における Pulsar と Cassandra のインパクトについて考察します。

リアルタイムでのデータ ストリーミング

現在導入済みのアクティブ イベント ストリームは、不完全なものや、実在しないものがほとんどです。それは、リアルタイム データの需要が拡大する以前に、JMS や MQ メッセージング プラットフォームのような、各イベントをキャプチャするための共通メカニズムが古くから存在していたからです。それらは、信頼性の高いイベント配信 / ブロードキャスト向けに最適化された設計になっており、各イベントは配信後直ちにパージされます。モダンなリアルタイム システムでは、イベント ストリームの記録を永続化できるので、各状態変化やイベントの記録を元にコーディングが可能です。そのため、従来のメッセージング上では、リアルタイムのイベント ストリームを生成することが困難な上、その方法で構築されたアプリケーションの価値は下がってしまいます。また特筆すべきは、そのようなモノリシックな設計では、クラウド スケールも古く、データ量の増加に対応できずダウンしてしまいます。

Apache Pulsar™ は、数十億のイベントをリアルタイムで管理するための、マルチテナントでハイパフォーマンスなメッセージングおよびストリーミングのプラットフォームです。単一 Pulsar インスタンスでの複数クラスターのサポートし、クラスター間のメッセージのGeo レプリケーション、低レイテンシ伝送、そしてトピックを百万件以上まで拡張可能です。Pulsar は、モジュール方式の非モノリシック アーキテクチャで設計されており、コモディティ ハードウェア上で Geo レプリケーション、永続性、水平スケールを実現しています。従来のメッセージングと Pub-Sub システムの両方の優れた機能を併せ持ち、動的なスケールアップ / スケールダウンが可能です。Pulsar やメッセージング / ストリーミングの初心者の方でも、この 5 分間の動画を見ていただければ、リアルタイムのクラウド スケール データにおいて Pulsar が評価されている理由がおわかりいただけると思います。

Pulsar コミュニティは、2022 年の 5 回のリリースでの 1,600 以上のコミットにより、大幅に進歩しました。

2022 年は、月間アクティブコントリビューター数やコミット数を見ても、2021 年に比べて飛躍的に増加しました。また、Linux Foundation の Open Messaging ベンチマーク も完了し、Apache Kafka との比較では素晴らしい結果を示し、2019 年のベンチマークを更新しています。DataStax は現在、Pulsar コミュニティで活躍し、プロジェクトの推進に寄与しています。DataStax のクラウドネイティブのイベント ストリーミング サービスである Astra Streaming を Apache Pulsar 上に構築して Pulsar との依存関係を築くことで、DataStax はプロジェクトに貢献し、限界に挑戦しています。

リアルタイムでのデータ ストリーミング (as-a-service)

日、多くのものがそうであるように、ストリーミング システムもまた、モジュール化とサーバーレスという完全なクラウド ネイティブに生まれ変わろうとしています。そんな中で昨年誕生したAstra Streaming は、Apache Pulsar の分散アーキテクチャと Astra のサーバーレス オペレーション モデルをベースに構築されたクラウド ネイティブのイベント ストリーミング サービスです。クラウド スケールでは、非モノリシックでアイドリング時にゼロのスケールになる基盤の上に構築することが重要です。それによって、リアルタイムのパフォーマンス レベルを維持しながら、ストリーミングのユニット エコノミクスを改善します。AWS、Google Cloud、Azure 上で動作する SaaS として提供されるため、Apache Pulsar の運用に専門知識を必要とせず、SLA / SLO に悩まされることもありません。

広範にわたる各種コネクタにより、Astra Streaming と各自のデータ エコシステムを接続できます。そして、データ ソースやアプリケーションからストリーミング分析や機械学習システムへのリアルタイム データ フローが瞬時に実現します。データ統合、イベントドリブン型アーキテクチャ、エッジ コンピューティングや IoT、さらにオペレーショナル機械学習からリアルタイム分析まで、あらゆる用途に利用されています。

リアルタイムでの従来のメッセージング

Pulsar エコシステムの活動は非常に活発で、コア プロジェクトが積極的に拡張しています。多数の優れたプロジェクトの中でも卓越した、3 つの「Starlight」Apacheライセンスのエコシステム プロジェクトの中核となっています。Starlight には、従来のメッセージング API とのワイヤーレベルの互換性があるため、既存のアプリケーションを書き直すことなく、Pulsar の驚異的なパフォーマンスと水平スケーラビリティを活用できます。

  • Starlight for JMS では、初めて JMS 標準に対応し、Apache Pulsar のような最新のストリーミング プラットフォーム上で動作します。
  • Starlight for Kafka では、Pulsar broker 上に Kafka プロトコル ハンドラーを採り入れることで、Apache Pulsar でのネイティブな Apache Kafka プロトコルのサポートを実現しています。
  • Starlight for RabbitMQ は、RabbitMQ アプリケーションと Apache Pulsar 間のプロキシとして機能します。

Astra Streaming は 2022 年のローンチ時に、Starlight プロジェクトをそのマネージド クラウド サービスに統合し、Kafka、RabbitMQ、JMS (Java Message Service) に対してワイヤーレベル API のフルサポートを実現しました。単一のメッセージングとストリーミングのアプローチにより、マネージド マルチクラウドサービスでの運用の複雑さを解消しています。

では、どのような利点があるのでしょうか。ここでは、追加された Starlight の機能はさておき、パフォーマンスだけに注目してみましょう。Starlight for JMS は、Linux Foundation による Open Messaging Project のベンダーニュートラルなベンチマーク素晴らしい結果を出しています。

  • 中規模の Pulsar クラスター上で、プロデューサーとコンシューマの両ワーカーにおいて 2 時間以上にわたって、毎秒 100 万メッセージを維持。
  • 公開待機時間が 99 パーセンタイルで 10 ミリ秒未満。規模が大きな Pulsar クラスターでは、曲線のグラフの端ではさらに低レイテンシーを達成可能
  • エンドツーエンドの待機時間の 80% 以上が 6 ミリ秒から 14 ミリ秒の間で、非常に安定。

2022 年のもう一つのオープンソース イノベーションが、Apache Pulsar Functions です。Pulsar Functions は、Apache Storm のような専用のストリーム処理エンジンが通常扱う詳細を抽象化するものです。それには、関数の実行環境、回復力、メッセージ実施 (デリバリー) 保証の処理などが含まれます。また、Cloud Functions (AWS Lambda、Google Cloud Functions、Azure Functions) のサーバーレス操作やプログラミング モデルのエミュレートにも対応します。データ変換、動的ルーティング、データ エンリッチメント、分析など、Functionに収めることができるものすべてに対し、処理ロジックが可能です。関数ロジックは、Java、Python、Golang で記述することができます。Pulsar クラスター内に関数を置くことで、オペレーティングとプログラミング モデルの値を取り込むための待機時間は増えますが、別の Cloud Functions と比べれば最小限に抑えられます。

また DataStax では、DataStax Pulsar Transformations により Pulsar Functions フレームワークの向上を図り、コードを書かずに高度なデータ操作を実行できるようにしました。DataStax Luna Streaming 配信と次期 Apache Pulsar 2.12 では、最終コピー先にプッシュする前にデータの前処理が必要な場合、Pulsar Sink の次に Function を実行できるようにすることで (PIP-193 参照)、中間トピックが不要になりました。

Pulsar をぜひお試しください。次のビデオでは、無料の Astra Streaming インスタンスの使用方法を 5 分ほどでご紹介しています。

Astra Streaming には、クラウド ネイティブ システム用に再構築された変更データ キャプチャ (CDC) を使った、Astra DB と異種データ システムとの同期機能もあります。

リアルタイムでの変更データキャプチャ

Google や Microsoft Office のドキュメントにオブジェクトを埋め込んだ経験はありますか?その場合、オリジナルのコピーが変更されるたびに、下位の埋め込みオブジェクトがすべて自動的に更新されます。非常に便利な機能です。これと同様のことをエンタープライズ データに当てはめれば、CDC (変更データ キャプチャ) の本質が見えてきます。システム間でデータを同期させたい場合に効果的で、次のようなさまざまユース ケースがあります。

  • データ統合
  • 機械学習
  • 高度な検索
  • レポートと分析
  • セキュリティ監視、通知

CDC は、従来の ETL (Extract , Transform, Load) 技術を進化させたもので、バッチ処理で、複数のターゲット システムへ送るための単一ソースからのデータを取得します。CDC では、データベース イベントが他のデータベースや下位システムにリアルタイムで複製され、同期が維持されます。CDC では、データを ETL のように大規模なバッチ処理では扱いません。ソース データベースの変更に合わせてデータを継続的に読み込み、ターゲットを同期させます。昨今のデータの量と速度では、このアプローチは単に効率的であるだけでなく、足並みを揃えるための唯一の方法なのです。このようなデータベース変更イベントの配信には、メッセージングとストリーミングが共通のコンパニオンです。インフライトデータでは、ソースとターゲット間のデータ整合性を確保するために、配信保証、配列セマンティクス、再試行ロジック、キュー、Pub-Sub などが必要です。

完全なクラウド ネイティブに生まれ変わりつつあるのはストリーミング システムだけではありません。今年は、Astra のモジュール式のサーバーレス基盤と Astra Streaming 上に構築された、CDC for Astra DB も発表されました。構成を簡素化することで、1つ以上の Astra DB テーブルで CDC を有効にし、Astra Streaming のイベント トピックに各変更を公開できます。次に、Java、Golang、Python、Node.js 内のクライアント ライブラリを使って、各自のリアルタイム アプリケーションで各変更イベントをサブスクライブできます。各エンドポイントを増設することで、WebSocket インターフェイスや標準的な JMS クライアントを使用して、 直接のサブスクライブも可能です。

CDC データの送信先が Snowflake、Elasticsearch、Kafka、Redis などの他のプラットフォームの場合、Astra Streaming では、ビルトイン コネクタ ライブラリを使った構成が簡素なインターフェイスにより、リアルタイムのデータ パイプラインも作成できます。以下のデモは、Cassandra ベース システムでの CDC のごく一般的な利用例で、全文検索などの分析用にデータを Elasticsearch に複製しています。

CDC for Astra DB は、複数の Cassandra テーブル、キースペース、データベースも同期するために利用することも可能です。

Astra Streaming 搭載の CDC for Astra を使用することで、ユーザーはビジネス ロジックの作成に集中することができます(配管、ボイラープレート、グルー コードなどの手間のかかる作業に時間はとれません)。
次回のブログでは、リアルタイムでのクラウド スケール開発者向けの不揮発性 (非消費型) オペレーション データベースの影響について解説します。

原文:The Year in Real-Time for Apache Pulsar and Streaming

関連記事