Anmelden / Registrieren Konto

DevOps

Was ist SRE (Site Reliability Engineering)?

Jump to section

Site Reliability Engineering (SRE) ist ein Software-Engineering-Ansatz für IT-Operations. SRE-Teams verwenden Software als Tool zur Verwaltung von Systemen, Behebung von Problemen und Automatisierung von Operations-Aufgaben.

SRE übernimmt diejenigen Aufgaben, die von Operations-Teams in der Vergangenheit häufig manuell ausgeführt wurden. Diese werden an Ingenieure oder Ops-Teams weitergegeben, die Software und Automatisierung zur Behebung von Problemen und Verwaltung von Produktionssystemen verwenden. 

SRE ist eine wertvolle Praktik bei der Erstellung skalierbarer und hochzuverlässiger Softwaresysteme. Es hilft Ihnen bei der Verwaltung großer Systeme mithilfe von Code, der für Systemadministratoren, die Tausende oder Hunderttausende von Computern verwalten, skalierbarer und nachhaltiger ist. 

Das Konzept des Site Reliability Engineering stammt vom Google Engineering-Team und wird Ben Treynor Sloss zugeschrieben. 

SRE hilft Teams dabei, ein Gleichgewicht zwischen der Veröffentlichung neuer Features und ihrer Zuverlässigkeit für Nutzer zu finden.

Standardisierung und Automatisierung sind zwei wichtige Komponenten des SRE-Modells. Site Reliability Engineers oder Funktionssicherheitsingenieure sollten immer nach Möglichkeiten suchen, Operations-Aufgaben zu verbessern und zu automatisieren.

Auf diese Weise trägt SRE dazu bei, die Zuverlässigkeit eines Systems umgehend zu steigern und es mit zunehmendem Wachstum zu verbessern. 

SRE unterstützt Teams, die IT-Operations von einem traditionellen Ansatz auf eine cloudnative Strategie umstellen.

 

Was ist die Aufgabe eines Site Reliability Engineers?

Es handelt sich hier um eine einzigartige Rolle, die entweder einen Hintergrund als Softwareentwickler mit zusätzlicher Operations-Erfahrung oder als Systemadministrator oder in einer IT-Operations-Rolle mit Softwareentwicklungsfähigkeiten erfordert. 

SRE-Teams sind verantwortlich für die Bereitstellung, Konfiguration und Überwachung von Code sowie Verfügbarkeit, Latenz, Änderungsmanagement, Notfallreaktion und Kapazitätsmanagement von Services in der Produktion.

Service Level Indicators und Service Level Objectives

Mithilfe von Site Reliability Engineering können Teams über Service Level Agreements (SLAs) bestimmen, welche neuen Features wann eingeführt werden können, um die erforderliche Zuverlässigkeit des Systems mithilfe von Service Level Indicators (SLIs) und Service Level Objectives (SLOs) zu definieren. 

SLIs sind definierte Maßnahmen von spezifischen Aspekten bereitgestellter Service Levels. Zu den wichtigsten SLIs gehören Latenz, Verfügbarkeit, Fehlerrate und Systemdurchsatz. SLOs basieren auf dem Zielwert oder -bereich eines spezifischen auf dem SLI basierenden Service Levels.

Ein SLO für die erforderliche Systemzuverlässigkeit wird dann basierend auf der als akzeptabel angesehenen Ausfallzeit bestimmt. Diese Ausfallzeit wird als „Fehlerbudget“ bezeichnet, also der maximal zulässige Schwellenwert für Fehler und Ausfälle. 

Zuverlässigkeit mit Fehlerbudget

Mit SRE wird keine 100%ige Zuverlässigkeit erwartet. Ausfälle sind de facto eingeplant und akzeptiert. 

Das Entwicklungsteam kann das Fehlerbudget in Anspruch nehmen, wenn ein neues Feature veröffentlicht wird. Mithilfe des SLO sowie unter Berücksichtigung des Fehlerbudgets kann es dann bestimmen, ob ein Produkt oder ein Service eingeführt werden kann.

Wenn ein Service innerhalb des Fehlerbudgets ausgeführt wird, kann das Entwicklungsteam den Start jederzeit initiieren. Wenn er jedoch aktuell zu viele Fehler aufweist oder länger ausfällt, als es das Fehlerbudget zulässt, können keine neuen Starts durchgeführt werden, bis sich die Fehler im Rahmen des Budgets bewegen.   

Das Entwicklungsteam führt automatisierte Operations-Tests durch, um die Zuverlässigkeit nachzuweisen. 

Best Practices für Site Reliability Engineers

Site Reliability Engineers teilen ihre Zeit zwischen Operations-Aufgaben und Projektarbeit auf. Gemäß den Best Practices von Google für SRE darf ein Site Reliability Engineer maximal 50 % seiner Zeit für Operations aufwenden. Dieser Wert sollte überwacht werden, um sicherzustellen, dass er nicht überschritten wird. 

