Rozmowa o projektowaniu systemów: Zaprojektuj Netflix

„Zaprojektuj Netflix" to problem zdominowany przez odczyt, zarządzany przez jeden fakt: serwowanie wideo na globalną skalę jest w znacznie większym stopniu problemem dystrybucji treści i przechowywania niż problemem obliczeniowym. Rekruter chce zobaczyć, jak oddzielasz warstwę kontrolną (przeglądanie, wyszukiwanie, rekomendacje) od warstwy danych (faktyczne strumieniowanie bajtów) i rozumujesz o dostarczaniu petabajtów blisko użytkowników.

Pracuj w porządku: wyjaśnij wymagania, oszacuj skalę, zaprojektuj pipeline uploadu/transkodowania, następnie ścieżkę odtwarzania przez CDN, a zakończ adaptacyjnym bitrate'em i kompromisami. Poniższy przewodnik trzyma się tej struktury, byś ćwiczył rozumowanie, a nie zapamiętywał architekturę.

1. Wyjaśnienie wymagań

Oddziel funkcjonalne od niefunkcjonalnych i precyzyjnie ustal zakres. Jądrem jest: użytkownicy przeglądają katalog i płynnie odtwarzają wideo na różnych urządzeniach i w różnych warunkach sieciowych.

  • Funkcjonalne: przeglądanie/wyszukiwanie katalogu, rozpoczęcie odtwarzania, adaptacyjna jakość, kontynuacja od miejsca przerwania, wiele urządzeń.
  • Niefunkcjonalne: bardzo wysoka dostępność, niskie opóźnienie startu, płynne odtwarzanie (bez buforowania), globalny zasięg.
  • Poza zakresem (powiedz to wprost): wewnętrzne szczegóły ML rekomendacji, rozliczenia, szczegóły DRM — wspomnij o nich, a potem odłóż na później.

2. Oszacowanie skali

Liczby uzasadniają projekt stawiający CDN na pierwszym miejscu. Przyjmijmy setki milionów subskrybentów i wiele milionów równoczesnych strumieni w szczycie. Pojedynczy strumień zużywa kilka Mb/s, więc łączne wyjście sięga dziesiątek terabitów na sekundę — niemożliwe do obsłużenia z kilku centralnych centrów danych, co od razu motywuje cachowanie na brzegu sieci.

3. Pipeline pozyskiwania i transkodowania

Przesłane mastery są przetwarzane offline, a nie na ścieżce odtwarzania. Każdy tytuł jest transkodowany do wielu renderów (rendition) — kilku rozdzielczości i bitrate'ów — i segmentowany na małe fragmenty (po kilka sekund każdy) dla strumieniowania adaptacyjnego.

  • Farma transkodowania: konwertuje master na rendery H.264/H.265/AV1 przy kilku bitrate'ach; to praca wsadowa, którą łatwo zrównoleglić.
  • Segmentacja i pakowanie: dzieli każdy render na krótkie segmenty wraz z manifestem (HLS/DASH), który je opisuje.
  • Zapisuje wyniki w magazynie obiektów (typu S3) jako źródło prawdy, a następnie przesyła popularną treść na brzeg sieci.

4. CDN i ścieżka odtwarzania

Odtwarzanie jest obsługiwane z brzegu sieci, nie z origin. Segmenty wideo są cache'owane na węzłach CDN fizycznie bliskich użytkownikom (Netflix prowadzi własne urządzenia Open Connect wewnątrz dostawców internetu). Klient pobiera manifest, a potem ściąga segmenty z najbliższego zdrowego węzła brzegowego.

Warstwa kontrolna (katalog, wyszukiwanie, profile użytkowników, „kontynuuj oglądanie") to odrębny zestaw bezstanowych usług API wspartych własnymi bazami danych i cache'ami — zwraca metadane i URL manifestu, i jest całkowicie oddzielona od ciężkiego dostarczania bajtów.

  • Cache brzegowy (CDN/Open Connect): obsługuje ogromną większość bajtów; wstępnie umieszcza popularne tytuły według regionu, zanim pojawi się popyt.
  • Magazyn origin: magazyn obiektów wspierający cache miss.
  • API warstwy kontrolnej: katalog, autoryzacja odtwarzania, zakładki — małe payloady, skalowane horyzontalnie, z cache z przodu.

5. Strumieniowanie z adaptacyjnym bitrate'em

Płynne odtwarzanie przy zmiennych sieciach pochodzi od klienta, nie od serwera. Odtwarzacz monitoruje przepustowość i poziom bufora, i przełącza jakość segmentu w górę lub w dół między segmentami, korzystając z listy renderów w manifeście — wyższy bitrate na szybkich połączeniach, niższy, aby uniknąć buforowania na wolnych.

6. Kompromisy, które warto wypowiedzieć

Zakończ napięciami, które słyszy rekruter: koszt przechowywania wszystkich prekalkulowanych renderów kontra opóźnienie transkodowania na żywo (Netflix prekalkuluje — przechowywanie jest tańsze niż opóźnienie startu); cache'owanie wszystkiego kontra cache'owanie popularnej treści na brzegu (katalog z długim ogonem nie może w pełni mieścić się na każdym brzegu); oraz silna spójność kontra ostateczna dla danych warstwy kontrolnej, takich jak „kontynuuj oglądanie" (ostateczna jest w porządku). Nazwanie tego to różnica, która czyni odpowiedź dojrzałą.

Poćwicz projektowanie systemu Netflix z pomocą w czasie rzeczywistym

Asystent rozmów o projektowaniu systemów od Natively może utrzymać cię w uporządkowanej strukturze podczas rozmowy na żywo — proponując następny wymiar do omówienia i pokazując kompromisy w czasie rzeczywistym, wszystko na twoim własnym urządzeniu.

Put it on your own machine.

A live-conversation assistant that runs locally. Nothing leaves your machine.

macOS 12+ · Windows 10/11

© 2026 Natively AI Private Limited

Source-available under the Natively Personal Use Source License v1.0 · IP geolocation by DB-IP