Was machen Site Reliability Engineers?
Site Reliability Engineers (SREs) haben ein umfassendes Wissen über die Technologie hinter der Website oder Anwendung ihres Unternehmens. Sie verstehen auch die Geschäftsbedürfnisse und -anforderungen ihrer Kund(inn)en.
Site Reliability Engineers (SREs) wenden die Kernprinzipien der Informatik und Softwareentwicklung an, um skalierbare, verteilte und zuverlässige Computing-Systeme zu entwerfen und zu entwickeln. Der von Google geprägte Begriff bezieht sich darauf, dass betriebliche Vorgänge ähnlich wie ein Softwareproblem behandelt werden, denn es geht darum, groß angelegte Softwaresysteme zu entwickeln, die automatisierte Lösungen für komplexe betriebliche Probleme bieten.
Im Kern stützen sich Site Reliability Engineers auf eine Reihe von Entwicklungspraktiken, die Aspekte der Informatik und der Softwareentwicklung in den Betrieb einbeziehen, um den täglichen Workflow sowie die Effizienz und Zuverlässigkeit des Systems zu verbessern. Im Wesentlichen sind SREs für die Bereitstellung, den Schutz und die Weiterentwicklung der Softwaresysteme und -dienste eines Unternehmens verantwortlich.
Hier werden wir den Arbeitsalltag von Site Reliability Engineers erkunden, den Wert, den sie für DevOps-Teams und Unternehmen leisten, und ihre wichtigsten Aufgaben. Wir werden uns auch mit der Messung der Standortzuverlässigkeit befassen und den Unterschied zwischen SREs und DevOps Engineers erklären. Schließlich wird in diesem Artikel das Site Reliability Engineering als Berufswahl beleuchtet.
SREs bringen viele verschiedene Aktivitäten unter einen Hut und teilen ihre Zeit zwischen Systemadministrationsaufgaben und dem Erstellen von Software auf. Im Allgemeinen bedeutet das die Verwaltung mehrerer Projekte, die Konfiguration der Infrastruktur und die Teilnahme an Engineering-Meetings.
Zu den Aufgaben von Systemadministrator(inn)en gehören in der Regel die Aufrechterhaltung der Zuverlässigkeit und Leistung, die Behebung von Problemen und Fehlern, die Automatisierung von Aufgaben, die Reaktion auf Incidents und die Verwaltung von Bereitschaftsdiensten.
Für Entwicklungsaufgaben verwenden SREs einen großen Teil ihrer Zeit darauf, infrastrukturbasierte Prozesse oder Methoden zu entwickeln, die von Softwareentwickler(inne)n im Site Reliability Team oder in funktionsübergreifenden Umgebungen eingesetzt werden. Beispielsweise könnten sie ein Verfahren entwickeln, um die Leistung und die Latenzzeiten der Dienste rund um die Uhr zu überwachen.
In der Entwicklung arbeiten Cycle SREs eng mit Produktmanager(inne)n und ihren Teams zusammen und stellen sicher, dass die festgelegte Vision für ein Produkt mit den nicht-funktionalen Systemanforderungen (Leistung, Latenz, Verfügbarkeit und Sicherheit) vereinbar ist. Außerdem arbeiten sie in der Staging-Phase des Build-Prozesses mit den Entwicklungsteams zusammen, um eine optimale Bereitstellungseffizienz zu gewährleisten.
Indem sie eine strenge Software-Engineering-Mentalität auf die Systemadministration anwenden, fungieren SREs als Bindeglied zwischen Softwareentwicklung und Betrieb. SREs generieren und dokumentieren wichtiges feld- und projektspezifisches Wissen und stellen sicher, dass es zugänglich ist. Sie liefern ein solides Regelwerk für operative Richtlinien, das praktische Arbeit und Redundanz überflüssig macht. Die besten SREs schaffen den Spagat zwischen stetigem Produktwachstum und der Aufrechterhaltung der Zuverlässigkeit für die Kund(inn)en.
Durch ihre rigorose Umsetzung von Software-Engineering-Prinzipien steigern SREs die Zuverlässigkeit von Software in den Produkten des Unternehmens signifikant.
SREs sind dafür verantwortlich, die Zuverlässigkeit aufrechtzuerhalten. Das bedeutet, dass sie automatisierte, optimierte und effiziente Reaktionen auf Fehler ermöglichen und menschliche Fehler in großem Umfang reduzieren sollten. SREs sind intensiv damit beschäftigt, Probleme zu beseitigen, interne Tools zu konfigurieren und System-Benchmarks festzulegen und zu testen. Außerdem entwickeln und überwachen sie robuste Engineering-Pipelines für den alltäglichen Produktbetrieb. SREs arbeiten eng mit Entwicklungstools zusammen und denken wie Softwareentwickler(innen), um betriebliche Herausforderungen zu beheben und die Zuverlässigkeit des Systems zu verbessern.
Im Allgemeinen sind SREs für die Performance, Verfügbarkeit, Zuverlässigkeit, Effizienz, das Änderungsmanagement, die Überwachung und Notfallreaktion eines Systems zuständig. Weitere Kernaufgaben von SREs sind:
-
Überwachung von Service-Level-Indikatoren (SLIs) und Festlegung von Service-Level-Zielen (SLOs) – SREs ermöglichen angemessene SLIs für eine effiziente Performance durch richtige Ressourcennutzung bei möglichst wenigen Fehlern. Außerdem legen sie SLOs für die Überprüfung interner Ziele fest, z. B. für Hochverfügbarkeit.
-
Risikobewertung und Fehlerbudgetierung – SREs sind dafür verantwortlich, Zuverlässigkeitsziele für Systeme festzulegen und entsprechende Risiken mit folgenden Produkteinführungen abzuschätzen.
-
Überwachung von Ausgaben – Ticketerstellung, Protokollierung und Alarme (die verschiedene Stufen menschlicher Intervention erfordern) sind wichtige Aufgaben von SREs.
-
Bedarfsprognose und Kapazitätsplanung – Projekte müssen sorgfältig für zukünftigen Bedarf, Ausfälle und Notfälle geplant werden. SREs arbeiten mit Produktleiter(inne)n zusammen an diesen Aufgaben.
-
Zusammenarbeit – SREs müssen mit verschiedensten Teams zusammenarbeiten, Best Practices umsetzen und Entscheidungen für eine optimale Zuverlässigkeit überprüfen, um eine bessere, abteilungsübergreifende Produktentwicklung zu ermöglichen.
-
Retrospektiven schreiben – Retrospektive Berichte helfen dem Team, von Vorfällen zu lernen und diese in Zukunft zu vermeiden.
Die Standort-Zuverlässigkeit wird typischerweise anhand von drei Dimensionen gemessen.
Es gibt einerseits die SLIs, die verwendet werden, um die Nutzung auf Systemebene, Verzögerungen, Ausfälle, Fehler, Datenverkehr und andere Faktoren zu messen. Die SLIs hängen direkt mit der User Experience zusammen – wenn die Zahlen nicht optimal sind, wirkt sich dies auf die Zufriedenheit der Kund(inn)en aus.
Zweitens gibt es die SLOs, die das Zielniveau für die Zuverlässigkeit eines Produkts oder Dienstes festlegen. Wenn wir beispielsweise einen SLI haben, der vorgibt, dass die Latenz weniger als 500 ms in den letzten 15 Minuten mit einem Perzentil von 95 % ist, müsste bei einem SLO von 99 % der SLI 99 % sein. Dies sind interne Ziele, die das Team für Standort-Zuverlässigkeit und die internen Stakeholder (wie Entwickler(innen) und Produktmanager(innen) gemeinsam vereinbaren müssen.
Schlussendlich gibt es das Service Level Agreement (SLA). Dies kann eine implizite oder explizite Vereinbarung auf Geschäftsebene zwischen einem Unternehmen und seinen Kund(inn)en sein, in der die Konsequenzen festgelegt werden, die folgen, wenn das Unternehmen sein SLA nicht einhält. Sie können zudem Fehlerbudgets enthalten, die das Risiko enthalten, die ein SRE für die Bereitstellung eines Dienstes wie Wartung und Verbesserung eingehen kann, ohne gegen die SLAs zu verstoßen.
Der Unterschied zwischen diesen beiden Positionen ist, dass Site Reliability Engineers sich hauptsächlich auf die Verbesserung der Systemverfügbarkeit und -zuverlässigkeit konzentrieren, während DevOps Engineers daran arbeiten, die Geschwindigkeit und Automatisierung von Entwicklung und Bereitstellung zu verbessern.
Von SREs wird erwartet, dass sie Software effizient schreiben und bereitstellen und dabei die Zuverlässigkeit des Codes untersuchen und Lösungen finden, um Fehler zu beheben. Während DevOps Engineers versuchen, Prozesse zu automatisieren und im gesamten Produktlebenszyklus zu überwachen, minimieren SREs Risiken, indem sie Redundanzen untersuchen und das Wachstum vorantreiben.
Um SRE zu werden, benötigen Fachkräfte einige Jahre Erfahrung und Wissen in einer oder mehrere Programmiersprachen wie Python, Ruby oder Java. Sie sollten außerdem Erfahrung im Shell-Scripting mitbringen, mit Versionskontrollsystemen wie Git mit GitLab umgehen können und kontinuierliche Tests und Bereitstellungspipelines automatisieren können (CI/CD).
Darüber hinaus sollten potenzielle SREs mit SQL- und NoSQL-Datenbanken vertraut sein. Erfahrungen in der Containerisierung, wie Docker und Kubernetes, sind ebenfalls sehr wünschenswert.
Beim Site Reliability Engineering geht es um das Design und die Entwicklung skalierbarer, verteilter und zuverlässiger Computing-Systeme. SREs verbringen ihren Arbeitstag damit, Systemadministrationsaufgaben auszuführen und Software zu erstellen. Sie bringen ein Software-Engineering-Mindset in die Systemadministration und agieren so als Bindeglied zwischen Softwareentwicklung und Betrieb.
Site Reliability Engineering ist eine abwechslungsreiche, lohnende und lukrative Karriere.
Bist du bereit?
Erfahre mehr darüber, was dein Team mit der umfassendsten KI-gestützten DevSecOps-Plattform erreichen kann.