DevOps vs SRE: wat zijn de overeenkomsten en verschillen?
DevOps is een filosofie en werkwijze die inmiddels stevig geworteld is in het landschap van moderne softwareontwikkeling. De methodiek bouwt een brug tussen ontwikkelaars en operationele teams, waarbij het versnellen en verbeteren (processtappen automatiseren, de kans op fouten verkleinen) van het ontwikkeltraject het hoofddoel is.
Naast DevOps is er nog een beweging die binnen de softwareontwikkeling aan populariteit wint: Site Reliability Engineering (SRE). Het concept komt uit de koker van Google, een bedrijf waar ze wel meer innovatieve dingen bedenken, zoals Kubernetes. Maar wat is SRE precies? Hoe verhoudt deze visie op softwareontwikkeling zich tot DevOps? En wat zijn de belangrijkste overeenkomsten en verschillen tussen de twee? Je leest het in dit blogartikel.
De filosofie achter DevOps
DevOps (een combinatie van ‘development’ en ‘operations’) is een filosofie en werkwijze die ontwikkelaars (developers) en productieteams samenbrengt. Bouwen, testen, implementeren en opleveren: het valt allemaal onder de verantwoordelijkheid van hetzelfde team. Binnen die zogenaamde DevOps-teams is er veel aandacht voor de onderlinge samenwerking, zodat mensen met verschillende rollen elkaar optimaal aanvullen.
Processen die teams voorheen handmatig moesten uitvoeren en die veel tijd in beslag namen, kun je met DevOps-hulpmiddelen en -procedures snel en continu uitvoeren. Voorbeelden zijn het bijwerken van code, het inrichten van een nieuwe omgeving of het continu geautomatiseerd testen van de applicatie. Daarnaast is het makkelijker om aan belangrijke betrouwbaarheids- en veiligheidsstandaarden te voldoen omdat deze zijn geïntegreerd in het proces.
Lees ook de blog: De rol van DevOps bij applicatieontwikkeling
Wat is SRE?
Site Reliability Engineering (SRE) is een concept van Google en bedacht door Ben Treynor Sloss. Het ontstond na een onderzoek naar de conflicten tussen operations, specialisten die er vooral voor willen zorgen dat functies geen problemen opleveren voor eindgebruikers, en ontwikkelingsteams die nieuwe functies ontwikkelen en die snel willen uitbrengen zodra de features klaar zijn voor een implementatie. SRE streeft ernaar om deze twee werelden harmonieus samen te brengen. De discipline omvat aspecten van software engineering en past deze toe op infrastructuur en operationele problemen. Het belangrijkste doel van SRE is het creëren van schaalbare en betrouwbare softwaresystemen.
Google hanteert een aantal principes die leidend zijn voor het gebruiken van SRE in de ontwikkelpraktijk:
- Probeer niet krampachtig risico’s te mijden. SRE gaat uit van een neutrale aanpak van servicebeheer met behulp van foutbudgetten.
- Elimineer of automatiseer repetitieve taken die veel bloed, zweet en tranen kosten en een hoog risico op fouten met zich meebrengen.
- Controleer gedistribueerde systemen door altijd op de hoogte te zijn van wat er binnen je organisatie gebeurt.
- Houd zorgvuldig rekening met releases om ervoor te zorgen dat ze consistent zijn en niet bijdragen aan uitval (release engineering).
- Streef naar eenvoud. Een systeem dat te complex is, kan de betrouwbaarheid verlagen en is lastiger terug te schalen.
Verschillen tussen DevOps en SRE
Een belangrijk verschil tussen DevOps en SRE is dat DevOps zich vooral richt op de vraag wat er gedaan moet worden, terwijl bij SRE de focus ligt op het hoe. DevOps is een cultuurverandering en mindset die ernaar streeft om IT en softwareontwikkeling eenvoudiger, sneller en goedkoper te maken om zo snel meer waarde te leveren aan gebruikers, klanten en ketenpartners. SRE houdt zich primair bezig met werk dat traditioneel door een operationeel team gedaan wordt. Je zou kunnen zeggen dat SRE een praktische uitwerking van de filosofie achter DevOps is die zich richt op het maken van de volgende automatiseringsslag.
Andere verschillen tussen DevOps en SRE zijn:
- DevOps richt zich op het implementeren van nieuwe functionaliteiten in een (software)product, terwijl SRE er vooral voor zorgt dat de foutenratio in productie niet omhoog gaat door het toevoegen van die extra features.
- De focus. De primaire nadruk van DevOps ligt op de continuïteit en snelheid van productontwikkeling, terwijl het accent bij SRE ligt op de betrouwbaarheid, schaalbaarheid en beschikbaarheid van het systeem.
- De teamstructuur. Een typisch DevOps-team bestaat uit professionals met specifieke rollen en verantwoordelijkheden. Denk aan product owners, teamleiders, cloudarchitecten, softwareontwikkelaars, QA-ingenieurs, releasemanagers en systeembeheerders. In SRE-teams vind je daarentegen vooral ingenieurs met operationele kwaliteiten en ontwikkelingsvaardigheden.
- De rol. Waar DevOps zich vooral richt op het ontwerpen van applicaties en systemen vanuit een zakelijk vraagstuk en concreet businessdoel (meer leads genereren, klanten of partners een platform voor selfservice aanbieden, e-commerce verbeteren), is SRE overwegend bezig met concrete operationele problemen en vraagstukken. Denk aan productiefouten, infrastructurele issues (geheugen, opslag), security en monitoring.
Overeenkomsten tussen DevOps en SRE
Naast de verschillen zijn er zeker ook overeenkomsten tussen DevOps en SRE. Zo stimuleren ze allebei automatisering, communicatie en samenwerking. Ook de toolsets die DevOps- en SRE-teams gebruiken zijn vaak grotendeels gelijkaardig. Denk bijvoorbeeld aan oplossingen voor loganalyse en monitoring zoals Splunk en NewRelic. Dergelijke tools maken het makkelijker om snel bugs of problemen te ontdekken en de performance van softwaresystemen te verbeteren.
Daarnaast gebruik je zowel in DevOps als SRE metrics die inzicht geven in het gedrag van een applicatie of systeem. Bepaalde metrics zijn ook waardevol voor beide specialismen. Denk bijvoorbeeld aan responstijden, foutenratio’s en downtime. Als zowel DevOps- als SRE-teams kritisch naar deze waarden kijken, wordt het een stuk makkelijker om problemen en kwetsbaarheden op te sporen voordat de eindgebruiker er last van krijgt.
Praktische twee-eenheid
Hoewel DevOps en SRE diverse kernwaarden delen, is de focus van hun werk anders: DevOps richt zich vooral op het beheren van de levenscyclus van applicaties, terwijl de operationele levenscyclus het hoofddomein is van SRE. Niettemin verbinden ze allebei de ontwikkelteams en operationele teams, terwijl ze vergelijkbare verantwoordelijkheden delen. DevOps en SRE werken tevens aan hetzelfde doel: het verbeteren van de releasecyclus en het realiseren van een betere productbetrouwbaarheid.
DevOps en SRE bij ACC ICT
Als je de twee methodieken goed gebruikt, kunnen DevOps en SRE elkaar prima versterken. Bij ACC ICT hebben we veel ervaring met DevOps en houden we ook alle ontwikkelingen rondom SRE nauwlettend in de gaten. Met onze managed-diensten als OTAP en CI/CD haal je het beste uit DevOps en RSE. Zo automatiseer, versnel en professionaliseer je jouw softwareontwikkelproces.