Der Rest der Zeit sollte für Entwicklungsaufgaben wie das Erstellen neuer Features, das Skalieren des Systems und das Implementieren der Automatisierung aufgewendet werden.

Darüber hinausgehende operative Aufgaben und leistungsschwache Services können zwecks Ausführung wieder dem Entwicklerteam zugewiesen werden. So lässt sich vermeiden, dass der Site Reliability Engineer zu viel Zeit mit dem Betrieb von Anwendungen oder Services verbringt. 

Die Automatisierung ist ein wichtiger Bestandteil der Rolle des Site Reliability Engineers. Wenn er sich wiederholt mit einem Problem befassen muss, wird die dazugehörige Lösung automatisiert. Dies trägt auch dazu bei, dass Operations-Aufgaben maximal die Hälfte seiner Arbeitslast ausmachen. 

Die Aufrechterhaltung des Gleichgewichts zwischen Operations- und Entwicklungsarbeit ist eine Schlüsselkomponente von SRE. 

DevOps SRE

Das DevOps-Konzept umfasst die Aspekte Unternehmenskultur, Automatisierung und Plattformdesign mit dem Ziel, den geschäftlichen Mehrwert und die Reaktionsfähigkeit durch die schnelle Bereitstellung hochwertiger Services zu steigern. SRE kann als Implementierung von DevOps betrachtet werden.

Denn wie bei DevOps geht es auch bei SRE um Teamkultur und Beziehungen. SRE wie auch DevOps soll die Lücke zwischen Entwicklungs- und Operations-Teams schließen, um eine beschleunigte Servicebereitstellung zu gewährleisten. 

Schnellere Lifecycles für die Anwendungsentwicklung, eine verbesserte Servicequalität und -zuverlässigkeit sowie weniger IT-Zeit pro entwickelter Anwendung sind Vorteile, die sowohl mit DevOps- als auch mit SRE-Praktiken erzielt werden können.

SRE unterscheidet sich dahingehend von DevOps, dass es sich auf Site Reliability Engineers innerhalb des Entwicklungsteams stützt, die auch über einen Operations-Hintergrund verfügen. So werden Kommunikations- und Workflow-Probleme vermieden.

Die Rolle des Site Reliability Engineers selbst ist eine Kombination aus den Fähigkeiten von DevOps- und Operations-Teams, was eine Überschneidung der Verantwortlichkeiten erfordert. 

SRE kann DevOps-Teams helfen, deren Entwickler mit Operations-Aufgaben überfordert sind und jemanden mit spezielleren Ops-Fähigkeiten benötigen. 

In Bezug auf Code und neue Features konzentriert sich DevOps darauf, die Entwicklungs-Pipeline effizient zu durchlaufen, während SRE darauf fokussiert ist, ein Gleichgewicht zwischen Funktionssicherheit und der Erstellung neuer Features aufrechtzuerhalten. 

Moderne Anwendungsplattformen, die auf Container-Technologie, Kubernetes und Microservices basieren, sind für DevOps-Praktiken von großer Bedeutung und unterstützen die Bereitstellung sicherer und innovativer Software-Services.

 

Technologie zur Unterstützung von SRE

SRE basiert auf der Automatisierung routinemäßiger Aufgaben sowie der Standardisierung über den gesamten Lifecycle einer App. Mit Linux®-Containern erhält Ihr Team die zugrunde liegende Technologie, die Sie für eine cloudnative Entwicklung brauchen. Container unterstützen eine einheitliche Umgebung für die Entwicklung, Bereitstellung, Integration und Automatisierung.

Und Kubernetes ist die moderne Art, Operationen mit Linux-Containern zu automatisieren. Mit Kubernetes können Sie einfach und effizient Cluster verwalten, auf denen Linux-Container in Public, Private oder Hybrid Clouds ausgeführt werden.

Mit der richtigen Plattform können Sie am besten von den kulturellen und prozesstechnischen Änderungen profitieren, die Sie bereits eingeführt haben. Red Hat® OpenShift® ist die unternehmensfähige Kubernetes-Plattform für SRE-Initiativen.

Die Tools, die Sie für SRE benötigen

Red Hat Ansible Automation

Eine einfache, agentenlose IT-Automatisierungstechnologie, mit der sich Ihre aktuellen Prozesse verbessern, Anwendungen migrieren und optimieren lassen und die nur eine Sprache für sämtliche DevOps-Verfahren in Ihrem Unternehmen verwendet.

Red Hat OpenShift

Eine unternehmensfähige Kubernetes-Container-Plattform, auf der Operationen für den gesamten Stack automatisiert werden, um Hybrid- und Multi-Clouds noch einfacher verwalten zu können. 

DevOps hat noch viel mehr zu bieten