Confluent社のDirector of Advocacy and Developer Experience Engineering Adi Polak氏が直近のQCon San Franciscoで「全てのものをストリーミング—効果的なデータストリーム処理のパターン」を講演した。Polak氏の講演はデータストリーミングの持続的な課題をハイライトし、組織がスケーラブルで効率的なデータストリーミングパイプラインを管理するのに役立つ実用的なソリューションを明らかにした。
10年にわたる技術の進歩にもかかわらず、データストリーミングは長い間、組織にとって長い間大きな課題となっている。チームはダウンストリーム出力エラーや最適でないパイプラインのパフォーマンスのような問題のトラブルシューティングに、彼らの労力の80%をよく費やしている。Polak氏は理想的なデータストリーミングソリューションに期待される中核的な要件として信頼性、多様なシステムとの互換性、低レイテンシー、スケーラビリティ、高品質なデータを挙げた。
しかし、これらの要求を満たすには、スループット、リアルタイム処理、データ整合性、エラーハンドリングなどの主要課題に取り組む必要がある。講演では、AI駆動アプリケーションに対するインフラの適応において、正確に1回のセマンティクス、結合操作、データの整合性の確保といった高度な側面に焦点が当てられた。
Polak氏はデータストリーミングパイプラインの複雑さに対処するデザインパターンをいくつか紹介した。これには、エラーマネジメントのためのDead Letter Queues(DLQ)や、システム間で正確に1回の処理を保証するためのパターンなどが含まれる。
- 正確に1回のセマンティクス
正確に1回のセマンティクスを達成することが、信頼性の高いデータ処理の要石であることは変わらない。Polak氏はレガシーなLambdaアーキテクチャと、リアルタイムイベント、状態、および時間をより決定論的に処理するモダンKappaアーキテクチャを対比した。彼女は、Apache KafkaやApache Flinkのようなツールを使う2フェーズコミットプロトコルを通して正確に1回の保証を実装する方法を説明した。オペレータはプレコミットを行い、次にシステム全体のコミットを実行することで、個々のコンポーネントが失敗しても一貫性を確保する。ウィンドウベースの時間計算(例えばタンブリングウィンドウ、スライディングウィンドウ、セッションウィンドウ)は、決定論的処理をさらに強化する。
- 結合操作
データストリームの結合-ストリームとバッチの組み合わせや2つのリアルタイムストリーム-は複雑だ。Polak氏は、結合時にシームレスな統合と正確に1回のセマンティクスを確実にするためには正確な計画が必要であることを強調した。
- エラーハンドリングとデータの整合性
データの完全性は信頼できるパイプラインにとって極めて重要であることが強調された。Polak氏は、スキーマの検証、バージョン管理、スキーマレジストリを使用したシリアライズを含む、「ゲートを守る」コンセプトを紹介した。このような対策により、物理的、論理的、参照整合性を確保し、「良いデータに悪いことが起こる」のを防ぐ。Jiraと統合された自動化エラー処理ツールのようなプラグ可能な障害エンリッチャーは、ラベル付けとシステム的にエラーを解決するためのソリューションとして紹介された。
Polak氏はデータストリーミングとAI駆動のユースケースの拡大する接点を探求することで締めくくった。不正検知、動的パーソナライゼーション、リアルタイム最適化を行うかどうかに関わらず、AIシステムの成功は堅牢でリアルタイムなデータインフラに依存している。彼女は、AIアプリケーションの高スループットと低レイテンシーの要求をサポートするパイプライン設計の重要性を強調した。
最後に、Polak氏は効果的なデータストリーミングのための重要な洞察を聴衆に提供した:
-
データ品質を優先し、エラー管理のためのDLQを実装する。
-
堅牢なアーキテクチャを使ってシステム全体で正確に1回の保証を確保する。
-
本質的に困難な結合操作に対して厳密に計画する。
-
健全なエラーハンドリングは、明確なラベリングと体系的な解決から始まる。