In den wenigen Jahren seit seiner Einführung ist der Online-Videostreamingdienst von Netflix auf über 50 Millionen Abonnenten in 40 Ländern angewachsen. Einige der Best Practices, die die Softwareentwickler von Netflix beim Übergang von einem traditionellen monolithischen Entwicklungsprozess zu Continuous Delivery und Microservices eingeführt haben, haben wir bereits in „Einführung von Microservices bei Netflix: Erkenntnisse für das Architekturdesign“ und „Einführung von Microservices bei Netflix: Erkenntnisse für die Gestaltung von Teams und Prozessen“ vorgestellt.
NGINX-Entwickler Gleb Smirnoff auf der nginx.conf2014
In diesem Beitrag befassen wir uns mit einem weiteren zentralen Erfolgsfaktor von Netflix: seinem Content Delivery Network (CDN), Open Connect. Wir sind stolz darauf, dass NGINX auf jeder Open-Connect-Delivery-Appliance läuft und entscheidend dazu beiträgt, dass Netflix mit dem rasanten Wachstum seines Videodienstes Schritt halten kann. Gleb Smirnoff von NGINX arbeitet seit über zwei Jahren eng mit dem Open-Connect-Team zusammen. Im vergangenen Oktober erläuterte er auf unserer Anwenderkonferenz nginx.conf2014, warum Netflix sich für NGINX (zusammen mit FreeBSD) entschieden hat, um diesen geschäftskritischen Bereich zu betreiben.
Warum Netflix sein eigenes CDN aufgebaut hat
Netflix lagerte die Bereitstellung von Streaming-Videos zunächst an drei große CDN-Anbieter aus (Akamai, Level3 und LimeLight). Mit zunehmender Beliebtheit des Dienstes entschied Netflix aus mehreren Gründen, dass es sinnvoll sei, ein eigenes CDN aufzubauen und zu betreiben:
- Aus praktischer Sicht hatten die CDN-Anbieter Schwierigkeiten, ihre Infrastruktur so schnell auszubauen, wie die Kundennachfrage nach dem Video-Streaming von Netflix wuchs.
- Aus finanzieller Sicht wurden die Kosten für das Outsourcing mit zunehmendem Volumen der gestreamten Videos schnell untragbar (eine Herausforderung, mit der viele beliebte Anwendungen und Webangebote konfrontiert sind).
- Aus geschäftlicher Sicht war klar, dass Videostreaming den DVD-Verleih als Haupteinnahmequelle von Netflix ablöste und es nicht sinnvoll war, einen entscheidenden Teil des Kerngeschäfts des Unternehmens auszulagern.
Vor allem baute Netflix sein eigenes CDN auf, um mehr Kontrolle über die Bereitstellung der Anwendung und das Nutzererlebnis zu haben. Um seinen Kunden eine optimale Bereitstellung von Streaming-Medien zu bieten, musste Netflix die Kontrolle über die drei grundlegenden Komponenten der Bereitstellungskette maximieren:
- Der Videoplayer des Nutzers. Netflix hatte bereits die Kontrolle über diese Komponente, da seine Entwickler alle gerätespezifischen Apps programmieren, mit denen Kunden Netflix-Inhalte ansehen.
- Das Netzwerk zwischen dem Benutzer und den Netflix-Servern. Diese Komponente lässt sich nicht direkt kontrollieren. Netflix verkürzt jedoch die Netzwerkdistanz zu seinen Kunden, indem das Unternehmen Internetdienstanbietern (ISPs) kostenlose Geräte für das Videostreaming zur Verfügung stellt und im Gegenzug Stellfläche in deren Rechenzentren erhält, um die Geräte dort unterzubringen. (Solche Geräte werden auch an Internetknoten [IXPs] installiert, um Kunden zu versorgen, deren ISPs kein Interesse daran haben, Geräte von Drittanbietern unterzubringen.) Videostreaming reagiert besonders empfindlich auf die bei TCP/IP auftretenden Paketverzögerungen und -verluste, eine falsche Ankunftsreihenfolge sowie unvorhersehbare, schwankende Paketumlaufzeiten (Jitter). Durch die Verkürzung der Netzwerkdistanz wird das Risiko solcher Störungen verringert.
- Der Videoserver (Open Connect selbst). Durch den Betrieb eines eigenen CDN kann Netflix die CDN-Software so optimieren, dass Internetanomalien so weit wie möglich ausgeglichen werden. Dabei können benutzerdefinierte Algorithmen zur Steuerung von TCP-Verbindungen und HTTP-Module eingesetzt werden. Außerdem lassen sich Server- und Netzwerkprobleme sehr schnell erkennen und Clients auf alternative Server umleiten. Anschließend kann sich Netflix bei der Serverhardware anmelden und die Fehler „von innen heraus“ beheben.
Netflix konnte Open Connect auf eine Weise für das Videostreaming optimieren, die mit einem generischen CDN eines Drittanbieters nicht möglich ist. Mit Open Connect kann Netflix ein besseres Nutzererlebnis zu geringeren Kosten bieten und erhält zugleich einen umfassenderen Einblick in die Leistung der Anwendung weltweit.
Warum sich Netflix für NGINX und FreeBSD entschieden hat
Von Anfang an bestand das Ziel von Netflix, wie Gleb es ausdrückt, darin, „immer mehr Gigabit pro Sekunde aus einer einzigen Box herauszuholen“. Konkret musste Netflix die Anzahl der Abonnenten maximieren, die jede Appliance gleichzeitig bedienen konnte. Die Open-Connect-Ingenieure gingen davon aus, dass sie die Software optimieren müssten, um dieses Ziel zu erreichen. Daher entschieden sie sich aufgrund ihrer unbegrenzten Erweiterbarkeit für Open-Source-Software.
Wie bereits erwähnt, stellt Netflix seine Appliances für das Videostreaming nach Möglichkeit in den Rechenzentren der Internetanbieter seiner Kunden auf. Da die auf den Appliances ausgeführte Software damit in die Hände Dritter gelangen würde, entschied sich Netflix für Projekte mit einer BSD-ähnlichen Lizenz anstelle der GNU General Public License (GPL).
Netflix entschied sich für die folgenden Open-Source-Projekte:
- FreeBSD als Betriebssystem, da es als schnell und stabil gilt. Die Entwickler-Community ist stark und bereit, mit Anbietern zusammenzuarbeiten.
- NGINX als Streaming-Media-Server. Seine bewährte Geschwindigkeit und Stabilität waren wichtig, da Netflix Open Connect so schnell wie möglich starten wollte, ohne zunächst aufwendige Anpassungen vornehmen zu müssen. Nachdem das CDN in Betrieb genommen worden war, konnte Netflix die Datenverkehrsmuster analysieren und die NGINX-Einstellungen optimieren. Ein weiterer Vorteil von NGINX besteht darin, dass die Open-Source-Software zwar unter einer BSD-ähnlichen Lizenz vertrieben wird, alle Hauptentwickler jedoch Vollzeitbeschäftigte von NGINX, Inc. sind. Das Unternehmen bietet Support auf Enterprise-Niveau für sein kommerzielles Produkt NGINX Plus. Damit vereint es die besten Eigenschaften von Open-Source- und kommerzieller Software. Auch das flexible Framework von NGINX zur Ausführung benutzerdefinierter Module überzeugte Netflix. Das Open-Connect-Team hat spezielle Module für seine Anforderungen an das Videostreaming entwickelt.
Die Kombination von FreeBSD und NGINX bietet weitere Vorteile:
- Das ereignisgesteuerte Design von NGINX ist einer der Schlüssel zu seiner herausragenden Leistung, und der FreeBSD-Systemaufruf kqueue zur Ereignisbenachrichtigung ist eine der besten APIs für Multiplex-I/O.
- Ohne dass Änderungen erforderlich sind, kann NGINX den Systemaufruf sendfile zusammen mit dem Systemaufruf aio_read verwenden. Gemeinsam verhindern diese Aufrufe Blockierungen bei Festplatten-E/A und sorgen so für eine herausragende Leistung.
NGINX Plus und NGINX können auch Ihre Anwendungsbereitstellung optimieren
NGINX wurde von Anfang an so konzipiert, dass es flexibel anpassbar ist und alle Aspekte der Anwendungsbereitstellung unterstützt. Damit unsere Geschäftskunden Anwendungen wie Netflix einfacher bereitstellen können, vereint NGINX Plus Webbereitstellung, Lastverteilung, Content-Caching und Medienstreaming in einem benutzerfreundlichen Paket. Sehen Sie sich unsere Fallstudien an und erfahren Sie, wie andere führende Unternehmen NGINX Plus nutzen, um ihre Anwendungen leistungsstark, sicher und skalierbar bereitzustellen.
Wir arbeiten gerne eng mit unseren Kunden zusammen und beraten sie dabei, NGINX Plus in ihren jeweiligen Architekturen für die Anwendungsbereitstellung optimal zu nutzen. Unsere Teams für Support und Professional Services unterstützen Sie unter anderem bei Architekturfragen, Installation, Konfiguration und Updates. Kontaktieren Sie uns, um mehr zu erfahren.
Videoaufzeichnung
Über den Autor
Ähnliche Blogbeiträge
Die Zukunft von NGINX: Zurück zu unseren Open-Source-Wurzeln
Beim NGINX Sprint 2022 besinnen wir uns auf unsere Open-Source-Wurzeln. Erfahren Sie mehr über die Initiativen, die wir im kommenden Jahr verfolgen, und teilen Sie uns mit, was Sie sich wünschen.

