Netflixは、さまざまなビジネス目的に対する知覚的なビデオ品質の測定に依るところが大きい。メトリックが進化し、より多くのワークフローの一部になるにつれて、それらの測定ツールもスケーリングする必要がある。Netflixは最近、どのようにしてCosmosマイクロサービスを使って新しいビデオ品質測定ワークフローを実装するかを説明している。優れたスケーラビリティとデータの疎結合を備えた品質メトリックの革新を育てることを目的としたものである。
知覚的なビデオ品質の測定は、最初はReloadedと呼ばれるプロダクションシステムによってNetflixで開発された。Reloadedには多くの機能があり、2つの大きなデメリットがあった。
1つは、それがモノリシックシステムであり、たとえば、メトリックアルゴリズムが更新されたときに急速な進化を妨げてしまう。もう1つは、ビデオのエンコード中にのみビデオ品質メトリックが生成され、更新のたびにビデオを再エンコードするコストが高いため、メトリックを更新することは現実的でない。
Netflixチームは、Reloadedアーキテクチャに関するこれらの懸念や他の懸念に対処するための新しいソリューションとしてCosmosを開発した。
Cosmosは、ワークフロー主導のメディア中心のマイクロサービス用のコンピューティングプラットフォームです。Cosmosには、関心の分離、独立したデプロイ、可観測性、高速プロトタイピング、製品化など、いくつかの利点があります(...)。
Cosmosのアーキテクチャを使って、新しい知覚的なビデオ品質測定サービスが開発された。この新しい独立したサービスは、ビデオ品質サービス(VQS)と呼ばれる。
VQSは、2つのビデオを入力として受け取ります。ソースとその派生です。そして、その派生で測定された知覚品質を返します。(...)外部向けのAPIレイヤー(Optimus)、ルールベースのビデオ品質ワークフローレイヤー(Plato)、サーバーレスコンピューティングレイヤー(Stratum)があります。
Optimus、Plato、Stratumは、Cosmosのサブシステム名である。レイヤーは、キューイングシステムを介してやり取りする。
CosmosでのVQSのアーキテクチャの概要。ソース: https://netflixtechblog.com/netflix-video-quality-at-scale-with-cosmos-microservices-552be631c113
VQSのAPIは、品質測定をリクエストし、非同期で結果を取得するためのエンドポイントを公開している。
そのワークフロールールは、ビデオをチャンクに分割して、ビデオ品質を測定する際の品質メトリック計算を並列化している。この並列化は、Netflixのスケールを活用して、スループットを向上させ、各測定の遅延を低減させる。
次に、VQSは個々のチャンク品質メトリックをアセンブルして、最終的なビデオ品質メトリックを生成する。
VQSの開発は、ReloadedシステムをCosmosに移行するための多くのステップの1つであった。このような移行は段階的に行われるため、ビデオ品質メトリックに依存する一部のワークフローは引き続きReloadedベースである。
この相互依存のため、Reloadedにいくつかのワークフローが導入された。ReloadedからCosmosにビデオ品質のトラフィックをルーティングして2つのシステムをブリッジするためである。
VQSに至るまでの再設計には、ビデオ品質測定をビデオエンコーディングから分離することとは別の目標があった。品質スコアストレージの分散化である。たとえば、品質スコアのストレージは、一元化されたReloadedストレージからNetflixメディアデータベース(NMDB)に移動した。これには、スコアのクエリが可能になるというメリットもある。当然、CosmosのVQSで使用されるデータ形式はReloadedのものとは異なる。
それらのデータモデルは構造とストレージが異なるため、ドキュメント変換サービス(DCS)と呼ばれる別のサービスが導入された。DCSは、CosmosデータモデルとReloadedデータモデルを変換し、NMDBストレージやReloadedストレージとやり取りできる。
アナリストのTommy Flanagan氏は、Netflixの「Cosmosへの取り組みは、どのようにしてインフラストラクチャとメディアアルゴリズムの開発者チームの融合がビジョンを実現したかの例となります。これは、通常のトップダウンエンジニアリング環境では不可能です。」と書いている。
f
Netflixは現在、VMAFメトリックを使ってストリーミングビデオ品質を測定している。そして、ビデオ品質機能アルゴリズムの開発を続けている。