Videostreaming: Netflix stellt sein Cloud-Gateway Zuul 2 unter offene Lizenz
Zuul 2 heißt das Cloud-Gateway von Netflix, es kommt mit riesigen Mengen an Anfragen der weltweiten Film- und Serienfans zurecht. Die Streaming-Firma stellt nun viele Kern-Funktion der Software unter die Apache-2-Lizenz.
Für sämtliche Browser- und Geräte-Anfragen, die in die Cloud des Streaminganbieters Netflix gehen, dient die Software Zuul 2 als Eingangsportal, so zumindest beschreibt es das Unternehmen in der Ankündigung zur Offenlegung wichtiger Funktionen von Zuul 2. Das zuständige Team betreibe mehr als 80 Zuul-2-Cluster. Die sind wiederum mit etwa 100 Backend-Service-Clustern verbunden und bewältigen mehr als 1 Million Anfragen pro Sekunde.
Die äußere Schicht von Zuul 2 besteht aus Netty-Handlern für Clients und Server, die sich um Traffic kümmern, der technisch mit Netzwerkprotokollen, Webservern, Verbindungsverwaltungen und Proxy-Einsätzen zu tun hat. Hinzu kommen mehrere sogenannte Filter. Die Inbound-Filter kommen vor dem Weiterleiten von Anfragen zum Einsatz, sie kümmern sich um Authentifizierung, Routing und Tagging von Traffic. Die Endpoint-Filter geben eine statische Antwort oder leiten den Traffic an das eigentliche Ziel weiter. Die Outbound-Filter komprimieren letztlich den ausgehenden Traffic, ergänzen und entfernen Header und sammeln Telemetriedaten.
Die Filter lassen sich dabei nach eigenen Wünschen anpassen und nehmen in der Regel sämtlichen Traffic von außen in Empfang. Netflix verwende sie in leicht abgewandelter und vor allem reduzierter Form jedoch auch für internen Traffic, um etwa Load Balancing umzusetzen und auf interne Dienste zu routen.
Zuul-2-Kernfunktion stehen bereit
Zu den Kernbestandteilen, die Netflix nun unter eine offene Lizenz stellt, gehört ein vollständiger Support für eingehende HTTP/2-Verbindungen und Mutual TLS, um Zuul 2 auch in Szenarios mit höheren Sicherheitsanforderungen einzusetzen. Anpassbare Limits für wiederholte und konkurrierende Anfragen erhöhen die Widerstandsfähigkeit gegen DDoS-Angriffe.
Mit Request Passport lassen sich die Ereignisse im Lebenszyklus jeder Anfrage verfolgen, was beim Debuggen hilft. Status Categories geben Erfolgs- und Fehlermeldungen von Anfragen feingranularer wieder als HTTP-Statuscodes. Request Attempts prüfen den Erfolg von Weiter- und Umleitungen der Anfragen, was für Probleme mit dem Routing und wiederholten Anfragen aufschlussreich ist.
Darüber hinaus sind bereits weitere Funktion in Arbeit, die in der Ankündigung aufgezählt werden. So soll es dank Websocket/SSE-Support Push-Nachrichten über Seitenkanäle geben. Throttling und Rate-Limiting soll die Effekte von bösartigen Client-Verbindungen und -Anfragen abmildern. Sogenannte Brownout Filter deaktivieren bestimmte CPU-intensive Funktionen, wenn Zuul überlastet ist. Und Routen sollen sich auch über Dateien anlegen lassen, um nicht jedes Mal eigene Filter zu entwickeln.
Der Quellcode der Software findet sich auf Github. Dort bieten die Entwickler auch eine Einführung in die Verwendung von Zuul 2 an.