Site Reliability Engineering (SRE) ist eine Software-Engineering-Praxis, die DevOps und traditionellen IT-Betrieb kombiniert, um Kundenprobleme zu lösen, IT-Betriebsaufgaben zu automatisieren, die Softwarebereitstellung zu beschleunigen und IT-Risiken zu minimieren.
SRE unterstützt Resilienz, Redundanz und Zuverlässigkeit im DevOps-Zyklus und befasst sich mit der täglichen Implementierung von Softwareprogrammen. Techniker für die Zuverlässigkeit von Websites halten sich in der Regel an die 50-50-Regel: Sie widmen die Hälfte ihrer Zeit der Lösung von Kundenproblemen, wie der Verwaltung von Eskalationen und der Reaktion auf Vorfälle, und die andere Hälfte der Automatisierung des IT-Betriebs. Zu diesen Vorgängen gehören das Produktionssystemmanagement, das Change Management, die Reaktion auf Zwischenfälle und Notfallmaßnahmen.
SRE-Teams schließen die Lücke zwischen der Funktionsweise von Softwareentwicklern und der Funktionsweise in realen Situationen. Site Reliability Engineers arbeiten direkt mit Kunden zusammen, um deren Probleme zu beheben und Daten zur Benutzererfahrung zu sammeln. Die SRE-Teams geben diese Daten an die Entwicklungsteams zurück und geben ihnen tiefe Erkenntnisse in die Leistung der Software und die notwendigen Aktualisierungen.
SREs wissen, dass Ausfälle unvermeidlich sind. Ihre Aufgabe ist es, sowohl (durch Prozesse wie die Root Cause Analysis) die Ursachen unmittelbarer Probleme zu identifizieren als auch Überwachungs- und Protokollierungsdaten zu nutzen, um potenzielle zukünftige Ausfälle vorherzusagen. Dann richten sie Automatisierungen ein, um diese Probleme zu lösen, und bauen Ausfallsicherheit und Redundanz in das System ein.
Durch diese automatisierte Überwachung großer Softwaresysteme müssen Systemadministratoren Aufgaben im Bereich IT-Operations nicht mehr manuell erledigen. Durch die Eliminierung manuell auszuführender Funktionen sparen IT-Teams Zeit, können Betriebsaufgaben genauer ausführen und sich auf die Aufrechterhaltung der Anwendungsleistung konzentrieren.
Ein Site Reliability Engineer ist eine technische Position, die Erfahrung sowohl in der Softwareentwicklung als auch im IT-Betrieb erfordert. Die Kenntnis dieser Positionen ermöglicht es den SRE-Teams, ihre Rolle bei der Unterstützung des Lebenszyklus der Softwareentwicklung zu erfüllen. SRE basiert auf einer Strategie der Ausfallsicherheit durch konsequente Automatisierung von Prozessen.
Traditionell konzentrierten sich die Praktiken des Site Reliability Engineering auf die Durchführung von IT-Betriebs- und Systemadministrationsaufgaben. Zu diesen Aufgaben gehören das Analysieren von Protokollen, die Leistungsanalyse, das Anwenden von Patches, das Testen von Produktionsumgebungen, das Vorfallmanagement und die Durchführung von Postmortem-Analysen. Diese Aufgaben wurden zunächst manuell ausgeführt, was zeitaufwändig war und zu menschlichen Fehlern führte. Die Modernisierung des Site Reliability Engineering beinhaltet die Automatisierung dieser manuellen Aufgaben.
Überwachung und Protokollierung spielen bei SRE eine wichtige Rolle. SRE-Teams verwenden Überwachungs-Tools, um zu verfolgen, was in den Softwaresystemen in Echtzeit passiert. Die Überwachung ermöglicht es, unmittelbare technische Probleme zu beheben und hilft den Teams, künftige Probleme vorherzusehen und zu lösen, bevor sie auftreten.
Protokolle dienen als Archive, die analysiert werden können, um Einblicke in die Funktionsweise von Systemen zu gewinnen und die Observability des Systems zu verbessern. Die Protokollierung erstellt eine Roadmap, die SRE-Teams hilft, die Abfolge von Ereignissen zu verstehen, die einen unerwarteten Fehler verursacht haben. Die Techniker können die Behebung des Fehlers automatisieren und verhindern, dass er erneut auftritt. Sowohl die Überwachung als auch die Protokollierung helfen Ingenieuren dabei, Fehlerquellen zu identifizieren und Probleme programmatisch durch Automatisierung zu lösen, sodass sie nicht manuell behoben werden müssen.
SRE-Teams suchen auch nach Systemmängeln durch einen Prozess, der als Chaos-Engineering bezeichnet wird. Chaos-Engineering ist eine Strategie, die Site Reliability Engineers anwenden, um absichtlich Ausfälle in Produktions- und Vorproduktionsumgebungen zu verursachen. Der Zweck des Chaos-Engineering besteht darin, die Auswirkungen von Produktionsausfällen auf Softwaresysteme zu verstehen und bessere Pläne zu entwickeln, um Ausfälle in Zukunft zu mindern.
SRE konzentriert sich auch auf die Kapazitätsplanung, einen Prozess, der die Ressourcen bestimmt, die für die Ausführung wesentlicher Geschäftsfunktionen, die Skalierung dieser Geschäftsfunktionen und die Entwicklung neuer Anwendungen und Funktionen erforderlich sind. Darüber hinaus legen SRE-Teams Metriken fest, die zur Bewertung der Bereitstellung von Updates und der Implementierung neuer Funktionen verwendet werden.
Site Reliability Engineers verwenden verschiedene Metriken, um die Einheitlichkeit der Servicebereitstellung und die Zuverlässigkeit von Softwaresystemen zu verfolgen, darunter:
SLAs (Service Level Agreements) legen die Bedingungen zwischen einem Dienstanbieter und einem Kunden fest. Diese Vereinbarungen schreiben das Leistungsniveau, die vereinbarten Indikatoren für die Leistungsmessung und die Folgen der Nichterbringung von Dienstleistungen vor. Ein häufiger Dienst, der in einer SLA beschrieben wird, ist die Betriebszeit oder die Zeit, die ein Dienst verfügbar ist.
Das Fehlerbudget ist das Werkzeug, mit dem ein SRE-Team die Servicezuverlässigkeit eines Unternehmens automatisch mit dem Tempo der Softwareentwicklung und -innovation in Einklang bringt. Fehlerbudgets legen ein Fehlerrisikoniveau fest, das mit den Service Level Agreements übereinstimmt.
Eine Betriebszeit von 99,999 %, die als „Fünf-Neunen-Verfügbarkeit“ bezeichnet wird, ist ein gängiger SLA-Schwellenwert. Das bedeutet, dass das monatliche Fehlerbudget – die gesamte Ausfallzeit, die ohne vertragliche Konsequenzen für einen bestimmten Monat zulässig ist – etwa 4 Minuten und 23 Sekunden beträgt. Wenn ein Entwicklungsteam neue Funktionen oder Verbesserungen an einem System implementieren möchte, darf das System das Fehlerbudget nicht überschreiten.
Fehlerbudgets helfen Entwicklungsteams und Betriebsteams, die Stabilität und Leistung von Services zu verbessern. Sie helfen auch dabei, datengesteuerte Entscheidungen über die Bereitstellung neuer Funktionen oder Anwendungen zu treffen und Innovation zu maximieren, indem Risiken innerhalb akzeptabler Grenzen eingegangen werden.
SRE-Teams helfen auch bei der Festlegung von Service Level Objectives (SLOs), einem vereinbarten Leistungsziel für einen bestimmten Service über einen bestimmten Zeitraum. SLOs definieren den erwarteten Status von Diensten und helfen Stakeholdern, den Zustand bestimmter Dienste zu verwalten und SLAs einzuhalten.
SLOs werden anhand von Service Level Indicators (SLIs) gemessen. SLIs sind quantitative Messungen, die als Prozentsätze, Durchschnittswerte oder Raten dargestellt werden. Dazu gehört die tatsächliche Messung von Diensten wie Betriebszeit, Latenz, Durchsatz und Fehlerraten.
DevOps ist eine Softwareentwicklungsmethodik, die die Bereitstellung qualitativ hochwertigerer Anwendungen und Dienste beschleunigt, indem sie die Arbeit von Softwareentwicklungs- und IT-Betriebsteams kombiniert und automatisiert. Mit DevOps wird der Softwareentwicklungszyklus (SDLC) automatisiert; Entwicklungs- und Betriebsteams erhalten mehr gemeinsame Verantwortung und alle relevanten Stakeholdern erhalten Eingaben in den SDLC.
SRE und DevOps sind komplementäre Strategien in der Softwareentwicklung, die Silos aufbrechen und zu einer effizienteren und zuverlässigeren Softwarebereitstellung führen.
Während sich DevOps-Teams auf die Lösung der Frage konzentrieren: „Was soll diese Software tun?“ arbeiten SRE-Teams an der Beantwortung der Frage: „Wie kann diese Software bereitgestellt und gewartet werden, damit sie bei Bedarf funktioniert?“ SRE-Teams stellen DevOps-Teams reale Daten zu Software-Leistung zur Verfügung und bringen so ein Gleichgewicht zwischen praktischen Daten in die theoretische Welt der Softwareentwicklung.
Wie SRE macht auch DevOps ein Unternehmen agiler: Es sorgt dafür, dass sich die Notwendigkeiten, einerseits Anwendungen und Änderungen schneller bereitzustellen und andererseits die Produktionsumgebung nicht zu überlasten, die Waage halten. Sowohl SRE als auch DevOps streben dieses Gleichgewicht durch die Festlegung eines akzeptablen Fehlerrisikos an. DevOps-Teams konzentrieren sich auf die Durchführung von Updates und die Bereitstellung neuer Funktionen, während die SRE-Praktiken dafür sorgen, die Zuverlässigkeit der Systeme bei ihrer Skalierung zu schützen.
DevOps- und SRE-Teams rationalisieren die Kommunikationsmethoden und schaffen eine ständige Feedbackschleife. Eine solche Schleife könnte wie folgt funktionieren: Wenn ein SRE-Team die Ursache eines Fehlers aufdeckt, sendet es seine Erkenntnisse an das DevOps-Team, das ein Update für die nächste Version der Software entwickeln kann. In der Zwischenzeit erstellen SREs Automatisierungen, um das Problem zu lösen, und verfolgen die Überwachungs- und Protokollierungsdaten, um sicherzustellen, dass das Problem behoben wurde.
Site Reliability Engineering unterstützt Unternehmen nicht nur beim DevOps-Erfolg, sondern auch in folgenden Bereichen:
Wenn Unternehmen von herkömmlichen IT- und On-Premises-Rechenzentren in die Hybrid Cloud migrieren, generieren sie oft größere Mengen an Betriebsdaten. SRE spielt eine kritische Rolle bei der Nutzung dieser Daten zur Automatisierung der Systemadministration, des Betriebs und der Reaktion auf Vorfälle und zur Verbesserung der Zuverlässigkeit des Unternehmens, wenn die IT-Umgebung komplexer wird.
Das Entwickeln, Bereitstellen und Skalieren von Anwendungen kann mit einem cloudnativen Entwicklungsansatz vereinfacht werden – besonders die Erstellung von Anwendungen als Microservices und deren Bereitstellung in Containern. Durch cloudnative Entwicklung entsteht aber auch eine immer stärker verteilte Umgebung mit aufwändigerer Verwaltung, Bedienung und Leitung.
Ein SRE-Team kann das schnelle, durch einen cloudnativen Ansatz ermöglichte Innovationstempo unterstützen und die Systemzuverlässigkeit sicherstellen oder verbessern, ohne die DevOps-Teams stärker unter Druck zu setzen.
Nutzen Sie die Leistungsfähigkeit von KI und Automatisierung, um Probleme im gesamten Anwendungs-Stack proaktiv zu lösen.
Gehen Sie über einfache Aufgabenautomatisierungen hinaus und bewältigen Sie anspruchsvolle, kundenorientierte und umsatzfördernde Prozesse mit integrierter Akzeptanz und Skalierung.
Erfahren Sie, wie KI für den IT-Betrieb die Erkenntnisse liefert, die Sie benötigen, um die Leistung Ihres Unternehmens entscheidend zu verbessern.