Hva er DevOps?

Finn ut mer om hvordan DevOps forener folk, prosess og teknologi for å levere bedre produkter raskere til kunder

Definisjon av DevOps

DevOps er en blanding av utvikling (Dev) og operasjoner (Ops), og er foreninger av personer, prosess og teknologi for å levere verdi til kundene hele tiden.

Hva betyr DevOps for en organisasjon og avdelingene? DevOps muliggjør at tidligere isolerte roller – utvikling, IT-operasjoner, kvalitetsteknikk og sikkerhet – kan koordinere og samarbeide for å produsere bedre og mer pålitelige produkter. Ved å bruke en DevOps-kultur sammen med DevOps-praksiser og -verktøy får teamene muligheten til å dekke behovene til kundene bedre, øke tilliten til programmene de bygger, og oppnå forretningsmålene raskere.

Fordelene med DevOps

Avdelinger som tar i bruk kulturen, praksiser og verktøy som DevOps tilbyr, presterer bedre og skaper bedre produkter raskere – med større kundetilfredshet. En slik forbedring av samarbeid og produktivitet er også vesentlig for å nå forretningsmål som disse:

Forkorter tiden fra produksjon til markedslansering

Tilpasser til markedet og konkurrentene

Opprettholdelse systemstabilitet og pålitelighet

Forbedring av gjennomsnittlig tid til gjenoppretting

DevOps og programlivssyklusen

DevOps påvirker livssyklusen til programmene gjennom alle faser, både planlegging, utvikling, levering og drift. Hver fase avhenger av de andre, og fasene er ikke rollespesifikke. I en ekte DevOps-kultur er hver rolle involvert i hver fase til en viss grad.

Planlegging

I planleggingsfasen vil en DevOps-avdeling myldre idéer, definere og beskrive funksjoner og muligheter ved programmene og systemene de bygger. De sporer fremdrift ved lave og høye granularitetsnivåer – fra enkeltproduktoppgaver til oppgaver som omfatter porteføljer for flere produkter. Lag en oversikt over gjenværende arbeid, spore feil, bruke Scrum til å få en smidig administrering av programvareutvikling, bruke Kanban-tavler og visualisere fremdrift med instrumentbord er noen av metodene en DevOps-avdeling kan bruke til å planlegge på en smidig og åpen måte.

Utvikling

Utviklingsfasen inkluderer alle aspekter av koding – skriving, testing, gjennomgang og integrasjon av kode av teammedlemmer – så vel som å bygge koden inn i byggartefakter som kan distribueres i ulike miljøer. DevOps-avdelinger ønsker å være innovative og hurtige uten å ofre 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 å rulle ut programmer i produksjonsmiljøer på en konsekvent og pålitelig måte. Leveringsfasen inkluderer også utrulling og konfigurering av den fullstendig styrte grunnleggende infrastrukturen som utgjør disse miljøene.

I leveringsfasen definerer avdelingene en administrasjonsprosess for utrulling med klare, manuelle godkjenningsstadier. De setter også opp automatiske porter som flytter programmer mellom trinnene 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 levere hyppig med enkelhet, selvsikkerhet og ro i sjelen.

Drift

Driftsfasen innebærer å opprettholde, overvåke og feilsøke programmer i produksjonsmiljøer. I en prosess der DevOps-praksiser tas i bruk, jobber medarbeiderne for å sikre systempålitelighet og høy tilgjengelighet, har null nedetid som mål og styrker samtidig sikkerheten og styringen. DevOps-team forsøker å identifisere feil før de påvirker kundeopplevelsen og avhjelper feil raskt når de oppstår. Opprettholdelse av denne årvåkenheten krever rikholdig telemetri, varsler som kan omsettes i handling og full innsikt i programmer 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 å dyrke en DevOps-kultur krever dype endringer i måten folk jobber og samarbeider på. Når organisasjoner forplikter seg til en DevOps-kultur, kan de skape et miljø der avdelingene utvikler seg med større effektivitet, produktivitet og kvalitet.

Samarbeid, synlighet og samkjørthet

Et kjennemerke ved en sunn DevOps-kultur er samarbeid mellom avdelingene, og dette starter med åpenhet. Ulike team som utvikling og IT-drift må dele sine DevOps-prosesser, prioriteringer og bekymringer med hverandre. Avdelingene må også planlegge sammen samt ha de samme målene og suksesskriteriene relatert til bedriften.

Endring i omfang og ansvar

Når team tilpasser seg hverandre, tar de eierskap og blir involvert i de ekstra livssyklusfasene- ikke bare de som er vesentlige for deres roller. Utviklere blir for eksempel ansvarlige ikke bare for innovasjon og kvalitet 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-avdelinger forblir fleksible ved å gi ut programvare i korte sykluser. Kortere utgivelsessykluser gjør planlegging og risikostyring enklere siden fremdriften er trinnvis, noe som også reduserer innvirkningen på systemstabilitet. Forkortelse av utgivelsessyklusen gjør det også mulig for organisasjoner å tilpasse seg og reagere på endrede kundebehov og konkurransepress.

Kontinuerlig læring

