Site Reliability Engineering (SRE) is een discipline om zeer schaalbare en betrouwbare softwaresystemen te maken door softwaretechnische vaardigheden toe te passen op infrastructurele en operationele problemen. SRE-experts kunnen oplossingen ontwikkelen die ontwikkelaars en operationele activiteiten dichter bij elkaar brengen. Google heeft deze rol als eerste ontwikkeld; lees voor een uitgebreide uitleg het eBook “Site Reliability Engineering” van Google.
SRE-experts (Site Reliability Engineering) hebben raakvlakken met zowel ontwikkelaars als operationele activiteiten, maar niet per se met DevOps zelf. Het concept SRE bestaat al sinds 2003 en is daarmee ouder dan DevOps. Het begrip raakte echter in zwang door Ben Treynor, die het Site Reliability Team van Google heeft opgericht. Volgens Treynor is SRE: “wat er gebeurt als een software-engineer wordt belast met wat voorheen Operations werd genoemd.”
Beide disciplines, dus DevOps en SRE, zijn erop gericht om de releasecyclus te verbeteren door zowel het ontwikkelteam als het operationele team inzicht te geven in elkaars proces gedurende de volledige levenscyclus van een applicatie. Beide disciplines zijn ook voorstander van automatisering en bewaking, waardoor een wijziging die door een ontwikkelaar wordt doorgevoerd eerder in productie kan worden genomen. Zowel bij SRE als bij DevOps wordt dit resultaat nagestreefd zonder de kwaliteit van de code of het product zelf nadelig te beïnvloeden.
SRE en DevOps stellen twee verschillende maar even waardevolle vragen:
DevOps wil weten wat er moet worden gedaan.
SRE wil weten op welke manier.
SRE-experts meten SLI's (Service Level Indicators) en SLO's (Service Level Objectives), terwijl DevOps-teams in de loop van de tijd het aantal foutieve en geslaagde aanvragen bijhouden. SRE heeft dezelfde verantwoordelijkheden met betrekking tot de volgende DevOps-aspecten voor infrastructuurverbetering:
Het SRE-team houdt zich niet bezig met de mate van verzuiling binnen het bedrijf, maar spoort anderen wel aan om het probleem aan te kaarten. Hiertoe gebruikt het team de tools en technieken binnen het hele bedrijf, waarbij wordt geprobeerd alle werknemers erbij te betrekken.
Het SRE-team moet voorkomen dat het aantal fouten uit de hand loopt. Hiervoor wordt een formule gebruikt die bestaat uit SLI- en SLO-scores. Op basis van SLI's wordt het aantal fouten per aanvraag geteld door de aanvraaglatency, de doorvoer van het aantal aanvragen per seconde of het aantal fouten per aanvraag per keer te berekenen. SLO's worden afgeleid van een drempelwaarde en een percentage en geven aan in hoeverre SLI's succesvol zijn gedurende een bepaalde tijd.
Bij SRE is iedereen in voor verandering, maar wel langzaam en methodisch. Bedrijven willen sneller werken en vragen daarom om frequente releases, waarbij producten voortdurend worden bijgewerkt. DevOps en SRE moeten dus snel reageren, maar wel gestaag en gecontroleerd.
Automatiseer handmatige taken, zolang dit zinvol is voor ontwikkelaars en het operationele team.
SRE-teams moeten weten dat alles op de juiste manier verloopt. Hiertoe kunnen ze waarschuwingen instellen voor verschillende scenario's, code laten nakijken door collega's en/of gebruikmaken van unittests.
SRE (Site Reliability Engineering) en DevOps zijn twee disciplines die beide in opmars zijn en ze hebben nogal wat overlap. Zij willen hoofdzakelijk bepalen hoe ze foutieve/geslaagde aanvragen kunnen meten en hoe ze continue betrouwbaarheid voor elke applicatie kunnen realiseren. Betrouwbaarheid houdt niet alleen verband met de infrastructuur, maar geldt voor elke stap, van de applicatiekwaliteit tot de performance en de beveiliging. Het SRE-team houdt zich bezig met elk proces, van broncode tot implementatie. Hierdoor komt SRE aan zijn reputatie als bruggenbouwer tussen het ontwikkelteam en het operationele team.