Wie Netflix Python verwendet



Da sich viele von uns auf die PyCon-Konferenz vorbereiten, wollten wir ein wenig darüber sprechen, wie Python in Netflix verwendet wird. Wir verwenden Python während des gesamten Lebenszyklus: von der Entscheidung, welche Serie finanziert werden soll, bis hin zur Arbeit von CDN, um Videos an 148 Millionen Benutzer zu liefern. Wir tragen zu vielen Open-Source-Python-Paketen bei, von denen einige unten aufgeführt sind. Wenn Sie etwas interessiert, schauen Sie sich unsere Stellenangebote an oder suchen Sie uns auf PyCon.

Öffnen Sie connect


Open Connect ist das Netflix Content Delivery Network (CDN). Eine einfache, wenn auch ungenaue Möglichkeit, die Netflix-Infrastruktur darzustellen, ist folgende: Alles, was passiert, bevor Sie die Wiedergabetaste auf der Fernbedienung drücken (z. B. Anmelden, Festlegen eines Tarifplans, Empfehlungssystem, Auswählen von Filmen), funktioniert in Amazon Web Services (AWS). und alles, was danach passiert (d. h. Video-Streaming), funktioniert über Open Connect. Der Inhalt wird im Open Connect CDN-Servernetzwerk so nah wie möglich am Endbenutzer gehostet, um die Anzeigequalität für Kunden zu verbessern und die Kosten für Netflix und unsere Partner, Internetanbieter, zu senken.

Zum Entwerfen, Entwickeln und Betreiben von CDNs werden verschiedene Softwaresysteme benötigt, von denen viele in Python geschrieben sind. CDN-basierte Netzwerkgeräte werden hauptsächlich von Python-Anwendungen gesteuert. Solche Anwendungen überwachen den Status von Netzwerkgeräten: Welche Geräte werden verwendet, welche Modelle, mit welchen Hardwarekomponenten, wo sie sich befinden. Die Konfiguration dieser Geräte wird von mehreren anderen Systemen gesteuert, einschließlich der "Quelle der Wahrheit", Gerätekonfigurationsanwendungen und Sicherungen. Die Interaktion von Geräten zum Sammeln von Gesundheitsdaten und anderen Betriebsdaten ist eine weitere Python-Anwendung. Python ist seit langem eine beliebte Programmiersprache im Web, da es eine intuitive Sprache ist, mit der Sie Netzwerkprobleme schnell lösen können. Es wurden viele nützliche Bibliotheken entwickelt, die die Sprache noch besser zum Lernen und Verwenden geeignet machen.

Demand Engineering


Demand Engineering ist für die Behandlung regionaler Ausfälle , der Verkehrsverteilung, des Bandbreitenbetriebs und der Serverleistung in der Netflix-Cloud verantwortlich. Wir können stolz sagen, dass unsere Tools hauptsächlich auf Python basieren. Der Failover-Service verwendet numpy und scipy für die numerische Analyse, boto3 für Änderungen an der AWS-Infrastruktur und rq für die Ausführung asynchroner Workloads, die alle in einer dünnen Flask-API-Schicht eingeschlossen sind. Die Fähigkeit, mit einem Fehler in der Bpython- Shell zu gehen und mehr als einmal zu improvisieren, rettete die Situation.

Wir verwenden Jupyter Notebooks und nteract aktiv zur Analyse von Betriebsdaten und Prototyp- Visualisierungstools , um Kapazitätsregressionen zu erkennen.

KERN


Das CORE-Team verwendet Python, um Statistiken zu analysieren und Warnungen auszugeben. Wir stützen uns auf viele statistische und mathematische Bibliotheken (Numpy, Scipy, Ruptures, Pandas), um die Analyse von 1000 verwandten Signalen zu automatisieren, wenn Warnsysteme auf Probleme hinweisen. Wir haben ein Zeitreihenkorrelationssystem entwickelt, das sowohl innerhalb als auch außerhalb des Teams verwendet wird, sowie ein verteiltes Arbeitssystem zur Parallelisierung einer großen Menge analytischer Arbeit, um schnelle Ergebnisse zu erzielen.

Wir verwenden Python auch häufig für Automatisierungs-, Forschungs- und Datenfilterungsaufgaben sowie als praktisches Visualisierungstool.

Überwachung, Alarmierung und automatische Wiederherstellung


Das Insight Engineering-Team ist verantwortlich für die Entwicklung und den Betrieb von Tools zur schnellen Erkennung von Problemen, Warnungen, Diagnosen und automatischen Korrekturen. Mit der wachsenden Popularität von Python unterstützt das Team nun Python-Clients für die meisten seiner Dienste. Ein Beispiel ist die Spectator- Clientbibliothek für Code, der dimensionale Zeitreihenmetriken aufzeichnet. Wir erstellen Python-Bibliotheken für die Interaktion mit anderen Diensten auf der Netflix-Plattform. Zusätzlich zu den Bibliotheken werden Winston- und Bolt- Produkte mit Python-Frameworks (Gunicorn + Flask + Flask-RESTPlus) erstellt.

