BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Delta - Netflixの開発したデータ同期および拡張のためのプラットフォーム

Delta - Netflixの開発したデータ同期および拡張のためのプラットフォーム

原文(投稿日:2019/11/15)へのリンク

大規模システムでは、特定データの保存や高度な検索、あるいはキャッシュなど、独自の用途を持ったデータストアをいくつも使用することが少なくない。場合によっては、複数のデータストアの同期を維持したり、外部サービスを呼び出してストア内のデータを拡張することも必要になる。このようなニーズに対処するためにNetflixは、結果整合性を持ち、イベント駆動によるデータ同期および拡張を行う、Deltaというプラットフォームを開発した。Netflixの上級ソフトウェアエンジニアで構成されたその開発チームが、Deltaの設計に関する課題と概要について、ブログ記事で説明している。

2つのデータストアの同期には、2重書き込みやログテーブルの使用、分散トランザクションなど、すでに確立されたパターンやソリューションがいくつか存在する。しかしながらチームは、これらのソリューションには問題や制限があると考えたことから、Deltaプラットフォームの開発を決意した。

既存のソリューションの持つ制限を克服したデータストア同期に加えて、Deltaは、他サービスの呼び出しによるデータ強化が可能なように設計されている。同期中、DeltaコネクタとKeystone(Kafkaを使用したNetflixのデータストリーミングパイプライン)経由でCDC(Change Data Capture)イベントがデータストアから読み出されて、ひとつのトピックに保存される。Deltaアプリケーションがそのトピックからイベントを読み出し、より多くのデータを収集するために他のサービスを呼び出して、最終的に拡張したデータを別のデータストアに格納する。これらすべてのプロセスがほぼリアルタイムに実施される、とチームは主張している。すなわち、オジリナルのデータストアが更新されると、同期するデータストアも即時に更新されるのだ。

Synchronization using Delta

Delta-Connectorは、トランザクションログとデータストアのダンプから変更をキャプチャするCDCサービスである。ダンプが使用されているのは、一般的にログには、すべての変更は含まれていない、ということにチームが気付いたためだ。通常は、読み出された変更はDeltaイベントにシリアライズされるので、コンシューマがさまざまなタイプの変更を処理する必要はない。チームによれば、Deltaにはさらに、任意のタイミングでのダンプの起動が可能である、テーブルのロックを行わない、スタンバイインスタンスの使用によって高可用性を実現する、といった高度な機能も含まれている。

Deltaイベントのトランスポート層は、NetflixのKeynoteプラットフォームの持つメッセージングプラットフォームを基盤としている。イベントが対象とするストアに到着することを保証するため、レプリケーションファクタを高く設定し、ブローカインスタンスによる処理能力を強化した特別構成のKafkaクラスタが提供されている。極限的な状況ではそれでもイベントが失われる可能性があるので、検出するためにメッセージ追跡システムを使用している。

Deltaの処理層は、Apache Flinkインテグレーションとそのエコシステムを提供するNetfixのSPaaSプラットフォームをベースとしている。このフレームワークでは、共通的な処理ニーズのための機能と合わせて、プロセスを定義するアノテーション駆動のドメイン固有言語(DSL)を提供することにより、ユーザがビジネスロジックに集中できるようにすると同時に、オペレーションの簡略化、ユーザに対する透過的な最適化などを実現している。

Deltaは1年以上にわたって運用システムで稼働しており、多くのNetflix Studioアプリケーションに欠かせない存在となっていると、開発チームは自負している。インデックス検索やデータウェアハウス化、イベント駆動ワークフローといったユースケースの実装を簡略化している。

フォローアップでは、作者たちがDeltaのコンポーネントについて、さらに詳しく説明している。

CDC用にはいくつかのツールがある。ベルリンで開催されたMicorXchg Conference 2019で紹介されたDebeziumはそのひとつだ。

この記事に星をつける

おすすめ度
スタイル

BT