Netflix Tudum アーキテクチャー:Kafka を使用した CQRS から RAW Hollow を使用した CQRS へ
Tudum.comは、Netflixの公式ファン向けデスティネーションで、毎月2000万人以上のメンバーに独占的コンテンツ、behind-the-scenesのインサイト、インタラクティブ体験を提供しています。プラットフォームのアーキテクチャーは、メンテナンス性、拡張性、柔軟性を考慮して設計されており、Command Query Responsibility Segregation(CQRS)に似たサーバー駆動型UIアプローチを使用しています。Tudumのエディトリアルチームがコンテンツを作成し、それを書き込みデータベースに保存し、ユーザーが消費するために読み取り最適化された形式に変換します。初期のアーキテクチャーでは、Kafkaを使用して書き込みデータベースと読み取りデータベースを分離し、独立したスケーリングと最終的一貫性を実現しました。ただし、このアプローチでは、コンテンツの編集とウェブサイトでの反映との間に遅延が生じました。チームは、Page Data Serviceがニアキャッシュを使用してページビルディングを加速するために遅延の原因を特定しました。Netflixは、この問題に対処するために、RAW Hollowというインメモリー、コロケート、圧縮オブジェクトデータベースを開発しました。これにより、強い読み取り後の書き込み一貫性と低レイテンシーを実現できました。Tudumは、RAW Hollowをテストするための完璧なフィットでした。これにより、I/Oを大幅に削減し、O(1)時間での同期データアクセスを可能にしました。更新されたアーキテクチャーでは、Kafkaインフラストラクチャーの必要性がなくなり、データ伝搬時間が短縮され、ライターとエディターが秒単位で変更をプレビューできるようになりました。また、リクエスト時間も短縮され、ホームページの構築時間が1.4秒から0.4秒に短縮されました。