Was ist Site Reliability Engineering? – Eine Übersicht

Von Thomas Faß | Jan. 21, 2022 | Blog

Was ist Site Reliability Engineering?

Der Begriff Site Reliability Engineering (kurz: SRE) begegnet man in Zeiten kollaborativer Modelle der Zusammenarbeit und durchdringender Agilität in der IT an vielen Stellen. Doch was hat es mit diesem Ansatz für den Betrieb von IT-Systemen auf sich?

Der Ursprung von Site Reliability Engineering

Wie so häufig bei modernen Vorgehensmodellen und Methoden, liegt der Ursprung von Site Reliability Engineering bei einem der großen amerikanischen Tech-Konzerne, im Fall von SRE bei Google im Jahr 2003. Der Kern von Googles Business Modellen und somit der Schlüssel zum Erfolg des Unternehmens ist eng mit der internen IT verknüpft. So sucht Google seit jeher nach Methoden und Vorgehensmodellen in seiner IT-Organisation, um dem rasanten Wachstum gerecht zu werden. Zwar war im Jahr 2003 auch bei Google eine strikte Trennung zwischen Softwareentwicklung und IT-Betrieb allgegenwärtig, dennoch stellte man sich damals in Bezug auf IT-Operations folgende Fragen: Wie eng sollten Teams aus Entwicklung und Betrieb verknüpft werden und welche Prozesse braucht es für eine erfolgreiche Kollaboration? Aus diesen Fragestellungen und den daraus resultierenden Antworten entstand das Site Reliability Engineering als neue Modell für den Betrieb von IT-Systemen bei Google. Doch was ist SRE nun genau?

Was genau ist Site Reliability Engineering?

Site Reliability Engineering integriert verschiedene Methoden, die auch bei der Entwicklung von Software oder bei DevOps verwendet werden. In erster Linie betrachtet SRE IT-Betrieb als Aufgabe, die mit Software-Engineering zu meistern ist; konkret werden Systeme mittels Code bereitgestellt und verwaltet. Mit anderen Worten: Infrastruktur, Workflows und manuelle Tätigkeiten werden durch den Einsatz von Software automatisiert und somit zuverlässiger gestaltet. Neben der Automatisierung spielt das Monitoring von Systemen im Site Reliability Engineering eine zentrale Rolle. Wichtige System-Metriken werden zu jeder Zeit überwacht und mittels Dashboards visualisiert. Die ermittelten Daten werden dabei nicht nur reaktiv betrachtet, sondern insofern ständig analysiert, dass System-Fehler und Schwachstellen proaktiv erkannt und behoben werden.
Der ideale Site Reliability Engineer hat seine Wurzeln in der Softwareentwicklung, verfügt über beträchtliche Erfahrung im IT-Betrieb und ist affin gegenüber der Analyse von Systemdaten. Mit diesem Skill Set fokussiert er/sie auf die Automatisierung des Betriebs, konzentriert sich auf die Planung und das Design der nötigen Infrastruktur, überwacht Systeme in Live-Betrieb und analysiert deren Performance, immer mit dem Ziel Verbesserungspotentiale auszumachen. Site Reliability Engineers teilen Ihre Zeit zwischen Betriebsaufgaben und der Entwicklung von Software und Tools zum Zwecke der Optimierung auf. Im Falle einer Störung beheben sie diese und führen im Nachgang meist detaillierte Gespräche mit den Beteiligten, um herauszufinden, was gut funktioniert hat und was verbessert werden muss. Zudem erfassen Site Reliability Engineers wichtiges, undokumentiertes Wissen. Durch ihre Einblicke in die Entwicklung und den Support bleibt dieses Wissen nicht mehr in Team-Silos verborgen, sondern kann übergreifend genutzt werden.

Neben den bereits beschriebenen technologischen Kernelementen des Site Reliability Engineering, basiert das Vorgehensmodellen des Weiteren auf einer Reihe von methodischen Grundprinzipien, auf die im Folgenden näher eingegangen wird.