Informationssicherheit


Das Informationssicherheitsteam verwendet Python für eine Reihe wichtiger Aufgaben, darunter die Automatisierung der Sicherheit, die Klassifizierung von Risiken sowie die Identifizierung und automatische Behebung von Schwachstellen. Wir haben den Quellcode für mehrere erfolgreiche Produkte veröffentlicht, darunter Security Monkey (unser aktivstes Open Source-Projekt). Python wird verwendet, um unsere SSH-Ressourcen mit Bless zu schützen. Das Infrastruktursicherheitsteam verwendet Python, um IAM-Berechtigungen mithilfe von Repokid zu konfigurieren. Python-Skripte helfen beim Generieren von TLS-Zertifikaten in Lemur .

Einige unserer jüngsten Projekte umfassen Prism: ein Batch-Framework, mit dem Sicherheitsingenieure den Zustand der Infrastruktur analysieren und Risikofaktoren und Schwachstellen im Quellcode identifizieren können. Derzeit bieten wir Python- und Ruby-Bibliotheken für Prism an. Das Tool Diffy Forensics (Computer Forensics) ist vollständig in Python geschrieben. Wir verwenden Python auch, um vertrauliche Daten mit Lanius zu ermitteln.

Personalisierungsalgorithmen


Wir verwenden Python in großem Umfang im Rahmen für maschinelles Lernen zur Personalisierung . Hier werden einige Modelle vorgestellt, die wichtige Aspekte der Netflix-Funktionalität bieten: von Empfehlungsalgorithmen bis hin zu Auswahl- und Marketingalgorithmen . Einige Algorithmen verwenden beispielsweise TensorFlow, Keras und PyTorch zum Lernen tiefer neuronaler Netze, XGBoost und LightGBM zum Lernen von Entscheidungsbäumen mit Gradientenverstärkung oder einem breiteren Python-Stapel (z. B. numpy-, scipy-, sklearn-Bibliotheken, matplotlib-, pandas-, cvxpy-Bibliotheken). Da wir ständig neue Ansätze ausprobieren, verwenden wir für viele Experimente Jupyter-Notizbücher. Wir haben auch eine Reihe übergeordneter Bibliotheken entwickelt, um Notebooks in den Rest unseres Ökosystems zu integrieren (z. B. Zugriff auf Daten, Aufzeichnen von Fakten und Extrahieren von Attributen, Bewerten von Modellen und Veröffentlichen).

Infrastruktur für maschinelles Lernen


Neben der Personalisierung wendet Netflix maschinelles Lernen auf Hunderte anderer Aufgaben im gesamten Unternehmen an. Viele dieser Anwendungen laufen auf Metaflow, der Python-Plattform, mit der ML-Projekte einfach ausgeführt und von der Prototypenphase bis zur Produktion ausgeführt werden können.

Metaflow erweitert die Grenzen von Python: Wir verwenden gut parallelisierten und optimierten Python-Code, um Daten mit 10 Gbit / s zu extrahieren, Hunderte Millionen Datenpunkte im Speicher zu verarbeiten und Berechnungen auf Zehntausenden von CPU-Kernen zu organisieren.

Notizblöcke


Wir bei Netflix sind begeisterte Benutzer von Jupyter-Notebooks und haben bereits über die Gründe und die Art dieser Investitionen geschrieben .

Python spielt jedoch eine große Rolle bei der Bereitstellung dieser Dienste. Es ist die Hauptsprache für die Entwicklung, das Debuggen, die Erforschung und das Prototyping verschiedener Interaktionen mit dem Jupyter-Ökosystem. Wir verwenden Python, um benutzerdefinierte Erweiterungen für den Jupyter-Server zu erstellen, mit denen wir Aufgaben wie Protokollieren, Archivieren, Veröffentlichen und Klonen von Notizbüchern im Auftrag von Benutzern verwalten können. Wir bieten unseren Benutzern viele Optionen in Python über verschiedene Jupyter-Kernel und steuern die Bereitstellung dieser Kernel-Spezifikationen auch mit Python.

Orchestrierung


Das Big Data Orchestration Team ist verantwortlich für die Bereitstellung aller Services und Tools für die Planung und Ausführung von ETL- und Adhoc-Pipelines.

