Der Blog

Fehler bei Netflix beheben, für über 40 Millionen Kunden zuverlässig bleiben

von Vivian Au 4. März 2014 | 5 Minuten Lesezeit

Corey Bertram, Site Reliability Engineer bei Netflix, sprach kürzlich zu einer DevOps-Meetup-Gruppe im PagerDuty -Hauptquartier über das Einbringen von Fehlern bei Netflix. Corey wollte den Leuten zeigen, was schiefgehen kann, denn alles kann schiefgehen und wird es auch. Chaos zu fördern und Fehler einzubringen war eine großartige Möglichkeit, Netflix für seine über 40 Millionen Kunden am Laufen zu halten.

Corey, der für die Verfügbarkeit und Zuverlässigkeit von Netflix zuständig ist, sagte:

„Ich verbringe viel Zeit damit, darüber nachzudenken, wie man Netflix kaputt machen kann.“

Laut Corey konnte Netflix durch die Einfügung von Fehlern in seine Produktionssysteme die Häufigkeit von Fehlern deutlich verringern.

Eine Seltenheit, insbesondere für große Unternehmen, ist die Netflix-Kultur der Freiheit und Verantwortung. Jeder Entwickler bei Netflix kann tun, was er für das Beste hält. Die rund 1.000 Ingenieure werden ermutigt, mutig zu sein und Probleme zu lösen, wodurch alles bei Netflix organisch abläuft. Aus diesem Grund gibt es bei Netflix kein Betriebsteam, sondern jeder Ingenieur ist von der Konzeption bis zur Produktion für seine eigenen Dienste verantwortlich.

Corey gibt zu, dass dies ein feindliches Arbeitsumfeld für Ingenieure schafft, in dem jeder Vorfall einzigartig ist und niemand weiß, wie alles funktioniert. Aber wenn man ihren Ingenieuren sagt, sie sollen sich austoben, dann tun sie das auch. Sie scheuen keine Herausforderungen und finden Lösungen für Probleme, die noch kein anderes Unternehmen je erlebt hat.

Netflix verfügt über Hunderte von Datenbanken und Hunderte von Diensten im Produktionspfad, was für den anhaltenden Erfolg und das Wachstum des Unternehmens häufige Fehler im System erforderlich macht.

„Niemand weiß, wie Netflix funktioniert. Ich sage das so ehrlich wie möglich. Niemand versteht mehr, wie das Ganze funktioniert. Es ist gewaltig.“

Ein anderer Ansatz für Fehler und Zuverlässigkeit

Bei Netflix laufen Bereitstellungen rund um die Uhr, sodass jederzeit alles auf den Zehntausenden von Instanzen passieren kann. Aus diesem Grund konzentriert man sich auf Cluster statt auf einzelne Vorfälle. Laut Corey ist es einfacher, tausend Dienste zurückzusetzen als nur einen, um Trends zu erkennen.

Corey gibt zu, dass Netflix nicht testet. Es ist unmöglich, in einer Testumgebung zu simulieren, was in der Produktion entwickelt wurde. Das bedeutet jedoch nicht, dass keine Tests durchgeführt werden, aber die Testumgebungen bilden nur einen kleinen Teil dessen ab, was in der Produktion passiert. Bei der Bereitstellung von Diensten wird eine völlig neue Produktionsumgebung bearbeitet, die durch die einzigartigen Bedingungen der Produktionsumgebung bedingt ist.

„Aus Sicht der Zuverlässigkeit sind wir quasi nur zum Spaß dabei.“

Da Netflix keine Testumgebung hat, hat das Unternehmen alles automatisiert und die Simian Army geschaffen.

Fehler beim Einfügen … aber Netflix nicht kaputt machen

Die Zuverlässigkeit wird bei Netflix durch die kontinuierliche Automatisierung der Tests der Produktionssysteme sichergestellt. Durch gezielte Tests lässt sich prüfen, ob die Systeme einem harten Einsatz standhalten. Um die Notwendigkeit von Zuverlässigkeit zu vermitteln, mussten die Konzepte jedoch intern verkauft werden. Um dies zu erreichen, entschied sich Netflix, seinen Prozess, die Simian Army, zu branden, zu bewerben und Anreize für die Nutzung zu schaffen.

Fangen Sie klein an. Finden Sie Ihre leichten Erfolge und halten Sie es einfach, indem Sie sich die niedrig hängenden Früchte schnappen. Laut Corey sind es diese leichten Erfolge, die sich rächen, wenn sie ignoriert werden. Verzetteln Sie sich nicht in der Erstellung von Hunderten von Testszenarien.

Alles protokollieren Manche Leute sagen, Netflix sei ein Protokollierungsunternehmen, das zufällig Videos streamt, weil es jede Kundenaktion protokolliert, um zu sehen, was funktioniert und was nicht. Ohne Einblicke kann man nicht erfolgreich sein, also protokollieren Sie alles. Protokollieren Sie alle Ihre Messwerte, Grafiken, Warnungen, einfach alles. Um skalieren zu können, sollten Sie massiv in Ihre Insight-Infrastruktur investieren.

Skalieren Sie auf Zonenzuverlässigkeitstests. Eine gute Möglichkeit, um zu testen, wie Sie mit einem Zonenausfall umgehen. Netflix baut alles in Dreiergruppen auf und sollte daher Zonenausfällen standhalten können. Für Netflix automatisiert Chaos Gorilla die Verkehrsverlagerung, skaliert den Verkehr und schaltet dann alles ab.

Tipp: Wenn Sie bei Amazon sind, empfiehlt Corey die Verwendung eines asymmetrischen Lastenausgleichs, um zu vermeiden, dass eine Menge Datenverkehr in eine Zone geleitet wird, die nach einem Ausfall immer noch aktiv ist.

Erlauben Sie Opt-outs, aber fördern Sie Opt-ins. Sie möchten nicht, dass alle Ihre Dienste ausfallen, da dies zu Verzögerungen oder dem Verlust wochenlanger Arbeit führen kann. Sie möchten Beziehungen zu Ihren Entwicklern aufbauen und sie nicht durch die Zerstörung ihrer Arbeit überfordern.

Richten Sie einen Kriegsraum ein (sie sind entscheidend). Bei der Fehlerautomatisierung ist es wichtig, dass ein Vertreter aus jedem Team anwesend ist. Sie wissen nicht, wie Ihr System auf den Fehler reagiert. Wenn alle zusammen den Service überwachen, für den sie verantwortlich sind, können Sie leichter reagieren und die gewonnenen Erkenntnisse berücksichtigen.

Wiederholen. Oft. Netflix führt seine Fehlerautomatisierungen derzeit vierteljährlich durch. Die Einführung soll künftig alle zwei Wochen erfolgen. Das ist nicht einfach, aber notwendig, wenn Sie skalieren und zuverlässig bleiben möchten.

Corey fasst zusammen: Die Steigerung der Zuverlässigkeit ist keine Aufgabe, die man alleine bewältigen kann, sonst wird man scheitern. Zwar muss man Zuverlässigkeit immer mit Kosten oder Innovation abwägen, doch er erinnert uns daran, dass es noch wichtiger ist, es einfach zu halten.