Site Reliability Engineering setzt auf ein Set an Methoden, die in der Softwareentwicklung bereits etabliert sind. Zudem hat SRE viele Parallelen zu Methoden, die für DevOps genutzt werden. Zwei der wohl deutlichsten Unterschiede zu DevOps sind, dass Site Reliability Engineering Zuverlässigkeit (des Systems) als oberste Priorität ins Zentrum des Handelns stellt und Vorgaben wesentlich verbindlicher befolgt werden müssen. Die größten Gemeinsamkeiten wiederum zu DevOps sind zentrale Aktivitäten wie das kontinuierliche Monitoring und das konsequente Automatisieren von Prozessen und Workflows.
Eine zentrale Methode, die SRE nutzt sind die sogenannten positiven Kreisläufe. Dabei werden Ziele definiert und Maßnahmen, diese zu messen, festgelegt. Teil der positiven Kreisläufe ist auch Umgang mit Fehlern. Im Folgenden wird das Prinzip der positiven Kreisläufe in seinen einzelnen Elementen beschrieben.

SLO und SLI

Site Reliability Engineering definiert für jedes System, wie eine angemessene Zuverlässigkeit genau aussehen muss. Das „Service Level Objective“ (SLO) gibt an, wie zuverlässig ein System funktionieren muss, damit es den internen Vorgaben oder dem Kundenwunsch entspricht. Das kann beispielsweise bedeuten, dass ein System zu 90 Prozent erfolgreiche Ergebnisse innerhalb eines definierten Zeitraums erzeugen muss. Um festzustellen, ob dieses Ziel und damit die vorab festgelegte Zuverlässigkeit erreicht werden, setzt SRE „Service Level Indicator“ (SLI) ein. SLIs sind Messpunkte, die beispielsweise Auskunft darüber geben, wie viele Anfragen erfolgreich verlaufen sind und wie viele dieser Anfragen den vorgegebenen Zeitraum eingehalten haben. Mittels der SLIs kann dann eine qualifizierte Aussage darüber getroffen werden, ob das SLO erreicht wird oder, wenn nicht, an welcher Stelle es Optimierungsbedarf gibt.

Fehlerbudgets

Updates und neue Releases liefern neue Funktionen, verbessern bestehende Funktionen und schließen Sicherheitslücken. Ein Grundproblem der Softwareentwicklung ist, dass nicht unendlich viel Zeit dafür eingeplant werden kann, vor jedem Release jedes denkbare Szenario lückenlos zu testen. Abgesehen davon, stellt sich in diesem Zusammenhang die Frage, ob und wann perfekte System-Zuverlässigkeit angemessen ist.
Site Reliability Engineering arbeitet mit dem Grundprinzip, dass in jedem System ein Fehlerbudget vorhanden ist. Dieses Budget berechnet sich aus der theoretisch möglichen Zuverlässigkeit von 100% abzüglich der real angewandten Zuverlässigkeit und bezieht sich dabei auf einen definierten Zeitraum, z.B. einen Monat. Am Beispiel von oben würde das Fehlerbudget also 10 Prozent betragen (100 Prozent minus 90 Prozent). Somit wäre es akzeptabel, wenn die entsprechende Funktionalität eine Fehlerquote von bis zu 10 Prozent aufweisen würde.
Solange also das SLO im grünen Bereich ist, muss mit dieser Methode keine Zeit und kein Budget verschwendet werden, um einem theoretischen Idealzustand perfekter Zuverlässigkeit hinterher zu rennen. Erst dann, wenn das Fehlerbudget aufgebraucht ist, entsteht Handlungsbedarf und es muss nachgebessert werden, beispielsweise indem ein Release zurückgehalten wird, um die Zuverlässigkeit zu verbessern.

Aus Fehlern lernen – ohne Schuldzuweisung

Bei schwerwiegenden Systemfehlern oder folgenschweren Ausfällen ist es grundsätzlich sinnvoll, die Ursachen für diese Fehler im Nachgang gründlich zu analysieren. Nur so können aus diesen Fehlern Erkenntnisse gezogen werden und idealerweise ähnliche Fälle in der Zukunft vermieden werden. Das Besondere bei Site Reliability Engineering ist, dass diese Fehleranalysen bewusst in einem positiven Rahmen stattfinden sollen. Statt einzelnen Personen oder Teams für einen Fehler verantwortlich zu machen, stellt SRE das Problem und dessen Ursachen in den Mittelpunkt. Die Frage lautet nicht „wer hat Schuld an diesem Fehler?“, sondern „welche Umstände führten dazu, dass dieser Fehler eingetreten ist“.
Durch dieses Vorgehen können Gründe wie fehlende Informationen oder mangelhafte betriebliche Prozesse identifiziert werden, die das Aufkommen dieses Fehlers mit herbeigeführt haben könnten. SRE sieht unbedingt vor, niemanden für einen passierten Fehler zu sanktionieren. Vielmehr soll eine Möglichkeit gefunden werden, diesen Fehler in Zukunft durch geeignete Maßnahmen zu vermeiden. So kann die gesamte Organisation durch Fehler wachsen und die Zuverlässigkeit von Systemen nachhaltig verbessern.