Viele Orchestrierungskomponenten sind in Python geschrieben. Beginnend mit einem Scheduler, der Jupyter- und Papiermühlen-Notizblöcke für Vorlagenjobtypen verwendet (Spark, Presto ...). Dies gibt Benutzern eine standardisierte und einfache Möglichkeit, die zu erledigende Arbeit auszudrücken. Hier können Sie mehr darüber lesen. Wir haben Notizbücher als echte Listen von Vorgängen in der Produktion („Runbooks“) in Situationen verwendet, in denen menschliches Eingreifen erforderlich ist, z. B. um alles neu zu starten, was in der letzten Stunde gefallen ist.

Für den internen Gebrauch haben wir eine ereignisgesteuerte Plattform erstellt, die vollständig in Python geschrieben ist. Es empfängt Ereignisströme von einer Reihe von Systemen, die zu einem einzigen Tool zusammengefasst sind. Auf diese Weise können Sie die Bedingungen für das Filtern von Ereignissen, das Reagieren auf Ereignisse oder das Weiterleiten festlegen. Auf diese Weise konnten wir Microservices isolieren und Transparenz über alles gewährleisten, was auf der Datenplattform geschieht.

Unser Team hat auch den pygenie- Client entwickelt, der mit dem Genie- Verbunddienst für die Auftragsabwicklung interagiert. Intern haben wir zusätzliche Erweiterungen für diese Bibliothek, die Geschäftsvereinbarungen anwenden und in die Netflix-Plattform integriert sind. Diese Bibliotheken sind die primäre Möglichkeit für Benutzer, programmgesteuert mit der Big-Data-Plattform zu interagieren.

Schließlich hat unser Team zu den Open-Source-Projekten Papiermühle und Sammelalbum beigetragen: Wir haben Code für unsere eigenen und externen Anwendungsfälle hinzugefügt. Unsere Bemühungen werden in der Open-Source-Community gut aufgenommen, worüber wir uns sehr freuen.

Experimentelle Plattform


Das Team wissenschaftlicher Berechnungen schafft eine Plattform für Experimente: AB-Tests und andere. Wissenschaftler und Ingenieure können in drei Bereichen mit Innovationen experimentieren: Daten, Statistiken und Visualisierung.

Unser Metrik-Repository ist eine PyPika- basierte Python-Plattform, mit der Sie wiederverwendbare parametrisierte SQL-Abfragen schreiben können. Dies ist der Einstiegspunkt für jede neue Analyse.

Die Bibliothek der Kausalmodelle basiert auf Python und R: Hier erhalten Wissenschaftler die Möglichkeit, neue Kausalmodelle zu erforschen. Es verwendet PyArrow und RPy2, sodass Statistiken in jeder Sprache leicht berechnet werden können.

Die Visualisierungsbibliothek basiert auf Plotly . Da Plotly eine gängige Spezifikation für Visualisierungen ist, gibt es viele Ausgabetools für unsere Plattformen.

Affiliate-Ökosystem


Das Partner-Ökosystemteam verwendet Python, um Netflix-Anwendungen auf Geräten zu testen. Python bildet den Kern der neuen Infrastruktur für die kontinuierliche Integration, einschließlich der Verwaltung unserer Orchestrierungsserver, der Verwaltung von Spinnaker, der Anforderungen und Filterung von Testsuiten sowie der Planung von Testläufen auf Geräten und Containern. In Python wird mithilfe von TensorFlow eine zusätzliche Analyse nach dem Start durchgeführt, um festzustellen, welche Tests auf welchen Geräten am wahrscheinlichsten Probleme verursachen.

Videokodierung und Entwicklung von Medienwolken


Unser Team kümmert sich um die Codierung (und Transcodierung) des Netflix-Katalogs und verwendet auch maschinelles Lernen, um diesen Katalog zu analysieren.

Wir verwenden Python in etwa 50 Projekten wie vmaf und mezzfs , erstellen Computer-Vision-Lösungen mit der kartenreduzierenden Plattform Archer und verwenden Python für viele interne Projekte.

Wir haben auch verschiedene Tools geöffnet, um die Entwicklung / Verteilung von Python-Projekten wie Setupmeta und Pickley zu erleichtern .

Netflix- und NVFX-Animation


Python ist ein Industriestandard für alle wichtigen Anwendungen, die wir zum Erstellen von animierten und VFX-Inhalten verwenden. Es versteht sich daher von selbst, dass wir es häufig verwenden. Alle unsere Integrationen mit Maya und Nuke erfolgen in Python, und der Großteil unserer Shotgun-Tools auch. Wir haben gerade mit dem Erstellen von Tools in der Cloud begonnen und werden dort viele benutzerdefinierte Python AMI / Container bereitstellen.

Maschinelles Lernen in Inhalt, Wissenschaft und Analytik


Das Content-Team für maschinelles Lernen nutzt Python in großem Umfang, um Modelle für maschinelles Lernen zu entwickeln, die den Kern der Vorhersage der Zielgruppengröße, der Ansichten und anderer Metriken für alle Inhalte bilden.

Source: https://habr.com/ru/post/de450870/


All Articles