システム設計面接:Netflixを設計する

「Netflixを設計せよ」は読み取り主体の問題で、ある一つの事実に支配されています。それは、世界規模で動画を配信することは計算の問題よりもはるかにコンテンツ配信と保存の問題だということです。面接官は、閲覧・検索・推薦といったコントロールプレーンと、実際にバイトをストリーミングするデータプレーンを分けて考え、ペタバイト規模のデータをユーザーの近くに届ける方法について推論する様子を見たいのです。

順序立てて進めましょう:要件を明確にし、規模を見積もり、アップロード/トランスコーディングのパイプラインを設計し、次にCDNを通じた再生経路を設計し、最後にアダプティブビットレートとトレードオフで締めます。以下のウォークスルーはこの構成に従っているので、アーキテクチャを記憶するのではなく、推論そのものを練習できます。

1. 要件を明確にする

機能要件と非機能要件を分け、範囲を厳密に定めます。中心となるのは:ユーザーがカタログを閲覧し、デバイスやネットワーク状況が異なってもスムーズに動画をストリーミングできることです。

  • 機能要件:カタログの閲覧/検索、再生開始、アダプティブな品質調整、続きから再生、複数デバイス対応。
  • 非機能要件:非常に高い可用性、低い起動レイテンシ、スムーズな再生(リバッファリングなし)、グローバルな展開範囲。
  • 範囲外(そう明言する):レコメンドMLの内部実装、課金、DRMの詳細 — 言及した上で後回しにする。

2. 規模を見積もる

数字がCDNファーストの設計を正当化します。数億人の加入者と、ピーク時に数百万の同時ストリームがあると仮定します。1本のストリームは数Mbpsを消費するため、合計の送出量は数十テラビット/秒に達し、少数の中央データセンターから配信することは不可能です。これがエッジキャッシュを即座に正当化する理由です。

3. 取り込みとトランスコーディングのパイプライン

アップロードされたマスターはオフラインで処理され、再生経路上では処理されません。各タイトルは多数のレンディション(複数の解像度とビットレート)にトランスコードされ、アダプティブストリーミング用に数秒単位の小さなセグメントに分割されます。

  • トランスコーディングファーム:マスターを複数のビットレートでH.264/H.265/AV1のレンディションに変換する。これは並列化しやすいバッチ処理である。
  • セグメンテーションとパッケージング:各レンディションを短いセグメントに分割し、それらを記述するマニフェスト(HLS/DASH)を生成する。
  • 出力を正本としてオブジェクトストレージ(S3のようなもの)に保存し、その後人気のコンテンツをエッジにプッシュする。

4. CDNと再生経路

再生はオリジンではなくエッジから提供されます。動画セグメントは物理的にユーザーに近いCDNノードにキャッシュされます(Netflyは自社のOpen ConnectアプライアンスをISP内部に展開しています)。クライアントはマニフェストを取得し、最も近い正常なエッジノードからセグメントを取得します。

コントロールプレーン(カタログ、検索、ユーザープロフィール、「視聴を続ける」)は、独立したステートレスなAPIサービス群であり、それぞれ独自のデータベースとキャッシュを持ちます。メタデータとマニフェストのURLを返すだけで、重いバイト配信からは完全に分離されています。

  • エッジキャッシュ(CDN/Open Connect):バイトの大部分を配信する。需要が発生する前に、人気タイトルを地域ごとに事前配置する。
  • オリジンストレージ:キャッシュミスを支えるオブジェクトストア。
  • コントロールプレーンAPI:カタログ、再生認可、ブックマーク — 小さなペイロードで水平スケールされ、キャッシュが前段に置かれる。

5. アダプティブビットレートストリーミング

可変的なネットワーク下でのスムーズな再生は、サーバーではなくクライアント側から生まれます。プレーヤーはスループットとバッファレベルを監視し、マニフェストのレンディションリストを使ってセグメントごとに品質を上げ下げします。高速な接続では高いビットレートに、低速な接続ではリバッファリングを避けるために低いビットレートに切り替えます。

6. 言葉にすべきトレードオフ

面接官が聞きたい緊張関係を名指しして締めます:すべてのレンディションを事前計算する保存コスト 対 その場でのトランスコーディングによる遅延(Netflixは事前計算を選ぶ — 保存コストの方が起動遅延より安い)、すべてをキャッシュする 対 エッジで人気のものだけをキャッシュする(ロングテールのカタログをすべてのエッジに置くことはできない)、そして「視聴を続ける」のようなコントロールプレーンデータにおける強い一貫性 対 結果整合性(結果整合性で十分)。これらを名指しすることが、回答をシニアレベルにする要素です。

リアルタイムサポートでNetflixのシステム設計を練習する

Nativelyのシステム設計面接アシスタントは、ライブの面接中にあなたを構造立てて支え、次に扱うべき観点を提案し、トレードオフをリアルタイムで表示します。すべて自分のデバイス上で完結します。

ご自身のパソコンにインストール。

ローカルで動作するライブ会話アシスタント。データは外部に送信されません。

macOS 12+ · Windows 10/11

© 2026 Natively AI Private Limited

Natively Personal Use Source License v1.0 のもとでソースを公開 · IPジオロケーション提供: DB-IP