Hva er DevOps?
Lær hvordan DevOps forener personer, prosess og teknologi for å levere bedre produkter raskere til kundene.
Definisjon av DevOps
DevOps er en kombinasjon mellom utvikling (Dev) og operasjoner (Ops). Det er å forene personer, prosess og teknologi for å levere verdi til kundene kontinuerlig.
Hva betyr DevOps for team? DevOps lar tidligere isolerte roller – utvikling, IT-operasjoner, kvalitetsteknikk og sikkerhet – koordinere og samarbeide for å produsere bedre og mer pålitelige produkter. Ved å innføre DevOps-kultur i tillegg til DevOps-praksiser og -verktøy kan teamene bedre dekke kundenes behov, øke tilliten til programmene de bygger, og nå forretningsmålene sine raskere.
Fordelene med DevOps
Team som innfører DevOps-kultur, -praksiser og -verktøy, presterer bedre og bygger bedre produkter raskere. Kundene blir mer fornøyde. Slik styrking av samarbeid og produktivitet er også vesentlig for å nå forretningsmål som disse:
Forkorte tiden det tar å få produkter ut på markedet
Tilpasning til marked og konkurrenter
Bevare systemenes stabilitet og pålitelighet
Forbedring av gjennomsnittstiden for gjenoppretting
DevOps og programmenes livssyklus
DevOps påvirker programmenes livssyklus gjennom fasene planlegging, utvikling, levering og drift. Fasene avhenger av hverandre og er ikke rollespesifikke. I ekte DevOps-kulturer er hver rolle til en viss grad involvert i hver fase.
Planlegging
I planleggingsfasen har DevOps-team idédugnader. De definerer og beskriver funksjoner og egenskaper ved programmene og systemene de bygger. De sporer fremdrift ved lave og høye detaljnivåer – fra enkeltproduktoppgaver til oppgaver som omfatter porteføljer med flere produkter. Lage oversikter over gjenværende arbeid, spore feil, bruke Scrum til å administrere fleksibel programvareutvikling og bruke Kanban-tavler og visualisere fremdriften med instrumentbord er noen av strategiene DevOps-team kan bruke for å planlegge på åpent og fleksibelt vis.
Utvikling
Utviklingsfasen inkluderer alle aspektene ved koding – skriving, testing, gjennomgang og integrasjon av kode utført av teammedlemmer – så vel som å bygge koden inn i byggartefakter som kan distribueres i ulike miljøer. DevOps-team vil innovere raskt, uten å måtte gi avkall på kvalitet, stabilitet eller produktivitet. For å oppnå det bruker de svært produktive verktøy, automatiserer trivielle og manuelle trinn og fortsetter i små trinn gjennom automatisert testing og kontinuerlig integrasjon.
Levering
Levering er prosessen med å distribuere programmer i produksjonsmiljøer på en konsekvent og pålitelig måte. Leveringsfasen inkluderer også distribusjon og konfigurering av den totalstyrte grunnleggende infrastrukturen som utgjør disse miljøene.
I leveringsfasen definerer teamene en administrasjonsprosess for utgivelsene med tydelige, manuelle godkjenningsstadier. De angir også automatiske porter som flytter programmene mellom de ulike fasene til de gjøres tilgjengelige for kundene. Automatisering av disse prosessene gjør dem skalerbare, repeterbare og kontrollerte. På den måten kan team som bruker DevOps, enkelt og sikkert levere hyppig.
Drift
Driftsfasen innebærer å opprettholde, overvåke og feilsøke programmene i produksjonsmiljøer. Når DevOps-praksiser innføres, jobber teamene for å sikre systempålitelighet og høy tilgjengelighet. De har null nedetid som mål mens de øker sikkerheten og effektiviserer styringen. DevOps-team vil identifisere problemene før de påvirker kundeopplevelsen og redusere dem så raskt de oppstår. Å opprettholde denne årvåkenheten krever rikholdig telemetri, praktisk varsling og full innsikt i programmene og det underliggende systemet.
DevOps-kultur
Selv om bruk av DevOps-praksiser automatiserer og optimaliserer prosesser gjennom teknologi, starter alt med kulturen i organisasjonen – og personene som spiller en rolle i den. Utfordringen med å fremme DevOps-kultur er at det krever grundige endringer i måten folk jobber og samarbeider på. Når organisasjoner går inn for DevOps-kultur, kan de skape et miljø der teamene kan utvikle seg og prestere på høyt nivå.
Samarbeid, synlighet og justering
Noe som kjennetegner en sunn DevOps-kultur, er samarbeid mellom teamene. Det starter med åpenhet. Ulike team, slik som utvikling og IT-drift, må dele DevOps-prosesser, -prioriteringer og -bekymringer med hverandre. Teamene må også planlegge arbeidet sammen og justere mål og suksesskriterier for bedriften.
Endringer i omfang og ansvar
Når teamene tilpasser seg til hverandre, tar de eierskap og blir involvert i de andre livssyklusfasene – ikke bare i dem som er vesentlige for deres egne roller. For eksempel blir utviklere ansvarlige, ikke bare for innovasjonen og kvaliteten som ble etablert i utviklingsfasen, men også for ytelsen og stabiliteten endringene deres fører til i driftsfasen. Samtidig sørger IT-operatører for å inkludere styring, sikkerhet og samsvar i planleggings- og utviklingsfasen.
Kortere utgivelsessykluser
DevOps-team holder seg fleksible ved å gi ut programvare i korte sykluser. Kortere utgivelsessykluser gjør planlegging og risikostyring enklere. Dette siden fremdriften er trinnvis. Det reduserer også påvirkningen på systemenes stabilitet. Forkortelse av utgivelsessyklusen gjør lar også organisasjonene tilpasse seg og reagere på endringer i kundebehov og konkurransepress.
Kontinuerlig læring
DevOps-team som presterer godt, fokuserer på vekst. Feil skjer raskt, og de innarbeider lærdommen i prosessene sine, forbedrer seg kontinuerlig, gjør kundene mer fornøyde og fremskynder innovasjon og tilpasningsevne til markedet. DevOps er en prosess, så der er alltid rom for vekst.
DevOps-praksiser
Ut over etableringen av DevOps-kulturen vekker teamene DevOps til live ved å implementere visse praksiser i løpet av programmenes livssykluser. Noen av disse praksisene bidrar til å få fart på, automatisere og forbedre en spesifikk fase. Andre strekker seg over flere faser og hjelper teamene med å etablere sømløse prosesser som bidrar til å øke produktiviteten.
Kontinuerlig integrering og kontinuerlig levering (CI/CD)
Konfigurasjonsadministrasjon refererer til administrering av ressurstilstander i et system som omfatter servere, virtuelle maskiner og databaser. Ved hjelp av administrasjonsverktøy for konfigurasjon kan teamene innføre endringer på en kontrollert, systematisk måte. De reduserer risikoene ved å endre på systemkonfigurasjonen. Team bruker verktøy for konfigurasjonsadministrasjon til å spore systemtilstand og bidra til å unngå konfigurasjonsavvik. Det er måten systemressursenes konfigurasjoner over tid avviker på fra den ønskede tilstanden definert for den.
Både systemdefinisjon og konfigurasjon, når det praktiseres sammen med infrastruktur som kode, er lett å lage maler av og automatisere. Det hjelper teamene å drifte komplekse miljøer i stor skala.
Versjonskontroll
Versjonskontroll er praksisen med å administrere kode i versjoner. Revisjoner spores og historikk endres for å gjøre kode enkelt å gjennomgå og gjenopprette. Denne praksisen implementeres vanligvis ved å bruke systemer for versjonskontroll slik som Git. De lar flere utviklere samarbeide om å skrive kode. Disse systemene sørger for en tydelig prosess med å integrere kodeendringer som skjer i de samme filene, håndtere konflikter og rulle tilbake endringer til tidligere tilstander.
Bruken av versjonskontroll er en grunnleggende DevOps-praksis. Det hjelper utviklingsteam å jobbe sammen, fordele kodeoppgaver blant medlemmene og lagre all kode for enkel gjenoppretting om nødvendig.
Versjonskontroll er også et nødvendig element ved andre praksiser, blant annet kontinuerlig integrering og infrastruktur som kode.
Programvareutvikling med Agile
Agile er en tilnærming til programvareutvikling som legger vekt på samarbeid mellom team, tilbakemeldinger fra kunder og brukere samt god tilpasningsevne til endring takket være korte utgivelsessykluser. Team som bruker Agile, sørger for kontinuerlige endringer og forbedringer for kundene. De henter inn tilbakemeldinger. Sli lærer de og tilpasser seg til kundenes ønsker og behov. Agile er svært forskjellig fra andre, mer tradisjonelle rammeverk. Fossefall, for eksempel, har lange utgivelsessykluser som er definert av sekvensielle faser. Kanban og Scrum er to populære rammeverk forbundet med Agile.
Infrastruktur som kode
Infrastruktur som kode definerer systemressurser og topologier på en beskrivende måte. Slik kan medarbeiderne håndtere disse ressursene på samme måte som de ville gjort med kode. Disse definisjonene kan også lagres og varieres i versjonskontrollsystemer. Der de kan gjennomgås og gjenopprettes – igjen som kode.
Bruk av infrastruktur som kode hjelper teamene med å distribuere systemressursene på en pålitelig, repeterbar og kontrollert måte. Infrastruktur som kode bidrar også til å automatisere distribusjon og reduserer risikoen for menneskelige feil, spesielt i store og komplekse miljøer. Denne repeterbare, pålitelige løsningen for miljødistribusjon lar teamene bevare utviklings- og testmiljøer som er identiske med produksjonsmiljøet. Duplisering av miljøer til ulike datasentre og skyplattformer blir på samme måte enklere og mer effektivt.
Konfigurasjonsbehandling
Konfigurasjonsadministrasjon refererer til administrering av ressurstilstander i et system som omfatter servere, virtuelle maskiner og databaser. Ved hjelp av administrasjonsverktøy for konfigurasjon kan teamene innføre endringer på en kontrollert, systematisk måte. De reduserer risikoene ved å endre på systemkonfigurasjonen. Team bruker verktøy for konfigurasjonsadministrasjon til å spore systemtilstand og bidra til å unngå konfigurasjonsavvik. Det er måten systemressursenes konfigurasjoner over tid avviker på fra den ønskede tilstanden definert for den.
Både systemdefinisjon og konfigurasjon, når det praktiseres sammen med infrastruktur som kode, er lett å lage maler av og automatisere. Det hjelper teamene å drifte komplekse miljøer i stor skala.
Kontinuerlig overvåking
Kontinuerlig overvåking innebærer fullstendig innsyn i sanntid i ytelsen og tilstanden til hele programstakken, fra den underliggende infrastrukturen som kjører programmet, til programvarekomponenter på høyere nivå. Dette innsynet består av innhenting av telemetri og metadata samt innstilling av varsler for forhåndsdefinerte tilstander som krever oppmerksomhet fra operatør. Telemetri består av hendelsesdata og logger hentet inn fra ulike deler av systemet. Disse lagres der de kan analyseres og kjøres spørringer på.
DevOps-team som presterer godt, sørger å angi praktiske, meningsfylte varsler og samle inn innholdsrik telemetri. Slik kan de hente ut innsikter fra store mengder data. Denne innsikten hjelper teamet å redusere problemer i sanntid og se hvordan de kan forbedre programmet i fremtidige utviklingssykluser.
DevOps-verktøy
Teamene har mange DevOps-verktøy som bidrar med å legge til rette for DevOps-kultur i organisasjonen. De fleste team er avhengige av flere verktøy og setter sammen egendefinerte verktøyskjeder som passer til behovene under hver fase i programmenes livssykluser. Selv om bruk av spesifikke verktøy eller teknologier ikke er det samme som å innføre DevOps, kan folk implementere og strømlinjeforme DevOps-praksiser når DevOps-kulturen er til stede, prosessene er definerte og de velger riktig verktøy. Få verktøyene til å sette DevOps ut i livet:
DevOps og skyen
Skyinnføring har ført til grunnleggende endringer i måten team bygger, distribuerer og driver programmene på. Sammen med innføringen av DevOps har teamene nå større mulighet til å forbedre praksisene og hjelpe kundene.
Skyfleksibilitet
Muligheten for raskt klargjøring og konfigurasjon av skymiljøer over flere områder med ubegrensede ressurser gir teamene større fleksibilitet når de skal distribuere appene sine. I stedet for å måtte kjøpe, konfigurere og opprettholde fysiske servere oppretter teamene komplekse skymiljøer på få minutter og lukker dem igjen når de ikke lenger trengs.
Kubernetes
Etter hvert som stadig flere programmer bruker beholderteknologi, blir Kubernetes bransjens løsning for organisering av beholdere i stor skala. Automatisering av prosessene med å bygge og distribuere beholdere via CI/CD-datasamlebånd og overvåking av disse beholderne i produksjon blir vitale praksiser i Kubernetes-epoken.
Serverløs databehandling
Da mesteparten av administrasjonen av infrastruktur er overført til skyleverandøren, kan teamene fokusere på appene sine heller enn den underliggende infrastrukturen. Serverløs databehandling gir mulighet til å kjøre programmer uten å måtte konfigurere og opprettholde servere. Noen alternativer reduserer kompleksiteten og risikoen ved distribusjon og drift.
Start DevOps-prosessen
Med alle de ulike tilgjengelige praksisene og løsningene kan DevOps virke overveldende i begynnelsen. Nøkkelen er å starte i det små og lære av andre.
Vanlige spørsmål
-
DevOps praktiseres på tvers av ulike roller i organisasjonene og krever at flere samarbeider tett. I de fleste tilfeller inkluderer DevOps-roller utvikling, IT, drift, sikkerhet og kundestøtte.
-
DevOps er ikke begrenset til én enkelt rolle. Alle som tar del i programmenes livssyklusfaser, må være del av DevOps-kulturen. Men i enkelte organisasjoner er der noen personer eller team som kun fokuserer på å legge til rette for automatisering, definere praksiser og implementere CI/CD-datasamlebånd. Den offisielle tittelen på disse rollene kan være DevOps-tekniker eller DevOps-spesialist.
-
Å implementere DevOps i store organisasjoner kan være ekstremt utfordrende. Kulturendringer i store organisasjoner samt standardisering av prosesser og verktøy krever tålmodighet og utholdenhet. I de fleste store organisasjoner finnes dem som tar i bruk nye DevOps-praksiser raskt. Etter hvert som disse praksisene utvikler seg og gir positive resultater, følger vanligvis andre team etter og starter sine egne DevOps-prosesser.
Finn ut hvordan team i hele Microsoft innførte DevOps-kultur.
-
Det overordnede målet med DevOps er å levere kontinuerlig verdi til kundene. Resultatene ved innføring av DevOps må måles i forhold til forretningsmålene. DevOps-team er juster til disse målene og oppnår dem takket være korte utgivelsessykluser. Disse syklusene legger til rette for fleksibel respons på markedet og kontinuerlig læring takket være tilbakemeldinger fra kundene.
-
Både DevOps og Agile er moderne rammeverk for programvareutvikling til produksjon lansering eller en utgivelse av produkter. DevOps er en kultur som fremmer samarbeid mellom alle rollene som er involvert i utvikling og vedlikehold av programvare. Agile er en utviklingsmetode utformet for å opprettholde produktiviteten og fremme utgivelser for behov i stadig endring. DevOps og Agile utelukker ikke hverandre. De praktiseres ofte sammen.
-
Sammen med kontinuerlig integrering er kontinuerlig levering og kontinuerlig distribusjon praksiser som automatiserer faser innen programvarelevering.