AWS re:Invent2013参加レポート #28 Maximizing Audience Engagement in Media Delivery

reinvent-logo

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

screenshot 2013-11-17 23.36.13

Netflixレベルのメディア配信はどうなっているか?

みなさんおなじみ米国のインターネットトラフィックを使いまくる動画配信サービスNetflixのスピーカーも参加しているセッションです。

まず、顧客は何を求めているのか列挙してくれました。どこからでも無料で、どんなデバイスからでも都合良くアクセスできて、高品質でいかなる見当違いな割り込みも無く、パーソナライズされた広告で、コンテンツ閲覧中にインタラクティブでセカンドスクリーンでソーシャルメディアでシェアできること

screenshot 2013-11-17 23.37.43

そもそも、コンテンツ配信って誰がやっているのかってことで米国の事情が出ています。ABCやCBSなどのニュースメディア、CNNなどのケーブルテレビ、様々なインターネットサイト

screenshot 2013-11-17 23.38.15

そして、NetflixやhuluやMLB.comのような新しいメディアです。

screenshot 2013-11-17 23.38.21

コンテンツ発見についても紹介されています。雑誌、テレビ、STB、スマホ、タブレットなどの画一的に紹介する端末から

screenshot 2013-11-17 23.38.32

最近は、メディア横断的な検索サイト、個人に最適化されたディスプレイ、好みに合わせたアルゴリズムなどを駆使して、顧客がコンテンツを見つけやすくなるように様々な工夫がされています。

screenshot 2013-11-17 23.38.45

コンテンツ配信(Delivery)とコンテンツ発見(Discovery)

上記で紹介したような、コンテンツ配信(Delivery)とコンテンツ発見(Discovery)について、発生するデータソースについて考えてみましょう。コンテンツ発見時に利用されるのが、メタデータとセッションログです。コンテンツ配信時に利用されるのが、ビデオログ、クリックなどのイベントログ、CDNログ、アプリケーションログです。ビデオ閲覧中のフレーム毎に非常に大きたデータが生成されて、様々な視点で計算され分析する必要があります。

screenshot 2013-11-17 23.39.22

Netflixを例に挙げると、3800万人の顧客、50カ国以上に配信、1日あたり1000億以上のメタデータ、1月あたり1000億時間視聴となっています。

screenshot 2013-11-17 23.39.32

そしてこれらのビックデータを、ASAP(As soon as possible)に、使いやすい情報へ加工する必要があります。時系列のデータはバッチ処理、ライブデータはリアルタイム分析です。

screenshot 2013-11-17 23.39.38

コンテンツ発見はバッチ分析で、コンテンツ配信はリアルタイム分析に向いているそうです。

screenshot 2013-11-17 23.39.47

Netflixのチャレンジ

こういった背景から、Netflixはチャレンジを始めました!!(も、もしや、アレですか!?)

screenshot 2013-11-17 23.39.54

そもそも、なぜパーソナライズ化が重要なのでしょうか?実は、75%以上の人がお勧めされた動画を見ているのです。こんなデータがあるなら、パーソナライズ化が収益に繋がることは明らかですね。

screenshot 2013-11-17 23.40.29

メタデータって何でしょうか。ジャンル、キャスト、評価、連絡先、ストリーミングと配備情報、副題、ダビング、トレイラー、スチール、実在の情報などです。

screenshot 2013-11-17 23.40.53

こういった情報をもとに、ユーザー選択、言語、振る舞い、好み、リコメンドアルゴリズム、デバイス最適化、CDN配信、ビルボード、トレイラー、ストリーミング、独自のプログライングなどに活かされています。

screenshot 2013-11-17 23.41.09

メタデータのプラットフォームはこんな感じ。

screenshot 2013-11-17 23.41.24

まず始めにデータを格納する場所がS3で、ここを最適化することから始まります。配信する国によって使うリージョンを分けていたり、データを圧縮してサイズを削ったり、マルチパートで書き込んだり、差分だけ先に書き込んだり。

screenshot 2013-11-17 23.41.56

Kinesis = Kafka + Spark Streaming + Storm + マネージドサービス??

データを取り出して流す部分に、SQSとDynamoDBを使っています。そ、そしてその先にはKinesisキター!

screenshot 2013-11-17 23.42.51

バッチ処理にはRedshiftとEMRを使っています。リアルタイム処理には、SparkとStormを使っています。をいをい、最先端ですw

screenshot 2013-11-17 23.44.00

Stormって何?Hadoopのようなクラスターです。

screenshot 2013-11-17 23.44.22

Sparkって何?クラスター上のデータをリアルタイムに取り出すことができます。とても速いです。

screenshot 2013-11-17 23.45.27

Kinesis = Kafka + Spark Streaming + Storm + マネージドサービス??

screenshot 2013-11-18 1.27.44

さて、話を戻しまして、Kinesisの後ろに置くデータストアとして最適なのはDynamoDBです。しかし、集約や順序に弱いのでEMRを使ってRedshiftに入れています。

screenshot 2013-11-17 23.45.56

screenshot 2013-11-17 23.46.05

全体図

screenshot 2013-11-17 23.46.26

ビックデータに対して、リアルタイム処理とバッチ処理を組み合わせたソリューションが出来上がりました。

まとめ

screenshot 2013-11-17 23.46.43

Netflixがこれらの仕組みによって得られたものは、動的でパーソナライズされた広告、動的なCDNスイッチング、インタラクティブなストリーミング体験、ストリーム品質だそうです。Netflixスゴいです!スゴ過ぎます!今後、日本企業でもこういった取り組みが増えてくると思いますが、まだまだビックデータまでいっていない企業ばかりです。世界の最先端は、リアルタイムにビックデータを扱う方向へと進んでいます。

参考資料

Amazon Kinesis

Netflix

Apache Kafka

Apache Spark

Storm