Vad är DevOps?
Läs om hur DevOps förenar människor, processer och teknik för att få ut bättre produkter till kunderna på ett snabbare sätt.
Definitionen av DevOps
DevOps är en sammansättning av Dev (development – utveckling) och Ops (operations – drift) som förenar människor, process och teknik för att ge fortsatt mervärde till kunderna.
Vad betyder DevOps för teamen? Med DevOps kan tidigare siloroller – utveckling, IT, kvalitetsteknik och säkerhet – samordna och samarbeta för att producera bättre och pålitligare produkter. Genom att anta en DevOps-kultur tillsammans med DevOps-metoder och -verktyg får teamen förmågan att bättre kunna uppfylla kundernas behov, öka tillförsikten i apparna de skapar och uppnå affärsmål snabbare.
Fördelarna med DevOps
Team som har infört DevOps-kultur, -metoder och -verktyg blir högpresterande och skapar bättre produkter snabbare för större kundtillfredsställelse. De här förbättrade funktionerna för samarbete och produktivitet är också väsentliga för att uppnå följande affärsmål:
Kortare tid till marknaden
Anpassning efter marknad och konkurrens
Bibehållen systemstabilitet och -tillförlitlighet
Bättre snittid för återställning
DevOps och applivscykeln
DevOps influerar applivscykeln genom dess planerings-, utvecklings-, leverans- och körningsfaser. Varje fas är beroende av de andra, och faserna är inte rollspecifika. I en sann DevOps-kultur är alla roller inblandande i varje fas i viss utsträckning.
Plan
I planeringsfasen bildar DevOps-teamen sig en uppfattning om, definierar och beskriver funktioner och egenskaper hos appar och system de skapar. De spårar förloppet på låg och hög detaljnivå – från uppgifter för enskilda produkter till uppgifter som rör hela portföljer med flera produkter. DevOps-team kan på ett smidigt och synligt sätt planera för att skapa poster för återstående uppgifter, spåra buggar, hantera programutveckling smidigt med Scrum, använda Kanban-tavlor och visualisera framsteg med hjälp av instrumentpaneler.
Utveckla
Utvecklingsfasen omfattar alla aspekter av kodning – teammedlemmar skriver, testar, granskar, integrerar och bygger in kod i artefakter som kan distribueras till olika miljöer. DevOps-teamen vill skapa innovationer snabbt utan att offra kvalitet, stabilitet och produktivitet. För att göra det använder de högproduktiva verktyg, automatiserar vardagliga och manuella steg och itererar i små steg genom automatiserad testning och kontinuerlig integrering.
Leverera
Leverans är processen med att distribuera appar till produktionsmiljöer på ett konsekvent och tillförlitligt sätt. Leveransfasen omfattar även att distribuera och konfigurera den fullständigt styrda grundinfrastrukturen som utgör dessa miljöer.
I leveransfasen definierar teamen en versionshanteringsprocess med tydliga manuella godkännandesteg. De anger även automatiska portar som flyttar appar mellan olika steg tills de görs tillgängliga för kunder. Automatisering av dessa processer gör dem skalbara, upprepningsbara och kontrollerade. På så sätt kan team som använder sig av DevOps enkelt leverera med tillförsikt och trygghet.
Körning
Körningsfasen omfattar underhåll, övervakning och felsökning av appar i produktionsmiljöer. I införandet av DevOps-metoder arbetar teamen för att säkerställa systemtillförlitlighet, hög tillgänglighet och siktar på noll stilleståndstid samtidigt som de stärker säkerheten och styrningen. DevOps-teamen vill identifiera problem innan de påverkar kundupplevelsen och åtgärda problemen snabbt när de inträffar. Att upprätthålla den här vaksamheten kräver avancerad telemetri, användbara varningar och fullständig insyn i appar och de underliggande systemen.
DevOps-kultur
Även om införandet av DevOps-metoder automatiserar och optimerar processer genom teknik är det framförallt kulturen inom organisationen – och människorna i organisationen – som är avgörande. Utmaningen med att utveckla en DevOps-kultur kräver djupgående förändringar i hur människor arbetar och samarbetar. Men när organisationer engagerar sig i en DevOps-kultur kan de skapa en miljö där högpresterande team kan utvecklas.
Samarbete, synlighet och inriktning
Ett kännetecken på en sund DevOps-kultur är samarbetet mellan team, som har sin utgångspunkt i synlighet. Olika team som utveckling och IT måste dela sina DevOps-processer, -prioriteringar och -bekymmer med varandra. Dessa team måste även planera arbetet tillsammans och jobba efter samma mål och framgångsmått som rör verksamheten.
Skiften i omfattning och ansvar
I takt med att teamen anpassar sig efter varandra får de ansvar för och blir involverade i flera livscykelfaser – inte bara sådana som är centrala för deras roller. Till exempel blir utvecklare ansvariga inte bara för innovation och kvalitet som etableras i utvecklingsfasen, utan även för den prestanda och stabilitet som deras ändringar för med sig i körningsfasen. Samtidigt ser IT-operatörer till att inkludera styrning, säkerhet och efterlevnad i planerings- och utvecklingsfasen.
Kortare utgivningscykler
DevOps-teamen behåller sin smidighet genom att släppa programvara i korta cykler. Kortare utgivningscykler gör planeringen och riskhanteringen enklare eftersom förloppet sker stegvist, vilket även minskar påverkan på systemets stabilitet. Med en förkortad utgivningscykel kan organisationer även anpassa sig efter och reagera på framväxande kundbehov och konkurrenstryck.
Kontinuerlig inlärning
Högpresterande DevOps-team etablerar ett tillväxttänkande. De misslyckas snabbt och tar med lärdomar i sina processer, med ständiga förbättringar, ökad kundtillfredsställelse och fler innovationer och mer marknadsanpassning. DevOps är en resa, så det finns alltid utrymme att växa.
DevOps-metoder
Utöver att etablera en DevOps-kultur kan teamen använda DevOps för att implementera vissa metoder i applivscykeln. Vissa av dessa metoder hjälper till att accelerera, automatisera och förbättra en specifik fas. Andra spänner över flera faser och hjälper teamen att skapa sömlösa processer som hjälper till att förbättra produktiviteten.
Kontinuerlig integrering och kontinuerlig leverans (CI/CD)
Konfigurationshantering innebär att hantera tillståndet för resurser i ett system, som servrar, virtuella datorer och databaser. Med hjälp av konfigurationshanteringsverktyg kan teamen rulla ut ändringar på ett kontrollerat, systematiskt sätt och därmed minska riskerna för att modifiera systemkonfigurationen. Teamen använder konfigurationshanteringsverktyg för att spåra systemtillståndet och hjälpa till att undvika konfigurationsförändringar, som är hur en systemresurs konfiguration avviker över tid från det önskade tillstånd som har definierats för den.
Systemdefinition och -konfiguration används tillsammans med infrastruktur som kod, och båda är enkla att skapa mallar för och automatisera, vilket hjälper teamen att köra komplexa miljöer i stor skala.
Versionskontroll
Versionskontroll är metoden att hantera kod i versioner – spåra revideringar och ändringshistorik för att göra koden enkel att granska och återställa. Den här metoden implementeras normalt med hjälp av versionskontroll som Git, som tillåter att flera utvecklare samarbetar med redigeringen av kod. De här systemen ger en tydlig process för att slå samman kodändringar som sker i samma filer, hantera konflikter och rulla tillbaka ändringar till tidigare tillstånd.
Användningen av versionskontroll är en grundläggande DevOps-metod som hjälper utvecklingsteam att arbeta tillsammans, dela upp kodningsuppgifter mellan teammedlemmar och lagra all kod för enkel återställning vid behov.
Versionskontroll är även en nödvändig del i andra metoder som kontinuerlig integrering och infrastruktur som kod.
Agile-programutveckling
Agile är en programutvecklingsmetod som betonar samarbete, kund- och användarfeedback samt hög anpassningsbarhet till förändringar under korta utgivningscykler. Team som använder Agile ger sina kunder ständiga förändringar och förbättringar, samlar in feedback och drar sedan lärdomar och gör justeringar utifrån kundernas önskemål och behov. Agile är betydligt annorlunda jämfört med mer traditionella ramverk som vattenfall, som har långa utgivningscykler definierade av sekventiella faser. Kanban och Scrum är två populära ramverk associerade med Agile.
Infrastruktur som kod
Infrastruktur som kod definierar systemresurser och topologier på ett beskrivande sätt som gör att teamen kan hantera dessa resurser på samma sätt som kod. Dessa definitioner kan även lagras och versionshanteras i versionskontrollsystem, där de kan granskas och återställas – återigen på samma sätt som kod.
Genom att använda infrastruktur som kod kan teamen distribuera systemresurser på ett tillförlitligt, upprepningsbart och kontrollerat sätt. Infrastruktur som kod hjälper även till att automatisera distribution och minskar risken för mänskliga fel, särskilt för komplexa och stora miljöer. Med den här upprepningsbara, pålitliga lösningen för miljödistribution kan teamen ha utvecklings- och testningsmiljöer som är identiska med produktion. Duplicering av miljöer i olika datacenter och molnplattformar blir också enklare och effektivare.
Konfigurationshantering
Konfigurationshantering innebär att hantera tillståndet för resurser i ett system, som servrar, virtuella datorer och databaser. Med hjälp av konfigurationshanteringsverktyg kan teamen rulla ut ändringar på ett kontrollerat, systematiskt sätt och därmed minska riskerna för att modifiera systemkonfigurationen. Teamen använder konfigurationshanteringsverktyg för att spåra systemtillståndet och hjälpa till att undvika konfigurationsförändringar, som är hur en systemresurs konfiguration avviker över tid från det önskade tillstånd som har definierats för den.
Systemdefinition och -konfiguration används tillsammans med infrastruktur som kod, och båda är enkla att skapa mallar för och automatisera, vilket hjälper teamen att köra komplexa miljöer i stor skala.
Kontinuerlig övervakning
Kontinuerlig övervakning innebär fullständig insyn i realtid i hela programstackens prestanda och status, från den underliggande infrastrukturen som kör appen, till programkomponenterna på högre nivå. Denna insyn omfattar insamlingen av telemetridata och metadata samt inställningar av varningar för fördefinierade villkor som kräver uppmärksamhet av en operatör. Telemetri omfattar händelsedata och -loggar som samlas in från olika delar av systemet och som lagras där de kan analyseras och köras frågor på.
Högpresterande DevOps-team ser till att ange användbara, meningsfulla varningar och samla in innehållsrika telemetridata så att de kan analysera enorma mängder data. Med denna information kan teamet åtgärda problem i realtid och se hur de kan förbättra appen i framtida utvecklingscykler.
DevOps-verktyg
Teamen har många DevOps-verktyg som hjälper dem att verka för en DevOps-kultur i deras organisation. De flesta team förlitar sig på flera verktyg och skapar verktygskedjor som passar deras behov för varje fas i applivscykeln. Att införa ett visst verktyg eller en viss teknik är inte detsamma som att införa DevOps, men när det finns en DevOps-kultur och processerna är definierade kan DevOps-metoder implementeras och effektiviseras om rätt verktyg väljs. Skaffa verktygen för att sätta DevOps i verket:
DevOps och molnet
Flytten till molnet har inneburit en fundamental omvandling av det sätt som teamen skapar, distribuerar och kör appar. Tillsammans med införandet av DevOps har teamen nu större möjligheter att förbättra sina metoder och ge bättre service till sina kunder.
Smidighet i molnet
Med förmågan att snabbt etablera och konfigurera molnmiljöer för flera miljöer med obegränsade resurser kan teamen snabbt och smidigt distribuera sina appar. Istället för att behöva köpa, konfigurera och underhålla fysiska servrar kan teamen nu skapa komplexa molnmiljöer på några minuter och sedan stänga ned dem när de inte längre behövs.
Kubernetes
I takt med att fler appar använder containerteknik blir Kubernetes en branschlösning för orkestrering av containrar i stor skala. Automatisering av processerna för att skapa och distribuera containrar via CI/CD-pipelines och övervaka dessa containrar i produktion håller på att bli nödvändiga metoder i Kubernetes tidsålder.
Serverlös databehandling
Då det mesta av arbetet med att hantera infrastruktur flyttas till molnleverantören kan teamen fokusera på sina appar istället för på den underliggande infrastrukturen. Serverlös databehandling ger smidigheten att köra appar utan att konfigurera och underhålla servrar. Vissa alternativ minskar komplexiteten och distributions- och verksamhetsrisker.
Påbörja din resa med DevOps
Med alla olika tillgängliga metoder och lösningar kan DevOps till en början kännas överväldigande. Nyckeln är att börja i liten skala och lära sig av andra.
Vanliga frågor och svar
-
DevOps används i olika roller i en organisation och kräver ett nära samarbete för flera av dem. I de flesta fallen omfattar DevOps-roller utveckling, IT-drift, säkerhet och support.
-
DevOps är inte begränsat till en enda roll. Alla som deltar i appens livscykelfaser måste ta sig an DevOps-kulturen. Men i vissa organisationer finns det några personer eller team vars enda fokus är att möjliggöra automatisering, definiera metoder och implementera CI/CD-pipelines. Ibland är den officiella titeln för dessa roller DevOps-tekniker eller DevOps-specialist.
-
Det kan vara extremt utmanande att införa DevOps i en stor organisation. Att ändra kulturen för en stor organisation och standardisera processer och verktyg kräver tålamod och uthållighet. I de flesta stora organisationer finns det tidiga användare av DevOps-metoder. Då dessa metoder mognar och ger positiva resultat följer oftast andra team efter – och påbörjar sin DevOps-resa.
-
Det verkliga syftet med DevOps handlar om att ständigt ge kunderna mervärde. Resultatet när DevOps har införts måste mätas i förhållande till verksamhetsmål. DevOps-teamen samlas kring dessa mål och uppnår dem med hjälpa av korta utgivningscykler. Dessa cykler gör det möjligt för företaget att anpassa sig efter marknaden och möjliggör även kontinuerlig inlärning via kundfeedback.
-
Både DevOps och Agile är moderna programutvecklingsramverk för att framställa en produkt, en lansering eller en version. DevOps är en kultur som främjar samarbete mellan alla roller som arbetar med utveckling och underhåll av programvara. Agile är en utvecklingsmetod som är utformad för att upprätthålla produktiviteten och leda till lanseringar som reflekterar föränderliga behov. DevOps och Agile utesluter inte varandra och används ofta tillsammans.
-
Tillsammans med kontinuerlig integrering är kontinuerlig leverans och kontinuerlig distribution metoder som automatiserar programleveransens faser.