Die Vorteile des Site Reliability Engineering

Festzuhalten bleibt, Site Reliability Engineering basiert auf einem Set von technischen Werkzeugen und klaren Prinzipien. Doch wo liegen nun die Vorteile von SRE im Vergleich zu verwandten Betriebsmodellen? Im Folgenden werden sechs der zentralsten Argumente aufgeführt, die für die Einführung von SRE sprechen:

  • Verbessertes Reporting: SRE schafft Transparenz, indem wichtige Parameter wie Produktivität, Servicezustand und Fehlerrate kontinuierlich überwacht werden. Aus Metriken werden konkrete Elemente (beispielsweise eine durchschnittliche Ausfallzeit) abgeleitet, die dann gezielt mit Lösungen verbessert werden.
  • Proaktive Fehlersuche: viele IT-Organisationen konzentrieren sich primär auf das Deployment neuer Features. Eine immer schnellere Entwicklung und Bereitstellung bergen allerdings das Risiko für auftretenden Bugs und Schwachstellen. SRE wirkt dem entgegen indem proaktiv Fehler und Probleme gesucht und diese behoben werden, bevor sie den User erreichen.
  • Mehrwert: zuverlässige IT-Systeme führen dazu, dass weniger Entwicklungskapazität in die Behebung von Fehlern investiert werden muss. Den DEV-Teams steht automatisch mehr Zeit für die Entwicklung neuer Features zur Verfügung. SRE erkennt potenzielle Probleme vor dem Deployment.
  • Kulturwandel: Durch Site Reliability Engineering zieht ein neues Bewusstsein für den Zustand von Systemen in IT-Organisationen ein. Die fortlaufende Suche nach Optimierungspotentialen wirkt sich positiv auf alle beteiligten Teams aus und fördert die übergreifende Zusammenarbeit. Das gemeinsame Verantwortungsbewusstsein, dass durch SRE entsteht, reißt sehr aktiv die berühmten Team-Silos ein.
  • Höherer Automatisierungsgrad: Site Reliability Engineers versuchen fortwährend relevante Worksflows zu automatisieren. Diese Haltung wenden sie ebenfalls auf ihre eigene Arbeit an. Durch den Einsatz einer modernen Tool Chain optimieren sie kontinuierlich ihre Arbeitsprozesse. Dadurch wird die Fehleranfälligkeit durch die Komponente „Mensch“ sukzessive reduziert.
  • Zufriedene Kunden: SRE fokussiert, im Gegensatz zu anderen Betriebsmodellen auf die Verbesserung der Customer Experience, wobei „Customer“ hier sowohl der interne wie auch externe Kunde bzw. User eines Systems sein kann. Mittels SLOs und SLIs definiert SRE klare Ziele für die System-Zuverlässigkeit und somit die Kundenzufriedenheit.

Fazit

Yet another method… Site Reliability Engineering ist mehr. Der Ansatz stellt eine Bereicherung in der modernen IT-Kultur dar, da er sehr pragmatisch die Lücke zwischen Entwicklung und IT-Betrieb schließt. Da wo andere Ansätze eher theoretisch bleiben oder maximal ein Framework des Handelns bereitstellen, wird SRE sehr konkret.
Durch kontinuierliches Monitoring und Analyse der Systemleistung werden Probleme frühzeitig erkannt und tragen zur Optimierung und Zuverlässigkeit bei.
Spannend bleibt die Frage nach der individuellen Adaption des Ansatzes im Unternehmen und der IT-Organisation. Die Prinzipien von Site Reliability Engineering skalieren von hippen Start-Up bis zur Tech-Weltmächten à la Google, Microsoft und Co. Für die Einführung empfiehlt sich das Prinzip der Fokussierung auf einzelne SRE-Artefakte (zum Beispiel zunächst die Implementierung einer Monitoring-Lösung). Festzuhalten bleibt, dass Site Reliability Engineering das Potential hat, IT-Organisationen deutlich aufzuwerten, da sie durch den Ansatz deutlich enger an die Wertschöpfung des Unternehmens gebunden werden.