System-Design-Interview: Entwerfe Netflix
„Entwerfe Netflix" ist ein leselastiges Problem, das von einer Tatsache dominiert wird: Video global auszuliefern ist weit mehr ein Content-Delivery- und Speicherproblem als ein Rechenproblem. Der Interviewer will sehen, wie du die Steuerungsebene (Durchsuchen, Suche, Empfehlungen) von der Datenebene (das tatsächliche Streamen der Bytes) trennst und darüber nachdenkst, Petabytes nahe an den Nutzern auszuliefern.
Arbeite es in Reihenfolge durch: Anforderungen klären, Skalierung abschätzen, die Upload-/Transcoding-Pipeline entwerfen, dann den Wiedergabepfad über ein CDN, und abschließend adaptive Bitrate und Trade-offs. Der folgende Leitfaden folgt dieser Struktur, damit du das Argumentieren übst, nicht eine Architektur memorierst.
1. Anforderungen klären
Trenne Funktionales von Nicht-Funktionalem und grenze eng ein. Der Kern ist: Nutzer durchsuchen einen Katalog und streamen Video reibungslos über verschiedene Geräte und Netzwerkbedingungen.
- Funktional: Katalog durchsuchen/durchsuchen, Wiedergabe starten, adaptive Qualität, dort weitermachen, wo man aufgehört hat, mehrere Geräte.
- Nicht-funktional: sehr hohe Verfügbarkeit, niedrige Startlatenz, flüssige Wiedergabe (kein Rebuffering), globale Reichweite.
- Außerhalb des Umfangs (das offen sagen): die internen Details des Empfehlungs-ML, Abrechnung, DRM-Details — erwähnen und zurückstellen.
2. Skalierung abschätzen
Die Zahlen rechtfertigen das CDN-first-Design. Angenommen Hunderte von Millionen Abonnenten und viele Millionen gleichzeitige Streams zur Spitzenzeit. Ein einzelner Stream verbraucht mehrere Mbps, sodass der aggregierte Egress zig Terabit pro Sekunde beträgt — unmöglich, von wenigen zentralen Rechenzentren aus zu bedienen, was sofort das Edge-Caching motiviert.
3. Ingestion- und Transcoding-Pipeline
Hochgeladene Master werden offline verarbeitet, nicht im Wiedergabepfad. Jeder Titel wird in viele Renditions transcodiert — mehrere Auflösungen und Bitraten — und in kleine Chunks (wenige Sekunden jeweils) für adaptives Streaming segmentiert.
- Transcoding-Farm: wandelt den Master in H.264/H.265/AV1-Renditions bei mehreren Bitraten um; das ist embarrassingly parallele Batch-Arbeit.
- Segmentierung und Verpackung: teilt jede Rendition in kurze Segmente mit einem Manifest (HLS/DASH) auf, das sie beschreibt.
- Speichert die Ausgaben in Objektspeicher (S3-artig) als Quelle der Wahrheit und pusht dann populäre Inhalte an den Edge.
4. CDN und der Wiedergabepfad
Die Wiedergabe wird vom Edge, nicht vom Origin, bedient. Videosegmente werden auf CDN-Knoten in physischer Nähe zu den Nutzern zwischengespeichert (Netflix betreibt seine eigenen Open-Connect-Appliances innerhalb von ISPs). Der Client holt das Manifest ab und zieht dann Segmente vom nächsten gesunden Edge-Knoten.
Die Steuerungsebene (Katalog, Suche, Nutzerprofile, „weiterschauen") ist ein separater Satz zustandsloser API-Dienste, die von ihren eigenen Datenbanken und Caches gestützt werden — sie liefert Metadaten und eine Manifest-URL zurück und ist vollständig von der schweren Byte-Auslieferung entkoppelt.
- Edge-Cache (CDN/Open Connect): liefert den Großteil der Bytes aus; positioniert populäre Titel nach Region vorab, bevor Nachfrage entsteht.
- Origin-Speicher: Objektspeicher, der Cache-Misses bedient.
- Steuerungsebene-APIs: Katalog, Wiedergabeautorisierung, Lesezeichen — kleine Payloads, horizontal skaliert, cache-vorgeschaltet.
5. Adaptive Bitrate-Streaming
Flüssige Wiedergabe unter variablen Netzwerken kommt vom Client, nicht vom Server. Der Player überwacht Durchsatz und Pufferstand und wechselt die Segmentqualität zwischen Segmenten mit Hilfe der Renditions-Liste des Manifests hoch oder runter — höhere Bitrate bei schnellen Verbindungen, niedrigere, um Rebuffering bei langsamen zu vermeiden.
6. Trade-offs, die man ansprechen sollte
Schließe mit den Spannungen, auf die ein Interviewer hört: Speicherkosten durch das Vorausberechnen aller Renditions vs. Latenz durch On-the-fly-Transcoding (Netflix berechnet vorab — Speicher ist billiger als Startverzögerung); alles cachen vs. nur Populäres am Edge cachen (ein Long-Tail-Katalog kann nicht komplett an jedem Edge liegen); und starke vs. eventuelle Konsistenz für Steuerungsebene-Daten wie „weiterschauen" (eventuell ist in Ordnung). Das zu benennen, macht die Antwort senior.
Übe Netflix' Systemdesign mit Echtzeit-Hilfe
Der System-Design-Interview-Assistent von Natively kann dich während einer Live-Runde strukturiert halten — er schlägt die nächste zu behandelnde Dimension vor und zeigt Trade-offs in Echtzeit, alles auf deinem eigenen Gerät.
