DevOps og CI/CD forklart: – Kan være ubehagelig

Hva er DevOps og CI/CD, og hvorfor skal du jobbe på den måten? Vi spurte en ekspert.

Tomas Holthe-Tveit har lang erfaring som utvikler og "tech lead". 📸: Privat
Tomas Holthe-Tveit har lang erfaring som utvikler og "tech lead". 📸: Privat Vis mer

Infoworld-redaktør Scott Carey har tidligere uttalt at få utviklere har lyst til å drive med Ops-delen av DevOps, og har tatt til orde for at kanskje Dev og Ops bør gå hver til sitt igjen.

Har han rett – eller er han helt på jordet?

Tomas Eilev Holthe-Tveit er sterkt uenig i at man ikke trenger DevOps. Til daglig jobber han som Tech Lead i Easee, og starter om kort tid opp som Tech Lead i BankID BankAxept.

– DevOps bidrar til raskere og tryggere utvikling og drift av programvare. Dette gjør den ved å bedre kommunikasjon, ved at man har felles mål, og ved at kunnskap bygges, sier Holthe-Tveit.

– Kan du kort forklare hva DevOps er?

– DevOps er en metodikk som blir brukt til å beskrive kultur, organisering og verktøy for at utvikling (Dev) og drift (Ops) skal jobbe sammen og dermed levere raskere og med høyere kvalitet.

– Har DevOps noe med smidig og agile utvikling å gjøre?

– DevOps er først og fremst en teknisk metodikk som har mye overlapp med smidig og agil utvikling. Den kan kombineres med rigide prosjekteringsmetodikker som fossefall.

– Smidig og Lean handler i større grad om hva man bygger og prosessene rundt dette, mens DevOps er i større grad hvordan man samarbeider.

– Opphavet til DevOps var den økende realiseringen av at ved å skille mellom utvikling og drift så fikk man en dysfunksjonell helhet. Drift ble målt på stabilitet og utvikling ble målt på endringer – man hadde kostbare leveranser og tap av kunnskap og kontekst.

«DevOps er i større grad hvordan man samarbeider.»

– Hvordan ser arbeidsdagen ut i et DevOps-team?

– Siden drift og utvikling blir utført av det samme teamet, så fører det oftest til at teamet er tettere på logger, overvåkning og lignende. Dette kan være av hele teamet, på rotasjon, eller en annen løsning.

– Det betyr at man sannsynligvis vil måtte ta supportsaker og hendelser. Selv om det kan være ubehagelig og på uheldige tidspunkt – så er dette viktig motivasjon til å bygge inn riktig kvalitet.

– Hvordan henger DevOps sammen med CI/CD?

– I praksis så trenger et DevOps-team kontinuerlig integrasjon og leveranse for å automatisere bygg, testing og utrulling. Hvis man skal kunne endre kode og rulle ut når som helst, så har man ikke tid til å gjøre disse stegene for hånd.

– Alle på teamet har sannsynligvis ikke komplett kunnskap eller tilganger til å gjøre det selv.

Continuous Integration (CI) beskriver hvordan man gjør endring i kode, bygger og tester/validerer endringen uten å overskrive andre sine endringer. Her har man typisk sett henting av avhengigheter, bygging av kode, enhets- og integrasjonstester, og bygging av sluttprodukter (artefakter).

Continuous Delivery (CD) tar et artefakt og ruller det ut til ett eller flere miljøer med alle de endringene som skal til i en repeterbar måte. Det kan være automatiserte og manuelle steg og det kan være en server i 1 miljø eller tusenvis av severe i mange forskjellige miljø.

– Hva med utviklere som vil bruke all tid på å kode?

– Si at man jobber i en sportsbutikk, og man elsker å skanne inn varer – men alt annet er kjedelig. Dette gir jo ikke mening da man må løse alle problemene som jobben innebærer. De beste utviklerne jeg har jobbet med er gode problemløsere som ikke holder noen oppgaver for å være under dem.

– På den andre siden så er det nok en god del reelle utfordringer. For eksempel så blir man holdt ansvarlig for drift, support med mer uten å få betalt, eller uten forståelse når andre leveranser blir forsinket. Det kan også godt hende at man mangler nødvendig kompetanse eller kapasitet.

– Som alle andre verktøy og metodikk så må man bruke det på en hensiktsmessig måte, evaluere og endre ved behov. DevOps er ikke noe som kan tres ned over en organisasjon.

– DevOps har fått kritikk for å kunne innebære en sikkerhetsrisiko?

– CI/CD gjør det lettere å gjennomføre endringer. Hvis man ønsker så kan man sette opp direkte utrulling til produksjon uten noen kvalitetssikring. Man kan altså få rullet ut feil i rekord-tempo!

– Før DevOps så var det kanskje noen som så over alle endringer da det måtte til for å rulle ut noe som helst. Det er opp til hver organisasjon å bestemme hvilken kvalitet og sikkerhetsbehov man har, og det har nok aldri vært så lett å sette opp automatiske sjekker av sikkerhet og kvalitet som nå.

– DevSecOps og den generelle trenden «Shift left» tar tanken med DevOps enda lengre. Det skal mer til å utvikle en tjeneste enn koding og drift. Man ønsker så tidlig som mulig å ta inn alle fag og domener. For eksempel ved at man bygger inn sikkerhetssjekker, man baker datakvalitet, datasikkerhet, personvern og "compliance" inn i det daglige arbeidet.

«Det har nok aldri vært så lett å sette opp automatiske sjekker av sikkerhet og kvalitet som nå.»

– Har du noen råd til de som i dag ikke jobber etter DevOps-metodikken?

– DevOps handler ikke om å revolusjonere arbeidet, tvert imot det er en iterativ evolusjon. Man har helt sikkert mye kompetanse, verktøy og løsninger på plass, og dette må man ikke kaste bort.

– Siden DevOps er en teknisk (bunn-til-topp) metodikk så er det helt nødvendig at det er genuin interesse og ønske fra de som blir berørt. Dette kan avhjelpes ved ansettelser, innleie, krav, budsjetter og andre rammer, men man kan ikke kjøpe seg ut av det. Det til tross så koster endring, enten i tid og/eller penger.

– DevOps betyr ikke nødvendigvis besparing av kostnader eller stillinger, i alle fall på kort sikt, ei heller garanterer den for at du bygger riktig løsning på riktig problem. Derfor er DevOps en viktig brikke i moderne utvikling – men er heller ikke nok alene.