舞台裏:Netflixの広告イベントパイプラインをライブ向け... ノート

舞台裏:Netflixの広告イベントパイプラインをライブ向けに進化させる — パートII

Netflixは、特にライブストリーミング広告に対応するため、スケーラビリティと複雑性の向上に対応できるよう、広告イベントパブリッシャーを再構築しました。以前のシステムは、広告メタデータのエンリッチメントにKey-Valueストアを使用していました。このアプローチは機能的でしたが、ライブイベントには不向きなスケーリングのボトルネックとクリティカルパスの依存関係がありました。ライブストリームは、より堅牢で弾力的なソリューションを必要とする、大規模でスパイク状のトラフィックを生成します。新しいアーキテクチャは、ステートフルストリーム処理フレームワークであるApache Flinkを活用して、ニアリアルタイムのエンリッチメントを実現します。広告サーバーの応答ログは、データベースではなくKafkaに送信されます。次に、Flinkはこれらの応答とクライアント生成の広告イベントとの間でリアルタイムのストリーミングジョインを実行します。これにより、クリティカルサービングパスでの直接的なデータベース書き込みが排除され、障害を防ぎ、スケーラビリティを向上させます。Flinkジョブは、イベントを正規化し、正しい処理リージョンにルーティングし、そして重要なことに、ステートフルジョインを実行します。最近の広告サービング応答をメモリに保持し、設定可能なウィンドウ(通常60分)内で、受信したクライアントイベントと照合します。このアプローチにより、両方のイベントが利用可能な場合に、その場でエンリッチメントが可能になります。イベントが先に到着した場合、対応する応答が現れるまで保持されます。クロスリージョンエンリッチメントに対応するため、システムはすべてのサービング応答をグローバルにレプリケートするのではなく、広告を提供したリージョンにクライアントイベントをルーティングします。これはよりコスト効率が高いです。広告トークンには、サービングリージョンの情報が含まれるようになりました。60分のウィンドウはほとんどのイベントをカバーしますが、請求およびレポート作成のためのデータ完全性を確保するために、遅延して到着したイベントを回復するための別のパスが存在します。このステートフルストリーム処理アーキテクチャは、Netflixの進化する広告ニーズに必要なスケーラビリティとレジリエンスを提供します。
CdXz5zHNQW_vv6mcOQtqA.png