[レポート]Netflixエンジニアの日常 #NFX202 #reinvent

2019.12.04

オペレーション部 江口です。

本稿はRe:inventで行われたセッション「NFX202: A Day In The Life Of A Netflix Engineer」のレポートです。 タイトルからはどんな内容なのかいまいちピンと来ないかもしれませんが、Netflixがどんな取り組みをしているかを紹介する非常に興味深い内容でした。

概要

Netflix is a large, ever-changing ecosystem serving millions of customers across the globe through cloud-based systems and a globally distributed CDN. This entertaining romp through the tech stack serves as an introduction to how we think about and design systems, the Netflix approach to operational challenges, and how other organizations can apply our thought processes and technologies. In this session, we discuss the technologies used to run a global streaming company, growing at scale, billions of metrics, benefits of chaos in production, and how culture affects your velocity and uptime.
Netflixは巨大で、変化し続けるエコシステムを、グローバルに数百万人のカスタマーに対して、クラウドベースのシステムとグローバルに分散されたCDNを通じて提供しています。

テクノロジースタックを介したこの楽しい楽章は、システムの考え方と設計、運用上の課題に対するNetflixのアプローチ、および他の組織が思考プロセスとテクノロジーをどのように適用できるかの手引きです。 このセッションでは、大規模に成長するグローバルストリーミング企業の運営に使用されるテクノロジー、数十億のメトリクス、生産におけるカオスの利点、文化が速度と稼働時間に与える影響について説明します。

セッション情報:https://www.portal.reinvent.awsevents.com/connect/sessionDetail.ww?SESSION_ID=99037&csrftkn=44GI-FWQZ-QXA4-HU0A-N6E3-ANCO-IT07-OV0X

スピーカー;David Hahn氏(Netflix SRE Manager)

内容

  • Netflixのアーキテクチャには、大きく2つの技術が使われている。一つはAWS。もう一つはNetflix Open Connect CDN。

AWS内のアーキテクチャ

  • AWSでは3つのリージョンを利用していて、すべてのデータベースは複製され、キャッシュ、サービスなどカスタマーに対して必要なものはすべて常に提供できるようにしている。

  • AWS内のアーキテクチャは以下のスライドの通り。

  • フロントにELBを配置
  • その後ろに「Zuul」というインテリジェントプロキシゲートウェイを配置
  • その後、コンテナ管理ツールである「Titus」に管理されたマイクロサービスのコンテナ群が配置されている。これらはEC2とRDSを利用して構成されている。
  • さらにその後ろには、オンライン処理やアルゴリズムを動かすいくつかの バックエンドサービスが配置されている

ELB

  • ELBはすべてのリクエストのフロントドア
  • 数百のELBが稼働しており、常に数百万RPS(Request Per Second)のアクセスを受けている

Zuul

  • L7のインテリジェントプロキシ
  • ELB同様数百万RPSを受け取る
  • Web socketを含む8000万のコネクション、5万メッセージを問題なく処理可能
  • Zuulはリトライが必要そうな異常な自体が発生した場合、自動的にリトライを実施してクライアント側でのタイムアウトを防ぐことができる。
  • また、クロスリージョンに対応しており、あるリージョンで処理に問題が発生した場合に別のリージョンに処理を即座に移すことが可能

Titus

  • コンテナオーケストレーション管理システム
  • 300万のコンテナの管理が可能
  • フロントエンドの処理、バックエンドのバッチ処理など、様々なワークについてきちんと動作を保証できるよう管理する
  • コンテナは概ね10秒以内に起動する

OpenConnect

  • NetFlixがオンプレで動かしているCDN
  • 最適化されたハードウェアを用意し構築している
  • アプライアンスはFreeBSDとNginxで構成、100Gbpsのネットワークに対応
  • 世界中のInternet ExchangeInternet Exchangeにこのアプライアンスを配置し、もっとも近い場所から配信できるようにしている
  • データの更新を行う際、ISPやその他の通信に負荷をかけないよう、自社でグローバルなバックボーンを引いている
  • 詳細はOpenConnectのWebサイト(https://openconnect.netflix.com/)を確認してほしい

その他のNetflixの取り組み

Imagery(画像)の最適化

  • 例えばスライドを読んで、脳が処理を行なって、あなたが内容を理解するまで、どれくらい時間がかかるか?だいたい100ms程度。
  • だが最近のMITの研究によると、人が画像を理解し判断する場合、人によっては13msほどで処理できるという(注:この研究と思われます:http://news.mit.edu/2014/in-the-blink-of-an-eye-0116)
  • このため画像の最適化は非常に重要
  • かつてはNetflixは作品の画像としてDVDなどのジャケットをそのまま利用していた。しかし現在は、作品ごとにもっとユーザに訴えかける画像を検討し作成している
  • デザイナーが作成したいくつかの候補に対して、これまでのNetflixの過去のデータを学習したモデルによって最適な画像を導き出す  - 複数のアルゴリズムを用いて評価する  - A/Bテストは結果を導くまで時間を要するため、この手法を採用している

感想

さすがNetflix、というべきスケールの大きい話が聞けました。インフラから作品の画像の話まで、話の振れ幅が広いのも印象的でした。Imageryについての話は正直だいぶ端折っているのですが、作品の画像をどのように最適化するか、という点についてNetflixが非常に力を入れているということが伝わってきて、Netflixの成功の要因の一端を見た気がしました。動画で公開されたら、興味ある方はぜひ見てみると良いと思います。