Podręcznik skalowania Netflix: chmura, CDN i mikroserwisy
Za każdym razem, gdy klikniesz „Play” w Netflix, uruchamiasz rozproszone zdarzenie obliczeniowe obejmujące kontynenty, centra danych i tysiące mikroserwisów. Aby zapewnić nieprzerwane strumieniowanie dla ponad 270 milionów subskrybentów na całym świecie, firma musiała fundamentalnie przemyśleć, w jaki sposób treści są kodowane, dostarczane i zarządzane na dużą skalę. W tym artykule przyjrzymy się jak Netflix skaluje swoją infrastrukturę strumieniową za pomocą trójskładnikowej strategii: chmurowej płaszczyzny sterowania dla elastyczności, ogromnego własnego CDN o nazwie Open Connect dla wydajnego dostarczania oraz architektury mikroserwisów opartej na zasadzie odporności na awarie. Rozumiejąc te warstwy, zobaczysz, jak firma konsekwentnie osiąga opóźnienia poniżej 100 milisekund i minimalizuje buforowanie dla miliardów codziennych żądań.
Czego się nauczysz
Pod koniec tego artykułu zrozumiesz decyzje architektoniczne stojące za globalną infrastrukturą strumieniową Netflix. Dowiesz się, jak firma oddziela swój „mózg” (płaszczyzna sterowania) od „mięśni” (płaszczyzna danych), jak zoptymalizowała własne CDN, aby zaoszczędzić miliardy, i dlaczego traktuje awarie jako stan normalny. Otrzymasz jasny model mentalny tego, jak chmura obliczeniowa, własny sprzęt i chaos engineering łączą się, aby skalować jedną z największych usług internetowych na świecie.
Dwulicowa architektura: płaszczyzna sterowania i płaszczyzna danych
Aby skutecznie skalować, Netflix podzielił swoją architekturę na dwie oddzielne warstwy: płaszczyznę sterowania i płaszczyznę danych. Ten podział jest kamieniem węgielnym tego, jak Netflix skaluje swoją infrastrukturę strumieniową, pozwalając każdej stronie na niezależną optymalizację pod kątem konkretnego obciążenia.
Płaszczyzna sterowania (AWS): Mózg
Wszystko, co robisz przed kliknięciem „Play”, jest obsługiwane przez płaszczyznę sterowania działającą na AWS. Obejmuje to przeglądanie, wyszukiwanie, silnik rekomendacji, uwierzytelnianie użytkowników, rozliczenia i zarządzanie kontami. Ta warstwa składa się z tysięcy mikroserwisów Java obsługujących miliardy żądań dziennie. Ponieważ ten ruch jest nieprzewidywalny i związany z interakcją użytkownika, idealnie nadaje się do elastyczności chmury. Netflix używa AWS do dynamicznego skalowania tych usług, szczególnie podczas dużych premier treści, gdy popyt użytkowników gwałtownie rośnie.
Płaszczyzna danych: Open Connect
Gdy klikniesz „Play”, w grę wchodzi płaszczyzna danych. W przeciwieństwie do płaszczyzny sterowania, która opiera się na publicznej chmurze, płaszczyzna danych działa głównie na Open Connect – własnym globalnym CDN Netflix. Jest to prawdopodobnie najważniejszy komponent tego, jak Netflix skaluje swoją infrastrukturę strumieniową do dostarczania petabajtów danych dziennie. Netflix zainwestował ponad 1 miliard dolarów w ostatniej dekadzie w budowę tej sieci, co czyni go jedynym dużym serwisem streamingowym zarządzającym własnym globalnym CDN.
Open Connect: wewnątrz miliardowego CDN Netflix
Open Connect to magia, która pozwala Netflix transmitować wideo w 4K do 165+ krajów, przy czym ponad 95% ruchu jest dostarczane z opóźnieniem poniżej 100 ms. Zamiast płacić zewnętrznym CDN za stale rosnącą przepustowość, Netflix przejął kontrolę nad swoim przeznaczeniem.
Urządzenie Open Connect (OCA)
Netflix umieszcza fizyczne serwery, zwane Open Connect Appliances (OCA), bezpośrednio u dostawców usług internetowych (ISP) i w ponad 6000 punktach brzegowych na całym świecie. Buforując popularne treści blisko użytkownika, Netflix skraca dystans, jaki muszą pokonać dane, i znacznie obniża koszty przepustowości zarówno dla Netflix, jak i ISP. Serwery te są przeznaczone nie tylko do treści na żądanie; zostały rozszerzone, aby obsługiwać transmisje na żywo, dzieląc pojemność między różne przypadki użycia.
Optymalizacja dostaw i wydajność
W przypadku transmisji na żywo Netflix wprowadził znaczące ulepszenia w Open Connect, aby radzić sobie z charakterem treści w czasie rzeczywistym. Serwer Live Origin, niestandardowy mikroserwis, znajduje się między chmurowym potokiem kodowania a Open Connect. Wykorzystuje technikę „hold-open” żądania: gdy klient żąda segmentu, który nie został jeszcze opublikowany, serwer utrzymuje żądanie otwarte, aż segment będzie gotowy, zmniejszając „gadaninę” ciągłych błędów 404. Ponadto, aby obsłużyć nieprzewidywalność kodowania ze zmienną przepływnością (VBR), Netflix zmienił logikę dystrybucji ruchu. Zamiast routingu opartego na bieżącym ruchu (który spada podczas prostych scen), rezerwuje pojemność na podstawie nominalnej przepływności każdego strumienia, aby zapobiec przeciążeniu serwera podczas złożonych scen o wysokiej przepływności.
Mądrzejsze kodowanie dla wydajności
Jedną z najnowszych innowacji Netflix jest przejście ze stałej przepływności (CBR) na zmienną przepływność (VBR) dla transmisji na żywo. Przy CBR klatka z rozmową i scena akcji zużywają tę samą przepływność, marnując dane na proste sceny i ryzykując jakość przy złożonych. VBR rozdziela bity w zależności od złożoności sceny. Netflix wdrożył VBR dla wszystkich transmisji na żywo na początku 2026 roku, co doprowadziło do zmniejszenia przesłanych bajtów średnio o 15% i redukcji ruchu w szczycie minuty o 10%, jednocześnie zmniejszając liczbę ponownych buforowań o 5%.
Mikroserwisy i odporność na awarie: projektowanie z myślą o awariach
Netflix obsługuje tysiące niezależnych mikroserwisów, głównie napisanych w Javie. Ta architektura pozwala zespołom wdrażać usługi niezależnie i skalować je w zależności od zapotrzebowania. Jednak przy tysiącach ruchomych części awarie są nieuniknione. Netflix nie tylko to akceptuje; projektuje systemy z myślą o awariach.
Filozofia chaos engineering
Netflix wynalazł słynnego Chaos Monkey – narzędzie, które losowo wyłącza serwery w środowisku produkcyjnym. To zmusza inżynierów do budowania systemów odpornych na nagłe awarie. Ta praktyka rozciąga się również na potok transmisji na żywo, gdzie automatyczne testy z wprowadzaniem awarii symulują brakujące segmenty, utratę regionu chmury lub awarię sieci, aby upewnić się, że systemy poradzą sobie w najgorszym scenariuszu.
Inteligentne zrzucanie obciążenia
Gdy skoki ruchu przekraczają pojemność, automatyczne skalowanie często reaguje zbyt wolno. Aby rozwiązać ten problem, Netflix opracował Service-Level Prioritized Load Shedding. Zamiast zrzucać wszystkie żądania jednakowo, system priorytetyzuje krytyczne działania użytkownika.
⚠️ Kluczowa myśl: Podczas przeciążenia Netflix zrzuca niskopriorytetowe żądania (np. wstępne ładowanie), aby zachować swój „Success Buffer” dla wysokopriorytetowych żądań (np. inicjowanego przez użytkownika odtwarzania). To gwarantuje, że podstawowe doświadczenie oglądania pozostaje nienaruszone nawet przy ekstremalnym obciążeniu.
Warstwa operacji na żywo: ludzka infrastruktura
Skalowanie technologii to tylko część równania. Skalowanie operacji, aby je wykonać, jest równie ważne. W przypadku transmisji na żywo Netflix stworzył dedykowaną ludzką infrastrukturę odpowiadającą jego technicznej. Proces ewoluował od monitorowania pulpitów przez inżynierów oprogramowania na laptopach do złożonego modelu „Centrum kontroli transmisji” (TOC). Aby zarządzać do 10 jednoczesnymi transmisjami na żywo, role zostały podzielone na wyspecjalizowanych operatorów:
- Operatorzy kontroli transmisji (TCO): Zarządzają przychodzącymi sygnałami z miejsc wydarzeń.
- Operatorzy kontroli streamingu (SCO): Monitorują wychodzące strumienie.
- Operatorzy kontroli emisji (BCO): Skupiają się na kreatywnej i jakościowej realizacji wydarzenia.
Ten model „floty” pozwala Netflix transmitować ponad 400 globalnych wydarzeń rocznie bez potrzeby ogromnego stosunku operatorów do wydarzeń 1:1, zachowując jednocześnie model „Dużej stawki” dla ważnych wydarzeń, gdzie całe centrum kontroli jest poświęcone jednemu programowi.
Często zadawane pytania
Jak Netflix radzi sobie z nagłymi skokami ruchu bez awarii? Netflix używa kombinacji predykcyjnej wstępnej rezerwacji dla oczekiwanego popytu (np. premiera nowego sezonu) i mechanizmów reaktywnych. Jego główną obroną podczas nieplanowanych skoków jest Service-Level Prioritized Load Shedding, który zrzuca niskopriorytetowe zadania w tle, aby zachować pojemność dla krytycznych żądań odtwarzania, zapewniając płynną degradację systemu, a nie całkowitą awarię.
Czym jest Open Connect i dlaczego Netflix zbudował własne CDN? Open Connect to własne globalne CDN Netflix. Składa się z tysięcy fizycznych serwerów umieszczonych bezpośrednio u ISP i w punktach brzegowych. Kontrolując stos sprzętu i oprogramowania, Netflix zmniejsza opóźnienia dla użytkowników, oszczędza miliardy na przepustowości i może optymalizować dostarczanie specjalnie dla swoich protokołów strumieniowych.
Jak Netflix zapewnia stabilną jakość wideo na różnych urządzeniach? Netflix używa adaptacyjnego strumieniowania ze zmienną przepływnością i drabiny przepływności. Każde wideo jest kodowane w setki wariantów o różnej rozdzielczości i przepływności (SD, HD, 4K). Odtwarzacz Netflix na twoim urządzeniu w czasie rzeczywistym monitoruje stan sieci i automatycznie przełącza się na odpowiedni wariant, aby zminimalizować buforowanie i zmaksymalizować jakość.
Jak Netflix transmituje na żywo wydarzenia takie jak WWE czy mecze piłki nożnej? Netflix zbudował własny chmurowy potok, używając AWS Elemental MediaLive do odbioru sygnałów z centrów nadawczych, własnego serwera „Live Origin” do zarządzania publikacją segmentów i Open Connect do globalnej dystrybucji strumienia. Dedykowane Centrum kontroli transmisji na żywo (LCC) w czasie rzeczywistym monitoruje cały potok, przetwarzając do 38 milionów zdarzeń na sekundę w celu natychmiastowego wykrywania i rozwiązywania problemów.
Jak Netflix używa chaos engineering do utrzymania stabilności platformy? Netflix używa narzędzi takich jak Chaos Monkey do losowego wyłączania serwerów lub wprowadzania awarii (np. opóźnień sieciowych lub uszkodzonych segmentów) w środowisku produkcyjnym. To proaktywne podejście gwarantuje, że inżynierowie budują systemy zdolne do automatycznego odzyskiwania po awariach, zapobiegając przekształceniu się małego problemu w masową awarię.
Źródła
- Blog technologiczny Netflix: Smarter Live Streaming at Scale: Rolling Out VBR for All Netflix Live Events
- Blog technologiczny Netflix: The Human Infrastructure: How Netflix Built the Operations Layer Behind Live at Scale
- InfoQ: From On-Demand to Live: Netflix Streaming to 100 Million Devices in under 1 Minute
- Codemotion: How Netflix Scales to 270 Million Users with Java and Microservices
- Blog technologiczny Netflix: Netflix Live Origin
- Blog technologiczny Netflix: Introducing Netflix's Key-Value Data Abstraction Layer
- InfoQ: Enhancing Reliability Using Service-Level Prioritized Load Shedding at QCon SF 2025
- Blog technologiczny Netflix: Behind the Streams: Three Years Of Live at Netflix. Part 1
— Editorial Team
Brak komentarzy.