DevOps-team som presterer godt, har en veksttankegang. De håndterer feil raskt og inkorporerer læring i prosessene sine, forbedrer seg kontinuerlig, øker kundetilfredshet og fremskynder innovasjon og tilpasningsevne til markedet. DevOps er en prosess, så det er alltid rom til å vokse.

Se hvordan team i hele Microsoft gikk over til en DevOps-kultur

Finn ut mer

DevOps-praksiser

Utover å etablere en DevOps-kultur, bringer avdelingen DevOps til liv ved å implementere enkelte praksiser gjennom programlivssyklusen. Noen av disse praksisene får fart på, automatiserer og forbedrer en spesifikk fase. Andre strekker seg over flere faser og hjelper avdelingen med å etablere sømløse prosesser som bidrar til å forbedre produktiviteten.

Kontinuerlig integrering og kontinuerlig levering (CI/CD)

Kontinuerlig integrering er en praksis for programvareutvikling der utviklere ofte integrerer kodeendringer i hovedkodegrenen. Kontinuerlig integrering tar i bruk automatisert testing som kjører hver gang ny kode lagres, slik at koden i hovedgrenen alltid er stabil.

Kontinuerlig levering er hyppig, automatisert utrulling av nye programversjoner i et produksjonsmiljø. Ved å automatisere trinnene som kreves for distribusjon, reduserer team feil som kan oppstå ved distribusjon og muliggjør mer hyppige oppdateringer.

Når begge praksiser er på plass, resulterer det i prosessen CI/CD. Denne omfatter fullstendig automatisering av alle trinn mellom lagring av kode til utrulling for produksjon. Implementering av CI/CD gjør det mulig for medarbeiderne å fokusere på å kompilere kode, og fjerner administrasjonsfeil og potensiell menneskelig feil i manuelle, kjedelige trinn. CI/CD gjør også prosessen med å rulle ut ny kode raskere og mindre risikabel. Utrullinger kan da skje oftere og i mindre trinn, noe som hjelper avdelingene med å bli mer fleksible, mer produktive og tryggere på koden de kjører.

Versjonskontroll

Versjonskontroll er praksisen med å administrere kode i versjoner, der man sporer revisjoner og endrer historikk for å gjøre kode enkelt å gjennomgå og gjenopprette. Denne praksisen implementeres vanligvis ved å bruke systemer for versjonskontroll, blant annet Git, som gjør det mulig for flere utviklere å samarbeide om å skrive kode. Disse systemene muliggjør en tydelig prosess med å integrere kodeendringer som skjer i samme filer, håndtere konflikter og rulle tilbake endringer til tidligere tilstander.

Bruken av versjonskontroll er en grunnleggende DevOps-praksis, noe som hjelper utviklingsavdelinger med å jobbe sammen, dele kodeoppgaver mellom medarbeiderne og lagre all kode for enkel gjenoppretting om nødvendig.

Versjonskontroll er også et nødvendig element i andre praksiser, blant annet kontinuerlig integrering og infrastruktur som kode.

Finn ut mer om Git

Programvareutvikling i Agile

Agile er en tilnærming til programvareutvikling som legger vekt på samarbeid mellom avdelinger, tilbakemeldinger fra kunder og brukere, og en høy tilpasningsevne til endring gjennom korte utgivelsessykluser. Avdelinger som bruker Agile foretar kontinuerlige endringer og forbedringer for kundene, samler inn tilbakemeldingene deres og lærer og tilpasser seg basert på kundenes ønsker og behov. Agile er svært forskjellig fra andre, mer tradisjonelle strukturer, blant annet fossefall, der lange utgivelsessykluser er definert av sekvensielle faser. Kanban og Scrum er to populære strukturer forbundet med Agile.

Finn ut hvordan smidig utvikling og DevOps fungerer sammen

Infrastruktur som kode

Infrastruktur som kode definerer systemressurser og topologier på en beskrivende måte som lar medarbeiderne administrere disse ressursene på samme måte som de ville gjort med kode. Disse definisjonene kan også lagres og gjengis i versjonskontrollsystemer, der de kan gjennomgås og gjenopprettes – igjen som kode.

Bruk av infrastruktur som kode hjelper avdelingene med å rulle ut systemressursene på en pålitelig, repeterbar og kontrollert måte. Infrastruktur som kode bidrar også til å automatisere utrulling og reduserer risikoen for menneskelig feil, spesielt for komplekse, store miljøer. Denne repeterbare, pålitelige løsningen for miljøutrulling gjør det mulig for avdelingene å opprettholde utviklings- og testmiljøer som er identiske med produksjonsmiljøet. Duplisering av miljøer til ulike datasentre og skyplattformer blir 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 avdelingene sette i gang endringer på en kontrollert, systematisk måte og redusere risikoen for å endre på systemkonfigurasjonen. Team bruker konfigurasjonsadministrasjon for å spore systemtilstand og unngå konfigurasjonsavvik, som er måten en systemressurs sin konfigurasjon avviker på over tid fra den ønskede tilstanden definert for den.