Ein Leitfaden zur Auswahl eines Ingress-Controllers, Teil 1: Ermitteln Sie Ihre Anforderungen
Ein Ingress-Controller kann eines der leistungsstärksten Tools in Ihrem Kubernetes-Stack sein. Erfahren Sie, wie Sie Ihre Ingress-Anforderungen ermitteln, um die beste Option auszuwählen.
Bereitstellung des NGINX Ingress Controllers auf Amazon EKS: So haben wir getestet
Wir haben kürzlich den Lösungsleitfaden zum NGINX Ingress Controller um Empfehlungen zur Dimensionierung für Amazon Elastic Kubernetes Service (EKS) ergänzt. In diesem Blogbeitrag erläutern wir, wie wir diese Empfehlungen erarbeitet haben, und stellen Ihnen alle Informationen zur Verfügung, die Sie benötigen, um selbst ähnliche Tests durchzuführen.

Protokollierung des Datenverkehrs zwischen NGINX und Upstream-Servern bei CDN77
Bei der Fehlersuche bei Datenverkehrsproblemen zwischen NGINX und Upstream-Servern konnte CDN77 die benötigten Daten nur aus dem Fehlerprotokoll mit aktivierter Debug-Ausgabe beziehen, was die Leistung beeinträchtigt und riesige Dateien erzeugt. Daher entwickelte das Team ein neues benutzerdefiniertes Modul, das ausschließlich die benötigten Daten protokolliert.
Ankündigung von NGINX Plus R16
NGINX Plus R16 ist eine einheitliche, elastische Ingress- und Egress-Schicht für Anwendungen, die die Funktionen eines Load Balancers, API-Gateways und einer WAF vereint und neue Features wie clusterfähige Ratenbegrenzung, Schlüssel-Wert-Speicher, „Random with Two Choices“, verbessertes UDP-Load-Balancing und vieles mehr bietet.
5 Gründe für den Umstieg auf softwarebasiertes Load Balancing
Entdecken Sie fünf Gründe für den Wechsel zu einem softwarebasierten Load Balancer wie NGINX Plus, darunter Kosteneinsparungen, die Einführung von DevOps und eine einheitliche Lösung für alle Umgebungen.