Om man har bokstäverna IT i sin jobbeskrivning så har man antagligen någon gång jobbat med programmerare, utvecklare av webbsidor och appar samt experter inom så kallade DevOps. DevOps är mer än bara en approach till mjukvaruutveckling. Det är ett paraplybegrepp som står för en kultur inom applikationsutveckling och som namnet antyder är DevOps en kombination av utveckling (development) och drift (IT-Operations).
DevOps myntades först av Patrick DuBois år 2009 och omfattar människor, verktyg och processer för att möjliggöra bättre samarbete och automatisering i företagens mjukvaruutveckling. Många menar att DevOps representerar ett skifte inom IT-världen, som främst handlar om snabbare utveckling och leverans av IT-tjänster genom att anta olika metoder inom ramen för ett systemorienterat tillvägagångssätt. DevOps har ett stort fokus på människor och organisationskultur, och syftar till att förbättra samarbeten mellan olika IT-operationer, verksamheter, avdelningar och arbetsgrupper. Implementeringarna av DevOps använder olika metoder och särskilt automatiseringsverktyg som har ett större livscykelperspektiv.
DevOps uppmanar utvecklare att jobba iterativt, snabbare och att vara mer experimentella. Trots att DevOps har funnits i mer än tio år så finns det ännu mycket förvirring kring dess definition, betydelse och ifall det är en filosofi eller en metod. Den här texten tittar närmre på DevOps med syftet att reda ut vad begreppet verkligen innebär.
Vad är DevOps?
DevOps är en kombination av metoder och verktyg som är utformade för att öka ett företags förmåga att leverera applikationer och tjänster snabbare än traditionella processer inom programvaruutveckling. En högre hastighet gör det möjligt för företagen att bättre tjäna sina kunder och konkurrera mer effektivt på marknaden. I grund och botten handlar DevOps om att riva ner barriärerna mellan teams, avdelningar och aktiviteter som traditionellt sett har varit väldigt isolerade från varandra. I en DevOps-modell jobbar teams inom utveckling och processer tillsammans igenom hela livscykeln av utvecklingen av en programvara, från utveckling och test till distribution och slutligen drift. DevOps livscykel brukar ibland illustreras med hjälp av evighetsloopen (den liggande åttan), för att på så sätt betona hur stor roll kontinuitet spelar i DevOps och för att visa på relationerna mellan DevOps olika faser.
Det finns många fördelar med att använda sig av DevOps. Några av dessa fördelar är:
- Hastigheten: DevOps ser till att man ökar sin hastighet till en sådan fart att man kan förnya sig snabbare, anpassa sig till förändrade marknadsförhållanden bättre och bli mera effektiv när det kommer till att skapa resultat för företaget.
- Snabb leverans: När man snabbar på takten och förkortar sina ledtider kan man förbättra sin produkt snabbare och bli ett mer konkurrenskraftigt företag.
- Pålitligt: Olika DevOps-metoder, som exempelvis kontinuerlig integration och kontinuerlig leverans, kan säkerställa kvaliteten på applikationers uppdateringar och och andra förändringar. På så sätt kan man på ett tillförlitligt sätt leverera i snabbare takt samtidigt som man bevarar en optimal upplevelse för slutanvändarna.
- Förbättrat samarbete: När man applicerar en DevOps-modell inom företaget så innebär det som sagt att olika teams inom bland annat utveckling och IT jobbar närmre tillsammans. De delar ansvarsområden och kombinerar sina arbetsflöden. Det kan göra arbetet effektivare och spara in på tid.
- Säkerhet: Det går att använda DevOps utan att offra säkerheten, genom att använda sig av automatiska och integrerade säkerhetsverktyg.
5 förklaringar av DevOps
Det finns en anledningen till att det finns en del förvirring kring DevOps. Beroende på vilken expert man frågar så får DevOps något olika förklaringar. Här följer fem stycken definitioner och förklaringar av vad DevOps är.
1. DevOps är en kulturell rörelse
DevOps kan ses som en kulturell rörelse. Inom den här rörelsen menar både mjukvaruutvecklare och IT-experter att en programvara egentligen inte har något mervärde innan den används av någon. Det kan vara en kund, klient eller en anställd. Därför är målet alltid att leverera mjukvara både med ett högt tempo och med en hög kvalitet.
2. DevOps stärker utvecklarna
DevOps sägs stärka utvecklare till att driva, äga och hantera utvecklingen och leveransen av en programvara eller applikation, från början till slut. DevOps tar bort förvirringen kring vem som äger och ansvarar för programvaran, och driver teams mot en mer automatiserad infrastruktur inom mjukvaruutveckling som leds av utvecklarna.
3. DevOps är ett tillvägagångssätt som bygger på samarbetande för att bygga och leverera programvara
Enligt den här förklaringen är DevOps en approach som syftar till att bygga, skapa och leverera programvaror där alla parter och aktörer jobbar nära tillsammans. Allas kunskap och expertis är avgörande, och samtidigt kan man jobba effektivare och skapa bättre resultat.
4. Devops fungerar som en monteringsprocess
DevOps går att jämföra med en monteringsprocess. För att en monteringsprocess ska fungera i praktiken så måste dess olika komponenter vara designade på ett sätt som gör det möjligt att kombinera dem sömlöst och smidigt. Idén är således att designa och bygga alla separata delar så att de i slutändan passar perfekt ihop.
De som designar och bygger motorer måste exempelvis tänka på bilens struktur och motorfäste. De som bygger bromsar måste tänka på fälgarna och däcken, och så vidare. Det måste fungera på samma sätt när man bygger och utvecklar en programvara. De utvecklare som till exempel är ansvariga för att skapa användargränssnittet måste tänka på den databas som lagrar kundinformation, den säkerhet som skyddar användardata och hur allt fungerar när tjänsten används av så många som miljoner människor på samma gång. Att få folk till att samarbeta och att också tänka på det arbete som görs av andra personer istället för att enbart fokusera på sina individuella uppgifter kan vara ett stort hinder att övervinna.
5. DevOps är ett recept som kombinerar människor, processer och automatisering
DevOps är ett recept, precis som inom matlagning, som förlitar sig på tre huvudsakliga kategorier eller intressenter, nämligen människor, processer och automatisering. De flesta av ingredienserna går att hämtas och anpassas från andra kända metoder och källor som Lean, agil och ledarskap. Hemligheten bakom DevOps är hur dessa ingredienser blandas och med de rätta proportionerna (som alla bra recept) för att öka processflödet och värdet till kunden.
Verktygen som behövs i DevOps
Metoderna inom DevOps är beroende av effektiva verktyg för att hjälpa arbetsteamen att snabbt och tillförlitligt utveckla, distribuera och förnya för sina kunder. Dessa verktyg är tänkta att automatisera manuella uppgifter, hjälpa till med att hantera komplexa miljöer och situationer samt bistå ingenjörer när de utövar kontroll över den höga takten inom devops. Ett arbetsflöde inom DevOps består av flera stycken faser, nämligen:
- Planering av den nästa iterativa cykeln av produktens utveckling
- Bygga och leverera koder
- Testa och distribuera i produktionsmiljön
- Leverera uppdateringar av produkten
- Övervaka och dokumentera hur programvaran fungerar i praktiken
- Samla in feedback från programvarans användare och kunder
Planera nästa iterativa cykel av utvecklingsprocessen
Verktyg inom planering och schemaläggning och för att kunna följa upp aktiviteter behövs för att säkerställa att DevOps-teamet vet vad de förväntas göra, vad som sker i nuläget och om det finns någon risk för att missa ens deadlines. Det finns flera digitala verktyg som hjälper DevOps-teams med att uppnå en sömlös och effektiv projekthantering och cykel, och som garanterar att man möter deadlines.
Bygga och leverera
Utvecklare behöver tillgång till verktyg som tillåter ett snabbt arbetsflöde för att skapa utvecklings- och testmiljöer och kan inte vänta länge på exempelvis reparationer när något går fel. Verktyg som säkerställer en konsekvent utveckling över flera utvecklingscykler är därför nödvändiga.
Testa
När det kommer till den här fasen bör man försöka hitta ett verktyg som hjälper till med att minimera tiden, resurserna och ansträngningen som behövs för att testa sina koder och programvara, utan att påverka kodernas kvalitet eller kundens upplevelse negativt.
Övervaka användningen av programvaran
När en programvara väl har flyttats över till produktionen inom företaget så måste den övervakas för att säkerställa en stabil prestanda och ökad kundnöjdhet. Det inkluderar också analyser, dokumentation, att hantera risker och problem samt att samla in feedback från olika användare.
Metoder inom DevOps
DevOps är nära besläktat med agila metoder inom mjukvaruutveckling, och föddes ur ett behov av att bibehålla höga hastigheter inom utvecklingen. Framsteg och avancemang inom de agila metoderna belyste ett ökat behov av en mer holistisk approach till mjukvaruutveckling där man ser till varans hela livscykel, vilket resulterade i DevOps.
”Agil utveckling” är mer av ett samlingsbegrepp för flera olika iterativa metoder inom mjukvaruutveckling. Många av dessa har överförts till DevOps, bland annat:
- Scrum: Ett ramverk med vilket man kan adressera komplexa, adaptiva problem medan man levererar produkter med högsta möjliga värde.
- Kanban: En metod för att hantera produktutveckling med ett särskilt fokus på kontinuerlig leverans och resultat, medan man undviker att överbelasta arbetsteamet som jobbar med utvecklingen.
- SAFe (Scaled Agile Framework): En uppsättning av mönster inom organisation och arbetsflöden som syftar till att vägleda företagen genom agila Lean-metoder. SAFe är en av flera växande ramverk som ämnar till att ta itu med de problem som man kan stöta på när man försöker skala upp ett projekt eller produktutveckling.
- Lean development: En överföring av Lean-principer och -metoder inom tillverkning till mjukvaruutvecklingen. Lean erbjuder ett konceptuellt ramverk, värderingar och principer samt erfarenhetsbaserad information som stöttar de agila företagen.
- XP (Extreme Programming): En metod inom mjukvaruutveckling som syftar till att förbättra mjukvarans kvalitet och ”lyhördhet” för förändrade kundbehov. XP förespråkar därför frekventa utgåvor och lanseringar med korta utvecklingscykler som är avsedda att förbättra produktiviteten och införa kontrollpunkter där nya kundkrav kan samlas in.
Funktioner och fördelar med DevOps metoder och processer
Flera av de centrala aspekterna och metoderna inom DevOps kan hjälpa företagen att förnya och utveckla sina produkter snabbare, genom automatisering och genom att effektivisera hanteringsprocesserna inom mjukvaruutveckling. En viktig aspekt av DevOps är till exempel att göra många frekventa men små uppdateringar. De här uppdateringarna är vanligtvis mer inkrementella än de uppdatering som brukar göras inom traditionell programvaruutveckling. Företag som använder sig av DevOps-modellen lanserar således uppdateringar mycket oftare än företag som använder sig av de mer traditionella modellerna.
Kommunikation och samarbete är viktiga grundpelare inom DevOps. Automatisering av processerna för mjukvaruutgivning skapar ett samarbete genom att fysiskt sammanföra arbetsflödena och ansvaret för utveckling och verksamheten. Kommunikation mellan utvecklare, olika verksamheter och även olika arbetsteams inom exempelvis marknadsföring och försäljning, tillåter delar av företaget att närma sig varandras mål och projekt.
DevOps-metoder så som kontinuerlig integrering och kontinuerlig leverans hjälper arbetsteamen jobba snabbare, säkrare och mer pålitligt. Att övervaka och dokumentera säkerställer att teamen kan spåra och följa hur mjukvarorna och applikationerna fungerar i praktiken. På så sätt går det snabbare att upptäcka och åtgärda eventuella problem som uppstår.
Kontinuerlig integrering och kontinuerlig leverans
DevOps-metoder så som kontinuerlig integrering och kontinuerlig leverans hjälper DevOps-teamen skapa bättre metoder som är snabbare, säkrare och mer tillförlitliga. Kontinuerlig integrering är en metod inom mjukvaruutveckling där utvecklare regelbundet sammanför ändringar av sina koder i en central dokumentation, vilket följs av tester och fortsatt utveckling. Den huvudsakliga målsättningen med kontinuerlig integrering är att hitta och fixa eventuella buggar snabbare, förbättra mjukvarans kvalitet och reducera den tid det tar att validera och lansera nya uppdateringar av en mjukvara. Kontinuerlig leverans expanderar konceptet genom att installera alla ändrade koder i ett och samma test eller produktion efter att man gått igenom sin bygg- och kodningsfas. Genom att samla in och analysera loggar vilka genereras av olika applikationer så kan DevOps-teamen bättre förstå hur ändringar och uppdateringar av mjukvaran kan komma att påverka produktens slutanvändare, det vill säga kunderna.
Bygga en säker DevOps-modell
Att gå över till DevOps är inte ett mål eller en destination i sig självt, utan mer av en kontinuerlig resa. DevOps förändrar nämligen hur utveckling och IT-operationer fungerar i grunden. Man kan använda DevOps metoder, processer, ramverk och arbetsflöden som baseras på filosofin bakom DevOps för att skapa en säkrare mjukvaruutveckling. Det gör man genom att dra upp hastigheten på utvecklingscyklerna samt skala upp dem utan att offra säkerheten. Samtidigt kan man minimera risker, säkerställa efterlevnad och ansvar samt reducera problem och kostnader.
Vardagen för en DevOps-expert
Hur ser då en dag ut för en person som jobbar med DevOps på en daglig basis? Den består framför allt av att koda, bygga, testa, lansera och att testa igen. Eftersom att DevOps är en iterativ process så går arbetet och flödet mycket fram och tillbaka där man utvärderar varje kodkonfiguration och distribution, fixar buggar, definierar nästa iteration och testar igen. Framgångsrik DevOps är beroende av att man kan bibehålla ett gott samarbete där alla parter och intressenter har en vilja att ständigt förbättras och utvecklas. Det kräver att man kan välkomna agila metoder och värderingar såväl som automatiserad kodning och testverktyg. Det kräver också att man är villig att dela på ansvar, där samtliga medarbetare har ett aktivt intresse av att projektet i fråga ska gå bra utan att skuldbelägga varandra när något går fel. Feedback är också en viktig komponent, eftersom det hjälper en att identifiera och undvika problem samt att föreslå förbättringar.
På samma gång så uppmuntrar DevOps dock också till mer autonoma arbetsteams. För att upprätthålla tighta produktionsplaner och snabba cykler för exempelvis kodändringar måste utvecklare och annan driftspersonal kunna fatta strategiska beslut direkt utan att behöva vänta på en lång beslutskedja först.
Några av de främsta fördelarna med DevOps är det fokus och den flexibilitet som många menar att DevOps tillför alla sorters projekt. En ökad kommunikation och ett stärkt samarbete gör det enklare att implementera ändringar, utan att förlora siktet på projektets slutgiltiga målsättning. Det tenderar också att främja en bättre organisationskultur mellan alla de som ingår i ett DevOps-projekt. Det gör det enklare och roligare att experimentera med nya idéer och applicera nytänkande metoder som skulle kunna förbättra ens resultat.
Slutsats
I grund och botten är DevOps en kultur, en rörelse och en filosofi. DevOps består av en uppsättning metoder som syftar till att automatisera och integrera processerna mellan de arbetsteam och avdelningar som främst jobbar med mjukvaruutveckling och IT, för att bygga, testa och lansera ny eller uppdaterad mjukvara snabbare och säkrare. Begreppet DevOps formades för över tio år sedan genom att man kombinerade de två engelska orden Development och Operations och representerar ett kulturellt skifte som stänger gapet mellan utvecklare och driftspersonalen inom IT, två stycken områden och avdelningar som historisk sett fungerat i isolerade silos.
Kontinuitet är en viktig aspekt av DevOps och på grund av det är det vanligt att man använder sig av den så kallade evighetsloopen (en liggande åtta) för att visualisera DevOps och dess olika faser. Med hjälp av den här symbolen kan man illustrera hur de olika faserna relaterar till varandra, och även om det verkar som att arbetsflödet rör sig i en och samma riktning så vill loopen också symbolisera behovet av ett nära samarbete, kommunikation och främst iterativa förbättringar igenom hela livscykeln.
DevOps livscykel består av sex stycken faser som representerar processerna, kapaciteten och verktygen som behövs för utvecklingen som sker på loopens vänstra sida och processerna, kapaciteterna och verktygen som behövs för operationer på höger sida av loopen. Under varje fas samarbetar och kommunicerar DevOps-teamen för att upprätthålla en hög takt på arbetet och en hög kvalitet. DevOps sex faser består av att planera, bygga och skapa, kontinuerligt integrera och leverera, övervaka, driva och svara på kontinuerlig feedback.