Praktisert sammen med infrastruktur som kode er både systemdefinisjon og konfigurasjon lett å lage maler av og automatisere, noe som hjelper medarbeiderne med å drifte komplekse miljøer i stor skala.

Kontinuerlig overvåking

Kontinuerlig overvåking innebærer å ha full synlighet i sanntid i ytelsen og tilstanden til hele applikasjonsstakken, fra den underliggende infrastrukturen som kjører applikasjonen, til programvarekomponenter på høyere nivå. Synligheten består av innsamling av telemetri og metadata så vel som innstilling av varsler for forhåndsdefinerte betingelser som krever oppmerksomhet fra en operatør. Telemetri består av hendelsesdata og logger samlet 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 for at de angir meningsfylte varsler som kan omsettes i handling og samler inn rik telemetri slik at de kan få innsikt fra store mengder data. Denne innsikten hjelper teamet med å avhjelpe feil i sanntid og se hvordan de kan forbedre applikasjonen i fremtidige utviklingssykluser.

DevOps-verktøy

Medarbeiderne har mange DevOps-verktøy som bidrar med å legge til rette for en DevOps-kultur i organisasjonen. De fleste medarbeidere er faste brukere av flere verktøy og setter sammen egendefinerte verktøyskjeder som passer med behovene for hver fase i programlivssyklusen. Selv om bruk av et spesifikt verktøy eller en spesifikk teknologi ikke er det samme som å ta i bruk DevOps, kan folk implementere og strømlinjeforme DevOps-praksiser hvis den definerte DevOps-kulturen er til stede, prosessene er definerte og de velger riktige verktøy. Få verktøyene til å bruke DevOps i praksis:

DevOps og skyen

Skybruk har fundamentalt endret måten team bygger, distribuerer og driver applikasjoner på. Sammen med bruken av DevOps har team nå større mulighet for å forbedre praksisene deres og kan bedre betjene kundene deres.

Skysmidighet

Muligheten til å klargjøre og konfigurere skymiljøer raskt over flere områder med ubegrensede ressurser gir avdelingene større smidighet når de skal rulle ut apper. I stedet for å måtte kjøpe, konfigurere og opprettholde fysiske servere lager team komplekse skymiljøer på minutter og slår dem av igjen når de ikke lenger trengs.

Kubernetes

Etter hvert som flere og flere applikasjoner bruker beholderteknologi, blir Kubernetes bransjeløsningen for instrumentering av beholdere i rett skala. Automatisering av prosessene med å bygge og rulle ut beholdere via CI/CD-datasamlebånd og overvåking av disse beholderne i produksjon blir viktige praksiser i moderne drift med Kubernetes.

Serverløs databehandling

Med mesteparten av administrasjonen av infrastruktur flyttet til skyleverandøren kan team fokusere på appene sine i stedet for den underliggende infrastrukturen. Serverløs databehandling gjør det mulig å kjøre programmer uten å konfigurere og opprettholde servere. Noen alternativer reduserer kompleksiteten og risikoen ved utrulling og drift.

Start din egen DevOps-prosess

Med alle de ulike tilgjengelige praksisene og løsningene kan DevOps først virke overveldende. Nøkkelen er å starte i det små og lære av andre.

Vanlige spørsmål

  • DevOps praktiseres i ulike roller i en organisasjon og krever at flere av dem samarbeider tett. I de fleste tilfeller inkluderer DevOps-roller utvikling, IT, drift, sikkerhet og støtte.

    Finn ut hvordan du bygger en DevOps-praksis.

  • DevOps er ikke begrenset til én enkelt rolle. Alle som tar del i hver applikasjonslivssyklusfasen, må omfavne DevOps-kulturen. Men i enkelte organisasjoner er det et par personer eller team som kun fokuserer på å muliggjøre 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 en stor organisasjon kan være ekstremt utfordrende. Endring av kulturen i en stor organisasjon så vel som standardisering av prosesser og verktøy krever tålmodighet og utholdenhet. I de fleste store organisasjoner finner man de 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 DevOps-reisen sin.

    Se hvordan team i hele Microsoft innførte en DevOps-kultur.

  • Det overordnede målet med DevOps handler om å levere kontinuerlig verdi til kundene. Resultatene av å bruke DevOps må måles i forhold til forretningsmål. DevOps-avdelinger er innrettet rundt disse målene og oppnår dem ved hjelp av korte utgivelsessykluser. Disse syklusene muliggjør fleksibel respons overfor markedet og kontinuerlig læring gjennom tilbakemeldinger fra kundene.
  • Både DevOps og Agile er moderne strukturer for programvareutvikling med formål om å produsere et produkt og legge til rette for en lansering eller en utgivelse. DevOps er en kultur som fremmer samarbeid mellom alle roller involvert i utvikling og vedlikehold av programvare. Agile er en utviklingsmetode utformet for å opprettholde produktivitet og levere utgivelser under stadig endrede behov. DevOps og Agile utelukker ikke hverandre og praktiseres ofte sammen.

    Finn ut hvordan du tar i bruk DevOps og Agile.

  • Sammen med kontinuerlig integrering er kontinuerlig levering og kontinuerlig distribusjon praksiser som automatiserer faser av programvarelevering.