DevOps-metodiken: Principer för framgång | StackPulse
DevOps-metodiken sammanför två områden – mjukvaruutveckling och IT-drift. DevOps-metodikens främsta mål är snabb produktsläpp, vilket uppnås genom användning av automatisering, kommunikation och ett kontinuerligt arbetsflöde.
DevOps viktigaste kärnprinciper är tvärutbildning, samarbete, kontinuerlig förbättring, ansvarstagande, öppenhet och automatisering. DevOps-team tillämpar dessa principer när de skapar en DevOps-process, som vanligtvis innehåller sju faser – planera, koda, bygga, testa, leverera, distribuera och övervaka.
I den här artikeln lär du dig:
- Vad är DevOps-metodiken?
- 6 kärnprinciper för DevOps
- Vad är en DevOps-process?
- DevOps vs Agile: en jämförelse
Vad är DevOps-metodik?
DevOps-metodiken är en uppsättning metoder som kräver samarbete mellan utvecklings- och driftsteam under hela programvaruutvecklingslivscykeln (SDLC). Den innehåller agila metoder och fokuserar på att bryta upp lagens silos, automatisera manuella uppgifter och öka produktiviteten genom kontinuerlig återkoppling.
När de använder DevOps-team implementerar organisationer ofta flera metoder och verktyg samtidigt. Dessa inkluderar:
- Kontinuerlig integration/kontinuerlig distribution (CI/CD) – en uppsättning processer som utnyttjar automatisering för att förbättra effektivitet, kvalitet och snabbhet i livscykeln för mjukvaruutveckling. CI innebär frekventa, små ändringar av kodbaser som testas och integreras så snart som möjligt. CD innebär att ofta släppa ny kod till produktion utan behov av manuella uppdateringar eller patchar.
- Molnbaserade pipelines – Pipelines är de verktygskedjor som används för att utföra arbetsflöden som CI/CD. Ofta är dessa verktygskedjor uppbyggda av tjänster och resurser som finns i molnet, vilket möjliggör molnnativ utveckling och bättre stöd för distribuerade team.
- Mikrotjänster – en arkitektur som används med molnnativa tillämpningar för att möjliggöra större skalbarhet, tillgänglighet och flexibilitet. Mikrotjänster gör det möjligt för team att bygga applikationer och pipelines som är löst kopplade och lätta att ändra eller uppdatera.
- Infrastruktur som kod (IaaC)-en metod som gör det möjligt för team att tillhandahålla, konfigurera och hantera infrastruktur genom programvara och kodade definitionsfiler. Metoden gör det möjligt att automatisera många infrastrukturuppgifter och stöder massiva driftsättningar utan att kräva betydligt mer teamresurser.
De centrala DevOps-principerna
När du skapar och arbetar enligt en DevOps-metodik finns det flera centrala principer som du bör överväga att anta.
Korsutbildning
I DevOps görs ansträngningar för att korsutbilda teammedlemmar i alla processer i SDLC. Detta innebär inte att alla teammedlemmar måste vara lika skickliga, men alla bör vara bekanta med de processer, verktyg och färdigheter som används.
När teammedlemmarnas kunskaper överlappar varandra på detta sätt är det lättare för teammedlemmarna att kommunicera. Det främjar nya lösningar eftersom medlemmarna är mindre ”fångade” av förväntningarna på hur saker och ting ska göras. Korsutbildning kan också förhindra flaskhalsar på grund av att man förlitar sig på andra, vilket ökar produktiviteten.
Samarbete
Samarbete och den kommunikation som det kräver är nyckelelement i DevOps. Denna metodik förlitar sig på att teammedlemmarna arbetar smidigt tillsammans och reagerar på feedback när något inte fungerar som förväntat. Om teammedlemmarna inte kan samarbeta blir arbetet siloat och produktiviteten begränsas av att etapperna slutförs.
Kontinuerlig förbättring
DevOps använder en iterativ process med små förändringar som förfinas tills en förändring klarar inspektionströsklar. Så snart en ändring accepteras påbörjas nästa ändring. Denna ständiga förbättring tillämpas på alla aspekter av DevOps, inklusive produktutveckling, pipelineprestanda och processeffektivitet.
Accountability
En DevOps-modell kräver ansvarsskyldighet för alla uppgifter – oavsett om det gäller utvecklingsuppgifter eller operativa uppgifter – och båda bör ägas lika mycket av alla medlemmar i organisationen. Detta eliminerar det traditionella tänkandet om ”någon annans problem”, hjälper till att se till att teamen är noggranna i sina handlingar, oavsett om de gäller utveckling eller drift. Det bidrar också till att bygga upp och befästa relationerna inom ett team eftersom alla medlemmar förväntar sig lika stor insats och lika stort ansvar.
Transparens
Transparens av processer, konfigurationer, verktyg och förväntningar är alla viktiga inom DevOps. Utan transparens kan inte team samarbeta effektivt och det kvarstår en känsla av ”vi mot dem”. Detta förhindrar kommunikation och gör det svårt att hålla andra ansvariga. Med öppenhet kan alla teammedlemmar hjälpa till att identifiera eventuella problem som uppstår och föreslå förbättringar inom ramen för helheten.
Automation
DevOps Automation hjälper team att effektivisera och standardisera arbetet. Den bidrar också till att skapa transparens eftersom den kräver att rutiner definieras och dokumenteras. Genom att automatisera tråkiga eller tidskrävande uppgifter kan DevOps-team fokusera på arbete på högre nivå. Detta fokus kan förbättra kvaliteten och uppmuntra till innovation.
DevOps-processen
Som enskilda förfaranden inom DevOps-processen kan variera, följer den övergripande processen en uppsättning ganska enhetliga steg. Dessa steg sker i en cykel och kan förändras eller gå tillbaka till tidigare steg beroende på återkopplingsslingor. En DevOps-livscykel omfattar vanligtvis följande steg:
- Planera – i början av ett projekt, sprint/iteration eller dag planeras och prioriteras arbetet. Detta hjälper till att se till att alla teammedlemmar förstår de aktuella målen och definierar vilket arbete som förväntas.
- Kod-utvecklare skapar och skickar in kodändringar eller tillägg som uppfyller de uppgifter som definierats för den aktuella iterationen. Dessa baseras på en huvudkodbas som alla utvecklare har tillgång till. I detta steg ingår även kodgranskning och eventuella förtydliganden eller justeringar som behövs. När inlämnad kod inte klarar testningen returneras den till detta steg för modifiering.
- Build – inlämnad kod kompileras, enhetstestas och paketeras. Detta är i allmänhet det första automatiserade steget i CI/CD-pipelinen. Om en byggning misslyckas skickas återkoppling till utvecklaren och den inlämnade ändringen avvisas. Om byggningen är framgångsrik skickas den vidare för ytterligare testning.
- Test – framgångsrika builds passerar genom en rad tester för att säkerställa funktionalitet, kvalitet och ofta säkerhet. Helst utförs de snabbaste eller mest kritiska testerna först. På så sätt kan den ursprungliga kodändringen återlämnas med återkoppling så snart som möjligt om ett test misslyckas, och arbetet slösas inte bort. Om alla test klarar testet går byggnaden vidare till leverans, och ändringarna slås samman i huvudkodgrenen. Detta säkerställer att alla utvecklare fortsätter att arbeta från samma bas.
- Leverera – den senast godkända byggnaden underhålls och hålls kvar för distribution.
- Deploy-en build kan distribueras till en testmiljö för ytterligare testning, t.ex. för godkännande av användaren. Eller så kan den levereras till staging- eller produktionsmiljöer för att släppas.
- Övervaka – efter lanseringen övervakas versionerna för att identifiera eventuella problem som missats och för att samla in användningsdata som kan användas för framtida förbättringar. Du kan läsa mer om DevOps-övervakning i vår artikel: DevOps-övervakning:
DevOps vs. Agile: Vad är skillnaden och hur är de relaterade?
När man talar om DevOps-metodiken associeras den ofta med Agile. Detta är logiskt när man betänker att många DevOps-team använder sig av agila metoder. Dessutom är båda metoderna inriktade på att förbättra snabbhet, effektivitet och kvalitet. Trots detta skiljer sig metoderna åt, och den ena kräver inte nödvändigtvis den andra.
Kommunikation
I agila metoder ligger fokus på kommunikation mellan teamen och på att involvera kunderna under hela projektprocessen. På samma sätt kommer den mesta feedbacken i agila processer från kunderna.
I DevOps är kommunikationen centrerad på utvecklare och verksamhet. Kundåterkoppling spelar en roll i planeringsstegen och leveransstegen, men är i allmänhet inte närvarande under de mellanliggande stegen. Istället förlitar sig teamen på återkoppling från verktyg och andra teammedlemmar för att styra arbetet.
Teamstruktur
Både Agile och DevOps prioriterar kompetensdelning och korsutbildning. DevOps tenderar dock att tillämpa dessa färdigheter mer på kommunikation och samarbete än på ansvar. I DevOps-team ansvarar utvecklare för kodskapande, och test- och driftsteam (kallade DevOps-team) ansvarar för pipelinehantering, miljökonfiguration och driftsättning.
I motsats till detta suddar agila team ofta ut gränserna mellan ansvarsområdena. I ett agilt team uppmuntras alla att ta på sig de uppgifter som krävs och rollerna är mindre segregerade. Som ett resultat av detta tenderar Agile att fungera bättre med mindre team medan DevOps är bättre på att tillhandahålla den struktur som behövs för större team.
Tidsplanering
Agila metoder följer en sprint eller tidsbegränsad iteration. Flera sprintar utförs tills ett projekt är avslutat med specifika uppgifter och mål definierade i varje sprint. Sprintar och det förväntade arbetet justeras ofta för att matcha teamets resultat.
I DevOps-implementationer är målet att alltid ha en produkt som kan levereras. Teamen kan dock använda sprintar eller iterationer för att definiera det arbete som förväntas ingå i en specifik utgåva. Dessutom hålls DevOps-team ofta till mer specifika tidsfrister och riktmärken och har mindre flexibilitet när det gäller att definiera när en produkt är klar.
Automation för DevOps-metodiken: Med StackPulse
I takt med att våra företag blir alltmer digitala blir tillförlitligheten hos de programvarutjänster som ger dem möjlighet att arbeta en affärskritisk fråga. Varje mjukvarusystem, oavsett hur välutvecklat det är, kommer att ha produktionsvarningar. Dessa kommer antingen att vara lokala problem som har liten eller ingen inverkan på slutanvändarna eller kritiska problem som påverkar tjänstens tillgänglighet för användarna.
I båda fallen bör problemen undersökas, analyseras och vid behov åtgärdas av de berörda ägarna. Utan rätt automatisering kommer det stora antalet incidenter och varningar i de flesta organisationer att leda till:
- Negativ produktivitetspåverkan på R&D- och DevOps-team
- ”Varningströtthet” för ägare och stödteam
- Längre stillestånd för produktionstjänster.
StackPulse är en automatiseringsplattform för drifts-, övervaknings- och återkopplingsfaserna i DevOps-cykeln. Den gör det möjligt för DevOps- och ingenjörsteam att definiera kodifierade spelböcker för dessa processer. Detta gör det möjligt för din organisation att automatisera processer på ett repeterbart och mätbart sätt och utlösa dem så ofta som behövs, utan ytterligare manuellt arbete.
Få tidig tillgång till StackPulse och var bland de första att prova vår DevOps / SRE automationsplattform.
Leave a Reply