Netflix ma już 148 milionów subskrybentów. Za jego sukcesem stoi Python
Chyba większość z nas oddała się chilloutowi, kiedy to balansując na brzuchu miskę popcornu lub też lekko czerstwą kanapkę nacisnęliśmy przycisk “Play”, i odcięliśmy się od otaczającej nas rzeczywistośc. Niedawno gigant streamingu ujawnił w jaki sposób zbudował sukces swojej platformy w oparciu o Pythona.
W naszych czasach, znalezienie osoby, która do tej pory nie słyszała o Netfliksie graniczy niemal z cudem. Nic w tym dziwnego — firma ta wybiła się na światowym rynku dzięki bogatej ofercie filmów i seriali dostępnych na ich platformie (tzw. serwis VOD), dziś posiada około 148 milionów subskrybentów. Zanim jednak stał się on jednym z najbardziej dochodowych i popularnych koncernów mediowych na świecie, narodził się w 1998 roku jako pierwsza internetowa wypożyczalnia płyt DVD, która dostarczała je do domów klientów.
Gdy dziesięć lat później Netflix uruchomił swój pierwszy serwis streamingowy, rozpoczęła się nowa era, która wkrótce miała zmienić dotychczasowy wizerunek firmy. Dziś jego przyjazna dla użytkownika infrastruktura, sprawia, że choćby ziemia trzęsła nam się pod nogami ciężko jest się oderwać od ekranu. W dodatku jest jednym z najważniejszych powodów jego ogromnego sukcesu.
Procesy leżące u podłoża efektywności tej infrastruktury są jednak bardziej skomplikowane niż może się to niektórym wydawać. Za procesy te odpowiedzialne są bowiem setki algorytmów, bazy danych, miliony linijek kodu – jednym słowem, jest to niezwykle rozbudowany system. W dużej mierze został napisany w Pythonie, który pozwala inżynierom na szybkie rozwiązywanie narastających problemów. Z tego powodu, Netflix stosuje Pythona na niemalże każdym etapie cyklu życia serwisu.
Spis treści
Jak działa Netflix
Platforma Netfliksa dzieli się głównie na dwa etapy, a mianowicie na to, co ma miejsce przed wciśnięciem startu, i na to, co ma miejsce po. Aby zapewnić jak najlepszą jakość produktu i dostarczyć go w jak najszybszym czasie, oba etapy muszą ze sobą ściśle współpracować.
Za wszystkie procesy mające miejsce przed wciśnięciem startu odpowiedzialny jest Amazon Web Services (tzw. AWS), serwis Amazonu zapewniający Netfliksowi chmurę internetową, na której przechowywać on może wszystkie swoje filmy oraz seriale. Dziś Netflix opiera się na trzech centrach danych AWS, umiejscowionych w Virginii Północnej, Portland, a także Dublinie. Infrastruktura ta pozwala m.in. zmniejszyć prawdopodobieństwo wystąpienia problemów z serwerami — w przypadku, gdyby jeden z nich przestał działać, jego funkcję zwyczajnie przejmie inny serwer AWS.
Ponadto, zastosowanie kilku serwerów AWS pomogło Netfliksowi upewnić się, że użytkownicy spoza Stanów Zjednoczonych będą w stanie cieszyć się oferowanymi przez nich filmami w jak najlepszej jakości i w tym samym czasie, co użytkownicy w USA.
Po wciśnięciu startu przechodzimy do drugiej części Netflixa, gdzie miejsce ma m.in. dopasowywanie formatu filmu do urządzenia, a także jakości obrazu oraz dźwięku do szybkości łącza internetowego.
Przez kilka lat po rozpoczęciu serwisu streamingowego, w dostarczaniu swojego kontentu do użytkowników Netflix korzystał z pomocy zewnętrznej sieci dystrybucji treści (tzw. CDN). Jednakże, wraz z liczbą użytkowników, rósł także koszt użytkowania zewnętrznego CDN-u. Oznaczało to, że, Netflix musiał opracować własny system. Odpowiedzią na ten problem był OpenConnect — sieć dystrybucji treści przechowywanych w różnych miejscach na całym świeci. Była ona nie tylko tańsza, niż zewnętrzny CDN, ale również pozwoliła Netfliksowi na kontrolowanie każdego elementu związanego z dystrybucją filmu, tym samym zwiększając takie czynniki jak jakość dźwięku i obrazu.
Open Connect wykorzystuje dziś setki tysięcy komputerów, rozmieszczonych w miejscach na całym świecie. Każde centrum danych składa się z setek Open Connect Appliances, tj. połączonych ze sobą dysków twardych. Dany film jest zawsze odtwarzany z tego OCA, które znajduje się najbliżej nas, co tłumaczy dlaczego niektóre produkty są dostępne w niektórych lokalizacjach, a w innych nie.
Inżynieria zapotrzebowania
Procesy nadzorowane przez zespół Demand Engineering, który odgrywa ważną rolę w poprawnym funkcjonowaniu chmury Netfliksa, są pierwszym przykładem w jaki sposób Python został zastosowany infrastrukturze Netfliksa. Zespół ten zajmuje się takimi procesami jak decydowanie, który serwer ma przejąć obowiązki w przypadku awarii, podział przepływu kontentu, wydajność tego procesu, a także efektywność tzw. Fleet — wirtualnych serwerów odpowiedzialnych za automatyzację takich zadań, jak aktualizacje i konfiguracje.
Dzięki Pythonowi możliwe jest wykonywanie wielu złożonych działań, jak na przykład analiza numeryczna (za pomocą numpy i scipy), zmiana w infrastrukturze AWS (boto3), asynchroniczny workloads (rq), zarządzanie interfejsem programowania aplikacji (Flask) oraz analizowania danych operacyjnych (Jupyter Notebooks i nteract).
Algorytmy personalizacji
Python umożliwia również Netfliksowi zastosowanie uczenia maszynowego w wielu kluczowych aspektach związanych z jego unikalną, spersonalizowaną ofertą. Takimi aspektami są na przykład algorytmy reklamujące lub polecające klientom nowe produkty w oparciu o ich poprzednie preferencje, kiedy dane pobierane od użytkowników umożliwiają m.in. przewidywanie, który odcinek jakiego serialu zostanie najprawdopodobniej włączony o konkretnej godzinie w danym regionie. Wtedy Netflix wysuwa te propozycje na szczyt listy seriali, od razu ładując nowy odcinek.
Ponadto, Netflix wykorzystał Pythona do opracowania mechanizmu wyświetlania spersonalizowanej szaty graficznej reklamującej ów produkty, która zawiera grafikę mającą największy potencjał przemówić do użytkownika.
Algorytm ten służy również do przewidywania oglądalności oraz namierzania odbiorców, którym dany produkt może najbardziej przypaść do gustu. Dzieje się to za pomocą aplikacji zasilanych Metaflow, które ułatwiają projektom ML przejście z etapu prototypowego do etapu produkcji poprzez wykorzystanie kodu Pythona do zarządzania pamięcią, pobierania danych, a także przetwarzania ich pomiędzy tysiącami rdzeni CPU.
Dodatkowo, Python umożliwia kodowanie katalogu Netfliksa, kontrolowanie jakości wideo za pomocą vmaf oraz mezzfs, a także kreowanie rozpoznawania obrazów za pomocą platformy medialnej MapReduce Archer. Python jest również powszechnie stosowany w przemyśle we wszystkich aplikacjach używanych do tworzenia animacji i VFX.
Platforma eksperymentalna
Netflix nie jest jedynie źródłem rozrywki – służy również jako platforma pozwalająca projektantom oraz inżynierom na przeprowadzanie różnych eksperymentów, które mogłyby potencjalnie ulepszyć ofertę Netflixa. The Metrics Repo od Netfliksa, framework oparty o PyPika, pozwala na tworzenie sparametryzowanych zapytań SQL wielokrotnego użytku, które potem służą jako punkt wyjściowy do wszelkich nowych analiz. Dzięki The Causal Models statystyki mogą zostać przeprowadzone w jakimkolwiek języku programowania, a The Visualizations library, oparta o Plotly posiada narzędzia pozwalające na produkcję wyników, które mogą być używane przez inne platformy.
Ochrona danych
Stworzenie platformy w oparciu o Pythona pozwoliło Netflixowi również, gdyż pozwala on na automatyzację procesów odpowiedzialnych np. za ograniczenie dostępu, klasyfikację ryzyka, ochronę źródeł SSH za pomocą Bless, generowanie certyfikatów TLS z użyciem Lemur, a także identyfikowanie wrażliwych informacji oraz potencjalnych zagrożeń dzięki Lanius i Prism.
Podsumowując, Python jest odpowiedzialny za wiele kluczowych procesów, którym Netflix zawdzięcza swoją popularność. Przykładem jest personalizacja ich oferty, oparta o algorytm przetwarzający dane o ich poprzednich wyborach, by zasugerować nowe produkty nie tylko według określonej kolejności, ale również za pomocą szaty graficznej. Ponadto, Python odgrywa istotną rolę w kwestiach bezpieczeństwa danych, a także dla poprawnego funkcjonowania niezwykle rozbudowanej Chmury Netfliksa, bez której serwis nie byłby w stanie operować na tak wielką skalę, jak dzisiaj.
Źródło: medium.com. Autorką artykułu jest Zuzanna Filipiuk.