Vanliga frågor och svar: Vad är relationen mellan SRE och DevOps?

Det finns en uppsättning vanliga frågor som handlar om relationen mellan platstillförlitlighetsteknik och DevOps, inklusive "Hur är de likadana? Hur skiljer de sig åt? Kan vi ha båda i vår organisation?". Den här artikeln försöker dela några av de svar som har erbjudits av SRE- och DevOps-communitiesna som för oss närmare en förståelse av den här relationen.

Hur är de likadana?

SRE och DevOps är båda moderna driftsmetoder som har skapats och utvecklats som svar på utmaningar som omfattar:

  • en växande komplexitet i våra produktionsmiljöer och utvecklingsprocesser
  • ökande affärsberoende på kontinuerlig drift i sådana miljöer
  • oförmågan att skala arbetsstyrkan linjärt med storleken på dessa miljöer
  • behovet av att röra sig snabbare samtidigt som driftstabiliteten bibehålls

Båda driftsmetoderna uppmärksammar ämnen som är viktiga för att hantera dessa utmaningar som övervakning/observerbarhet, automatisering, dokumentation och samarbetsverktyg för programvaruutveckling.

Det finns betydande överlappningar i verktyg och arbetsområden mellan SRE och DevOps. Som arbetsboken för webbplatstillförlitlighet uttrycker det: "SRE tror på samma saker som DevOps men av något olika skäl."

Tre olika sätt att jämföra de två driftsmetoderna

Likheterna mellan SRE och DevOps är tydliga. Där det blir riktigt intressant är hur de två skiljer sig åt eller skiljer sig åt. Här erbjuder vi tre sätt att tänka på deras relation som ett sätt att få lite nyanser till denna fråga. Du kanske inte håller med om dessa svar, men var och en ger en bra startplats för diskussion.

"class SRE implementerar gränssnittet DevOps"

Arbetsboken för webbplatstillförlitlighet (som nämns i vår resursbokslista) diskuterar SRE och DevOps i sitt första kapitel. I det kapitlet används frasen "class SRE implements interface DevOps" som underrubrik. Detta är avsett att föreslå (med en fras som riktar sig till utvecklare) att SRE kan betraktas som en specifik implementering av DevOps-filosofin. Som det påpekas i kapitlet är "DevOps relativt tyst om hur man kör åtgärder på en detaljerad nivå" medan SRE är betydligt mer beskrivande i sina metoder. Så ett möjligt svar på frågan om hur de två relaterar är att SRE kan betraktas som en av många möjliga implementeringar av DevOps.

SRE är till tillförlitlighet eftersom DevOps är att leverera

Den här jämförelsen är lite rörig eftersom det finns flera definitioner för både SRE och DevOps, men det är fortfarande potentiellt användbart. Det börjar med frågan "Om du var tvungen att destillera varje driftpraxis till ett eller två ord som återspeglar dess kärnproblem, vad skulle det vara?"

Om vi använder den här definitionen av SRE från platsens tillförlitlighetstekniska hubb:

Site Reliability Engineering är ett teknikområde som är avsett att hjälpa en organisation att uppnå lämplig nivå av tillförlitlighet i deras system, produkter och tjänster.

då skulle det vara lätt att säga ordet för SRE är "tillförlitlighet". Att ha det mitt i namnet erbjuder också några utmärkta bevis för detta påstående.

Om vi använder den här definitionen av DevOps från Azure DevOps Resource Center:

DevOps är en union av människor, processer och produkter för kontinuerlig värdeleverans till våra slutanvändare.

sedan kan en liknande destillation för DevOps vara "leverans".

Därför är "SRE till tillförlitlighet som DevOps är att leverera".

Uppmärksamhetsriktning

Detta svar citeras eller något parafraseras från ett bidrag av Thomas Limoncelli till Seeking SRE bok som nämns i vår resursbokslista. Han noterar att DevOps-tekniker till stor del fokuserar på livscykelpipelinen för programvaruutveckling med tillfälliga ansvarsområden för produktionsåtgärder medan SRE:er fokuserar på produktionsåtgärder med tillfälliga SDLC-pipelineansvar.

Men ännu viktigare är att han också ritar ett diagram som börjar med programvaruutvecklingsprocessen på ena sidan och produktionsverksamheten fungerar på den andra. De två är anslutna av den vanliga pipelinen som är byggd för att ta koden från en utvecklare, herda den genom önskat antal tester och steg och flytta sedan koden till produktion.

Limoncelli noterar att DevOps-tekniker börjar i utvecklingsmiljön och automatiserar stegen mot produktion. När det är klart går de tillbaka för att optimera flaskhalsar.

SRE fokuserar å andra sidan på produktionsåtgärder och når djupt in i pipelinen som ett sätt att förbättra slutresultatet (i princip arbeta i motsatt riktning).

Det är den här skillnaden i riktning mot SRE- och DevOps-fokuset som kan hjälpa till att särskilja dem.

Samexistens i samma organisation

Den sista frågan vi vill ta upp är "Kan du ha både SRE och DevOps i samma organisation?"

Svaret på denna fråga är ett tydligt "ja!".

Vi hoppas att de tidigare svaren ger en uppfattning om hur de två åtgärdsmetoderna överlappar varandra och, när de inte överlappar varandra, hur de kan komplettera varandra i fokus. Organisationer med en etablerad DevOps-praxis kan experimentera med SRE-metoder i liten skala (till exempel prova SLO:er och SLO:er) utan att behöva åta sig att skapa SRE-positioner eller team. Detta är ett ganska vanligt SRE-implementeringsmönster.

Nästa steg

Vill du veta mer om platstillförlitlighetsutveckling eller DevOps? Kolla in vår platssäkerhetstekniska hubb och Resurscenter för Azure DevOps.