BT

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

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース NetflixのRENOがデバイス間で一貫したエクスペリエンスを実現する

NetflixのRENOがデバイス間で一貫したエクスペリエンスを実現する

原文(投稿日:2022/03/15)へのリンク

Netflixは、多種多様なプラットフォームやデバイスにおいて一貫したユーザエクスペリエンスを実現するために、Rapid Event Notification System(RENO)を開発した。RENOは、タイトルの視聴からプロファイル情報の更新に至るまで、ユーザの実行したアクションに対して、従来の要求/応答モデルよりも迅速かつ確実に応答する。

最新の株主報告によると、Netflixの有料会員数は現時点で2億2,200万に達しており、スマートフォンやラップトップから、スマートTVや最新のゲームコンソールなどの家電に至るまで、幅広いデバイスをサポートしている。これら2つの特性の混在が、スケーラビリティ、コンパチビリティ、レジリエンスといった面で課題を生み出しているのだ。

Netflix RENOのアーキテクチャ

Netflix RENOのアーキテクチャ図 — 出典: Netflix technology blog

直面するスケーリングの問題に対処するため、Netflixは、いくつかの設計判断を行った。RENOは到着するイベントを優先度でセグメント化した上で、優先度別のAWS SQSキューを通じて、対応する計算インスタンスクラスタにルーティングする。この方法により、"プロファイルの年齢変更"のような重要度の高い変更を、より早くNetflixデバイスに展開することが可能になっている。さらにイベントは、陳腐化(staleness)フィルタを通過することで、設定されたしきい値を越えた時間を経過したものは処理されない。イベントの多くは、即時に送信されなければほとんど価値がないものであるためだ。 

AWS SNSのようなプッシュ通知のみの従来型システムとは違って、RENOでは、ベストエフォートでオンラインデバイスへのプッシュ通知を行い、アプリケーションのライフサイクルを通じて周期的にプルを行うという、プッシュ・アンド・プルの配信モデルを採用している。これによって、ユーザが生成したイベントを定常的に取得することが可能になり、プッシュ通知をサポートしていないレガシデバイスを含む、さまざまなプラットフォームやデバイスタイプに対応する上で、互換性の問題に適切に対処することができる。このモデルでは、モバイルデバイスへの通知送信にはNetflix Customer Messaging Platformを、TVなどのストリームデバイスにはZuul Pushを、長期にわたるイベント履歴の保存にはCassandraデータベースを、それぞれ使用する。

最新の"InfoQ architecture and design report"では、レジリエンス設計を"アーリーアダプタ"のカテゴリに位置付けている。レジリエンスはRENOの多くのレイヤに見ることができる。前述した優先順位分散型のイベントキューや処理クラスタもセグメント化されている。ひとつ、あるいは複数のキューや処理クラスタがフェールした場合でも、隣接するキューやクラスのインスタンスに影響することはなく、システム全体として利用可能な状態を維持することが可能になっている。アウトバウンドのメッセージシステムにおいても同様で、"下流サービスやプラットフォームが通知の配信に失敗しても、他のデバイスのプッシュ通知受信がブロックされないように"、デバイスやプラットフォームの種類に応じた通知を行う、ファンアウト・パターン(fanout pattern)を備えている。

RENOはNetflixで成功を収めており、Netflixのあらゆるプロダクト領域において、迅速な通知を行うサービスの中心に位置付けられている。RENOは現時点ではオープンソースではないが、デバイス状態の監視を行うZuulや、観測可能性の目的に使用されるMantisなど、一部ツールのソースは公開されている。 

作者について

この記事に星をつける

おすすめ度
スタイル

BT