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 bei PagerDuty HQ über das Einfügen von Fehlern bei Netflix. Corey wollte den Leuten zeigen, was schiefgehen kann, denn alles, was schiefgehen kann, wird schiefgehen. Chaos zu fördern und Fehler einzufügen 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 verantwortlich 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 Art und Weise, wie es zu Fehlern kommt, deutlich verbessern.

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

Corey gibt zu, dass dies eine feindliche Umgebung für Ingenieure schafft, in der jeder Vorfall einzigartig ist und kein einzelner Mensch 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. Daher ist für den anhaltenden Erfolg und das Wachstum des Unternehmens das häufige Einfügen von Fehlern in sein System notwendig.

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

Fehler und Zuverlässigkeit anders angehen

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

Corey gibt zu, dass Netflix keine Tests durchführt. Es ist unmöglich, in einer Testumgebung nachzubilden, was in der Produktion erstellt wurde. Das bedeutet jedoch nicht, dass keine Tests durchgeführt werden, aber ihre Testumgebungen sind nur ein kleiner Bruchteil dessen, was in der Produktion geschieht. Wenn Dienste bereitgestellt werden, befassen sie sich mit einer völlig neuen Umgebung in der Produktion, die durch die einzigartigen Bedingungen verursacht wird, die in ihrer Produktionsumgebung herrschen.

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

Da keine Testumgebung vorhanden war, hat Netflix alles automatisiert und die Simian Army erstellt.

Fügen Sie Fehler ein … aber zerstören Sie Netflix nicht

Die Zuverlässigkeit wird bei Netflix durch die kontinuierliche Automatisierung der Tests der Produktionssysteme sichergestellt. Durch gezieltes Anstupsen der Systeme können sie feststellen, ob diese einem Kampf wirklich standhalten. Um jedoch die Notwendigkeit der Zuverlässigkeit zu vermitteln, mussten die Konzepte intern verkauft werden. Zu diesem Zweck beschloss Netflix, seinen Prozess, die Simian Army, zu branden, zu fördern 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 Sie in die Knie zwingen, wenn Sie sie ignorieren. Verzetteln Sie sich nicht beim Erstellen von Hunderten von Testszenarien.

Alles protokollieren . Manche Leute sagen, Netflix sei ein Protokollierungsunternehmen, das zufällig Videos streamt, weil es jede Kundenaktion protokolliert, um Einblicke zu erhalten, was funktioniert und was nicht. Ohne Einblicke können Sie nicht erfolgreich sein, also protokollieren Sie alles. Protokollieren Sie alle Ihre Metriken, Grafiken, Warnungen, alles. Sie werden massiv in Ihre Informationsinfrastruktur investieren wollen, um skalieren zu können.

Skalierung auf Zonenzuverlässigkeitstests. Eine großartige Möglichkeit, um zu sehen, wie Sie mit einem Zonenausfall umgehen. Netflix baut alles in Dreiergruppen auf, sodass das Unternehmen Zonenausfällen standhalten sollte. Für Netflix automatisiert Chaos Gorilla die Umleitung des Datenverkehrs, skaliert den Datenverkehr und zerstört dann alles.

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

Erlauben Sie Opt-outs, aber fördern Sie Opt-ins. Sie möchten vielleicht nicht, dass alle Ihre Dienste ausfallen, da dies zu Verzögerungen oder zum Verlust wochenlanger Arbeit führen kann. Sie möchten Beziehungen zu Ihren Entwicklern aufbauen und sie nicht überfordern, indem Sie ihre Arbeit zerstören.

Richten Sie einen Kriegsraum ein (diese sind von entscheidender Bedeutung). Beim Ausführen einer Fehlerautomatisierung ist es wichtig, dass ein Vertreter aus jedem Team anwesend ist. Sie wissen nicht, wie Ihr System auf den Fehler reagieren könnte. Wenn alle zusammen den Service überwachen, für den sie verantwortlich sind, können Sie leichter reagieren und das Gelernte umsetzen.

Wiederholen. Oft. Derzeit führt Netflix seine Fehlerautomatisierungen vierteljährlich durch. Diese soll nun alle zwei Wochen eingeführt werden. Das ist weder einfach noch leicht, aber notwendig, wenn Sie skalieren und zuverlässig bleiben möchten.

Corey fasst zusammen, dass die Steigerung der Zuverlässigkeit keine Aufgabe ist, die Sie alleine übernehmen können, da Sie sonst scheitern werden. Zwar müssen Sie Zuverlässigkeit immer mit Kosten oder Innovation abwägen, aber er erinnert uns daran, dass es noch wichtiger ist, es einfach zu halten.