Welche Bedeutung hat Site Reliability Engineering? Site Reliability Engineering (SRE) ist der Ansatz zur Erstellung äußerst skalierbarer und zuverlässiger Softwaresysteme. Dabei werden Software-Engineering-Verfahren auf infrastrukturbezogene und operative Probleme angewandt. Erfahrene Site Reliability Engineers können individuelle Lösungen für Entwicklungs- und Operations-Teams erstellen.
Früher manuell ausgeführte Aufgaben, die zuvor von Operations-Teams erledigt werden mussten, werden nun automatisiert von einer Software durchgeführt, um Probleme zu beheben und Produktionsumgebungen zu verwalten. SRE hilft Teams dabei, ein Gleichgewicht zwischen der Bereitstellung neuer Funktionen und der Zuverlässigkeit für die Benutzer zu finden. Standardisierung und Automatisierung sind wichtige Bestandteile des SRE-Modells. Site Reliability Engineers suchen ständig nach Möglichkeiten, Operations-Aufgaben zu verbessern und zu automatisieren.
Site Reliability Engineering by Google? Google war Pionier dieser Rolle; eine eingehende Erklärung finden Sie im Google-E-Book „Site Reliability Engineering“.
DevOps and Site Reliability Engineering im direkten Vergleich, was sind die Gemeinsamkeiten und welche Unterschiede gibt es? SREs (Site Reliability Engineers) arbeiten an der Schnittstelle von Entwicklung und Betrieb, aber nicht unbedingt innerhalb von DevOps selbst. Das Konzept des SRE gibt es seit 2003, was bedeutet, dass es älter als DevOps ist. Der Begriff wurde durch Ben Treynor bekannt, der das Site Reliability Team von Google zusammenstellte. Laut Treynor ist SRE das, „was passiert, wenn ein Software-Ingenieur mit dem beauftragt wird, was früher als Operations bezeichnet wurde“.
Beide Disziplinen, DevOps und SRE, haben die Verbesserung des Versionszyklus zum Ziel, indem sie Entwickler und Ops dabei unterstützen, während des gesamten Applikationslebenszyklus beide Seiten des Prozesses im Auge zu behalten. Sie setzen sich auch für die Automatisierung und Überwachung ein, indem sie die Zeit von der Änderung durch einen Entwickler bis zur Produktionsreife verkürzen. SREs und DevOps zielen auf dieses Ergebnis ab, ohne die Qualität des Codes oder des Produkts selbst zu beeinträchtigen.
Site Reliability Engineering and DevOps gehören fest zusammen, haben jedoch andere Intentionen. SREs und DevOps stellen zwei unterschiedliche, aber gleich wertvolle Fragen:
DevOps fragt, was getan werden muss.
SRE fragt, wie es getan werden kann.
Site Reliability Engineers messen Service-Level Indicators (SLIs) und Service-Level Objectives (SLOs), während DevOps-Teams die Fehlerquote und die Erfolgsquote im Zeitverlauf messen. SRE-Teams kümmern sich um Bereitstellung, Konfiguration und Überwachung von Code sowie um Verfügbarkeit, Latenz, Änderungsmanagement, Notfallreaktion und Kapazitätsmanagement in der Produktion. Die Rolle des Site Reliability Engineering (SRE) erfordert daher Fachkenntnisse in Systemadministration, Softwareentwicklung mit Operations-Erfahrung oder IT-Operations mit Entwicklungsfähigkeiten.
Durch den brillanten Einsatz von SRE können Fachkräfte über Service Level Agreements (SLAs) die Einführung neuer Features steuern und die erforderliche Zuverlässigkeit anhand von Service-Level Indicators (SLIs) und Service-Level Objectives (SLOs) einschätzen. Was sind SLIs? Service Level Indicators, also SLIs, sind dafür zuständig, verschiedene Punkte, wie Verfügbarkeit, Fehlerrate und Systemdurchsatz, zu überprüfen.
Was sind SLOs? SLOs beruhen letztendlich auf Zielwerten, die wiederum auf SLIs basieren. Das Fehlerbudget gibt dann an, wie hoch die Ausfallzeit sein darf. Denn es kommt nicht darauf an, dass alles immer richtig ist. Beim SRE werden bewusst mögliche Fehler eingerechnet. Die Balance zwischen Operations und Entwicklung ist entscheidend für SRE. Übermäßiger Fokus auf den Betrieb von Anwendungen sollte vermieden werden, damit genügend Zeit für Entwicklungsarbeiten bleibt.
Die SREs leisten Unterstützung bei den folgenden wichtigen Grundlagen der DevOps-Infrastrukturverbesserung:
SREs selbst kümmern sich nicht um die Anzahl der Silos im Unternehmen, regen aber alle anderen zur Besprechung des Themas an. Dazu werden Tools und Techniken im gesamten Unternehmen eingesetzt, die dazu beitragen, die Eigentümerschaft auf alle Mitarbeiter zu verteilen.
Wie wir bereits kurz erwähnt haben, kommt es beim SRE immer wieder zu Fehlern oder Ausfällen. Dies ist normal und kein Problem. Jedoch müssen SREs sicherstellen, dass nicht zu viele Fehler oder Ausfälle auftreten.
Dazu wird eine Formel verwendet, die aus SLI- und SLO-Scores besteht. SLIs (Service Level Indicators) zählen Ausfälle pro Anforderung, indem sie die Anforderungslatenz, den Anforderungsdurchsatz pro Sekunde oder die Ausfälle pro Anforderung pro Zeit berechnen.
SLOs (Service Level Objectives) werden aus Schwellwerten und Prozentwerten abgeleitet und stellen den Erfolg von SLIs über einen bestimmten Zeitraum dar.
SREs befürworten Änderungen, aber in einer langsamen, methodischen Weise. Da Unternehmen schneller vorankommen möchten, fordern sie häufig neue Versionen, um das Produkt kontinuierlich zu aktualisieren. DevOps und SREs müssen also schnell reagieren, aber ein stabiles, kontrolliertes Tempo aufrechterhalten.
Automatisieren Sie, solange Entwickler und Betrieb vom Wegfall manueller Aufgaben profitieren und sich auf das Wesentliche konzentrieren können. Mit Site Reliability Engineering (SRE) ist dieser Weg leichter gemacht.
SRE-Teams müssen wissen, dass alles sich in die richtige Richtung bewegt. Dazu können Warnungen für verschiedene Szenarien eingerichtet, Peer-Code-Überprüfung durchgeführt und/oder Geräte-Tests verwendet werden. Denn die Fehlerquellen und Ausfällen im SRE sollten stets so gut wie möglich minimiert werden.
SRE (Site Reliability Engineering) und DevOps sind zwei Trenddisziplinen mit einer gewissen Überschneidung. Ihre wesentlichen Ziele sind das Verständnis der Erfolgs- oder Fehlermessung sowie die Frage, wie sich kontinuierliche Zuverlässigkeit für jede Applikation erzielen lässt. Bei Zuverlässigkeit geht es nicht nur um die Infrastruktur – sie ist für jeden Schritt relevant, von der Anwendungsqualität über die Leistung bis hin zur Sicherheit. Die SREs kümmern sich um jeden Prozess vom Quellcode bis zur Implementierung. Damit verdienen sie sich ihren Ruf, eine echte Brücke von der Entwicklung bis zu Operations zu sein.