Hvad er DevOps?

Se, hvordan DevOps samler folk, processer og teknologi, så der hurtigere kan leveres bedre produkter til kunderne

DevOps-definition

DevOps (som er kombinationen af udviklings- og it-driftsafdelingen) er foreningen af mennesker, processer og teknologi, som skaber en kontinuerlig levering af værdi til kunder.

Hvad betyder DevOps for teams? DevOps understøtter tidligere isolerede roller som udvikling, it-drift, kvalitetskontrol og sikkerhed, for at koordinere og samarbejde om at producere bedre og mere pålidelige roller. Ved at tilpasse sig en DevOps-kultur og tage DevOps-fremgangsmåder og -værktøjer i brug kan teams bedre reagere på kundernes skiftende behov, øge tilliden til de applikationer, de bygger, og opfylde forretningsmæssige behov hurtigere.

Fordelene ved DevOps

De teams, der vælger at bruge DevOps-kulturen, -fremgangsmåder og -værktøjerne bliver meget produktive og bygger bedre produkter hurtigere og øger dermed kundernes tilfredshed. Det forbedrede samarbejde og den højere produktivitet er også vigtigt for at kunne nå forretningsmæssige mål som disse:

Hurtigere time-to-market

Tilpasning til marked og konkurrence

Vedligeholder systemets stabilitet og driftssikkerhed

Forbedrer middeltiden til gendannelse

DevOps og applikationslivscyklussen

DevOps påvirker applikationens livscyklus gennem faserne for planlægning, udvikling, levering og drift. Hver fase afhænger af de andre, og faserne er ikke rollespecifikke. I en ægte DevOps-kultur er alle roller til en vis grad involveret i alle faser.

Plan

I planlægningsfasen vil DevOps-teams få idéer til, definere og beskrive funktionerne i de applikationer og systemer, de bygger. De holder styr på statussen for alle niveauer lige fra opgaver for enkelte produkter til opgaver, der berører mange produkter. Oprettelse af logge over udestående opgaver, sporing af fejl, administration af den agile softwareudvikling med Scrum, brug af Kanban-tavler og visualisering af statussen med dashboards er nogle af de metoder, som DevOps-teams bruger med agilitet og synlighed.

Udvikling

Denne udviklingsfase omfatter alle aspekter af kodningen – at skrive, teste, gennemse og integrere kode. Den omfatter også at bygge koden til artefakter, der kan udrulles i forskellige miljøer. DevOps-teams er på jagt efter at innovere hurtigt uden at gå på kompromis med kvalitet, stabilitet og produktivitet. Det kræver, at de bruger værktøjer, der sikrer en høj produktivitet, at de automatiserer trivielle og manuelle trin og gentager i små trin via automatisk test og løbende integration.

Levering

Levering er processen med at udrulle applikationer i produktionsmiljøer på en ensartet og pålidelig måde. Leveringsfasen omfatter også udrulning og konfiguration af en fuldt styret basisinfrastruktur, som udgør disse miljøer.

I leveringsfasen kan teams definere en proces til administration af udgivelserne med tydelige manuelle godkendelsesfaser. De definerer også automatiske gates, der flytter applikationer mellem de enkelte faser, indtil de bliver tilgængelige for kunderne. Når processerne automatiseres, kan de skaleres, gentages og styres. På den måde kan de teams, der praktiserer DevOps, nemt levere ofte med tillid til processen og ro i sindet.

Drift

Driftsfasen omfatter vedligeholdelse, overvågning og fejlfinding af applikationer i produktionsmiljøer. Når teams begynder at bruge DevOps-metoderne, arbejder de på at sikre systemets pålidelighed, høj tilgængelighed og at undgå nedetid, mens de arbejder på at forbedre sikkerheden og styringen. DevOps-teams forsøger at identificere problemer, før de kan påvirke kundeoplevelsen, så de kan afhjælpe problemer hurtigst muligt. Hvis du vil fastholde denne årvågenhed, er det nødvendigt med detaljeret telemetri, advarsler, man kan handle ud fra, og fuld synlighed i applikationer og det underliggende system.

DevOps-kultur

DevOps-fremgangsmåderne automatiserer og optimerer processer via teknologi, men det hele starter med kulturen i organisationen – og de mennesker, som er en del af kulturen. Udfordringen ved at opbygge en DevOps-kultur kræver store ændringer i den måde, som folk er vant til at arbejde og samarbejde på. Men når organisationer forpligter sig til en DevOps-kultur, kan du skabe et miljø, hvor højtydende teams kan udvikle sig.

Samarbejde, synlighed og afstemning

Et af kendetegnene ved en sund DevOps-kultur er samarbejdet mellem teams, som starter med synlighed. De forskellige teams som udviklere og it-driften skal dele deres DevOps-processer, prioriteter og bekymringer med hinanden. Disse teams skal også planlægge at arbejde sammen og afstemme mål og succeskriterier i forhold til forretningen.

Ændringer i omfang og ansvarsområder

Efterhånden som teams tilpasser sig, tager de ejerskab og bliver involveret i flere faser i livscyklussen – og ikke kun i de faser, som er de primære for deres roller. Udviklere bliver f.eks. ikke kun ansvarlige for den innovation og kvalitet, der er etableret i udviklingsfasen, men også for ydeevnen og stabiliteten af de ændringer, deres ændringer medfører i driftsfasen. Samtidig vil it-driften inkludere styring, sikkerhed og overholdelse af angivne standarder i planlægnings- og udviklingsfasen.

Kortere udgivelsescyklusser

DevOps-teams forbliver agile, mens de udgiver software med korte cyklusser. Kortere udgivelsescyklusser gør planlægning og risikostyring nemmere, da fremskridtene sker trinvist, hvilket også påvirker systemstabiliteten mindre. En kortere udgivelsescyklus giver også organisationer mulighed for at reagere på kundernes skiftende behov og på presset fra konkurrenterne.

Kontinuerlig læring

Højtydende DevOps-teams skaber en mentalitet med fokus på vækst. De laver hurtigt fejl og indarbejder deres nye viden i deres processer, så de hele tiden bliver bedre, øger kundetilfredsheden og sætter fart i innovation og markedstilpasning. DevOps er en rejse, hvor der altid er plads til at vokse.

Se, hvordan teams på tværs af Microsoft har indført en DevOps-kultur

Få mere at vide

DevOps-fremgangsmåder

Ud over at definere en DevOps-kultur bruger teams DevOps til at implementere visse metoder gennem applikationslivscyklussen. Nogle af disse metoder er med til at accelerere, automatisere og forbedre en specifik fase. Andre strækker sig over flere faser og hjælper teams med processer, der styrker produktiviteten.

Løbende integration og levering (CI/CD)

Løbende integration er en fremgangsmåde inden for softwareudvikling, hvor udviklerne løbende fletter kodeændringer ind i den primære kodeforgrening. Løbende integration udruller automatisk test, som kører, hver gang der indsendes ny kode, så den primære forgrening altid er stabil.

Løbende levering er en hyppig og automatiseret udrulning af nye applikationsversioner i et produktionsmiljø. Ved at automatisere trinnene for udrulning kan teams reducere den mængde problemer, der kan ske under udrulning og give mulighed for hyppigere opdateringer.

Når begge fremgangsmåder er på plads, resulterer det i processen CI/CD (løbende integration, løbende levering), som omfatter fuld automatisering af alle trin mellem kodeindsendelse og produktionsudrulning. Når CI/CD implementeres kan teams fokusere på at bygge kode, og det fjerner nogle faste udgifter og potentielle menneskelige fejl, der kan ske under manuelle og trivielle trin. CI/CD gør også udrulning af ny kode hurtigere og mere sikkert. Derfra sker udrulninger oftere og i mindre intervaller, så teams kan blive mere agile, mere produktive og med større tillid til kørsel af koden.

Versionsstyring

Versionsstyring er en praksis til at administrere kode i versioner. Sporingen af versioner og ændringshistorik gør det nemt at gennemse og gendanne kode. Denne praksis implementeres som regel ved hjælp af versionsstyringssystemer som Git, hvor flere udviklere kan samarbejde om at udvikle kode. Disse systemer giver en tydelig proces til fletning af kodeændringer i de samme filer, håndtering af konflikter og tilbagerulning af kodeændringer til tidligere stadier.

Brugen af versionsstyring er en fundamental DevOps-praksis, der hjælper udviklingsteams med at samarbejde, opdele kodningsopgaver mellem teammedlemmer og gemme al kode til nem genoprettelse, hvis det er nødvendigt.

Versionsstyring er også et nødvendigt element i andre praksisser, f.eks. løbende integration og infrastruktur som kode.

Få mere at vide om Git

Softwareudvikling efter agile-metoden

Agile er en tilgang til softwareudvikling, som lægger vægt på teamsamarbejde, kunde- og brugerfeedback samt høj og fleksibel tilpasning til ændringer via korte udgivelsescyklusser. De teams, der følger agile-metoden, leverer løbende ændringer og forbedringer til kunderne, indsamler deres feedback og lærer og tilpasser baseret på kundernes ønsker og behov. Agile-metoden er væsentligt forskellig fra andre mere traditionelle strukturer som vandfaldsstrukturen, der inkluderer lange udgivelsescyklusser, som defineres ved sekventielle faser. Kanban og Scrum er to populære agile-strukturer.

Få mere at vide om, hvordan Agilitet og DevOps arbejder sammen

Infrastruktur som kode

Infrastruktur som kode definerer systemressourcer og topologier på en beskrivende måde, som gør det muligt for teams at administrere ressourcerne på samme måde, som de administrerer kode. Definitionerne kan også gemmes og versioneres i versionsstyringssystemer, hvor de kan gennemses og gendannes – igen på samme måde som kode.

Når teams bruger infrastruktur som kode, er det nemmere at udrulle systemressourcer på en pålidelig og kontrolleret måde, der kan gentages. Infrastruktur som kode hjælper også med automatisering af udrulning og mindsker risikoen for menneskelige fejl – især i store og komplekse miljøer. Med denne pålidelige løsning til udrulning af miljøet, som også er nem at gentage, kan teams vedligeholde udviklings- og testmiljøer, der er identiske med produktionsmiljøet. Det bliver også mere enkelt og effektivt at duplikere miljøer til forskellige datacentre og skyplatforme.

Konfigurationsstyring

Konfigurationsstyring refererer til administrationen af tilstanden af ressourcerne i et system, herunder servere, virtuelle maskiner og databaser. Ved hjælp af værktøjer til konfigurationsstyring kan teams udrulle ændringer på en kontrolleret og systematisk måde og dermed reducere risiciene ved at ændre systemkonfigurationen. Teams bruger værktøjer til konfigurationsstyring til at spore systemtilstanden og sikre, at konfigurationen ikke skrider, så det sikres, at en systemressources konfiguration ikke afviger fra den ønskede tilstand, der er defineret for den.

Hvis dette sker sammen med infrastruktur som kode, er både systemdefinition og -konfiguration nemt at oprette som skabeloner og automatisere for de teams, der skal håndtere komplekse miljøer i stor skala.

Kontinuerlig overvågning

Kontinuerlig overvågning betyder, at teamet har fuld synlighed i ydeevnen og tilstanden for hele applikationsstakken i realtid lige fra den underliggende infrastruktur til softwarekomponenter på højere niveau. Synligheden består af samlingen af telemetri og metadata samt indstillingen af advarsler for foruddefinerede betingelser, som kræver opmærksomhed fra en operatør. Telemetri består af data og logge, der indsamles fra forskellige dele af systemet, og som gemmes til analyse og forespørgsler.

Effektive DevOps-teams sikrer, at de bruger advarsler, der giver mening, og som der kan reageres ud fra, og de indsamler detaljerede telemetridata, så de kan samle viden ud fra store mængder data. Denne viden hjælper teamet med at afhjælpe problemer i realtid og at se, hvordan de kan forbedre applikationen i fremtidige udviklingscyklusser.

DevOps-værktøjer

Teams har mange DevOps-værktøjer, der hjælper dem med at facilitere en DevOps-kultur i deres organisation. De fleste teams bruger flere værktøjer til at opbygge deres egen værktøjskasse, som passer til behovene i de enkelte faser af applikationslivscyklussen. Selvom brugen af specifikke værktøjer eller teknologier ikke er det samme som at bruge DevOps, kan brugen af de rette værktøjer gøre det nemmere at komme i gang med at implementere DevOps-fremgangsmåder og skabe en DevOps-kultur. Få de rette værktøjer til at komme i gang med DevOps:

DevOps og skyen

Skyen har fundamentalt ændret den måde, som teams bygger, udruller og afvikler applikationer på. Sammen med DevOps har teams nu endnu bedre mulighed for at forbedre deres fremgangsmåder og servicere deres kunder bedre.

Fleksibilitet i skyen

Med muligheden for hurtigt at kunne klargøre og konfigurere skybaserede miljøer i flere regioner og med ubegrænsede ressourcer, kan teams opnå høj fleksibilitet, når de udruller deres apps. I stedet for at skulle købe, konfigurere og vedligeholde fysiske servere, kan teams nu oprette komplekse skybaserede miljøer på få minutter, og du kan lukke dem ned, når der ikke længere er brug for dem.

Kubernetes

Efterhånden som flere og flere applikationer bruger objektbeholderteknologi, er Kubernetes på vej til at blive branchestandarden for orkestrering af objektbeholdere i stor skala. Automatisering af processerne til at bygge og udrulle objektbeholdere via CI/CD-pipelines og overvågning af objektbeholderne i produktionsmiljøet bliver en vigtig metode med Kubernetes.

Serveruafhængig databehandling

Når det meste af arbejdet med at administrere infrastrukturen flyttes til udbyderen af skyen, kan teams fokusere på deres apps i stedet for på den underliggende infrastruktur. Med serveruafhængig databehandling kan du køre applikationer uden at skulle konfigurere og vedligeholde servere. Nogle muligheder reducerer desuden kompleksiteten og risiciene ved udrulning og drift.

Start din egen DevOps-rejse

Med alle de forskellige metoder og løsninger, der findes, kan DevOps virke overvældende at komme i gang med. Nøglen er at starte i det små og at lære fra andre.

Ofte stillede spørgsmål

  • DevOps praktiseres på tværs af forskellige roller i en organisation og kræver, at flere af dem samarbejder tæt. I de fleste tilfælde omfatter DevOps-roller udviklere, it, drift og support.

    Lær, hvordan du opbygger en DevOps-praksis.

  • DevOps er ikke begrænset til en enkelt rolle. Alle, der tager del i faserne i en applikations livscyklus, skal tage DevOps-kulturen til sig. I nogle organisationer vil der dog være nogle få personer eller teams, som udelukkende har fokus på at understøtte automatisering, definition af fremgangsmåder og implementering af CI/CD-pipelines. Nogle gange vil titlen på disse roller være DevOps-tekniker eller DevOps-specialist.
  • Det kan være en stor udfordring for en organisation at skifte til DevOps. Det kræver både tålmodighed og vedholdenhed at ændre kulturen i en stor organisation og at standardisere processer og brugen af værktøjer. I de fleste store organisationer vil nogle gå foran med at tage DevOps-fremgangsmåder i brug. Efterhånden som disse fremgangsmåder bliver modnet og skaber positive resultater, vil andre teams som regel følge efter – starten på deres DevOps-rejse.

    Få mere at vide om, hvordan teams på tværs af Microsoft har indført en DevOps-kultur.

  • Det helt basale mål med DevOps er at kunne levere løbende værdi til kunderne. Resultaterne ved at bruge DevOps skal måles i relation til de forretningsmæssige mål. DevOps-teams tilpasser sig disse mål og opnår dem gennem korte udgivelsescyklusser. Disse cyklusser giver mulighed for at reagere med stor fleksibilitet på markedets behov og på løbende læring gennem kundefeedback.
  • Både DevOps og Agile er moderne softwareudviklingspraksisser, der skaber en struktur for produktionen af et produkt, en lancering eller en udgivelse. DevOps er en kultur, der støtter samarbejde på tværs af alle de roller, der er involveret i udviklingen og vedligeholdelsen af software. Agile er en udviklingsmetodologi, der er designet til at opretholde produktiviteten og fungere som drivkraft for udgivelser i en virkelighed med skiftende behov. DevOps og Agile er ikke uforenelige og bruges ofte i samspil.

    Lær, hvordan du inkorporerer DevOps og Agilitet.

  • Sammen med løbende integration er løbende levering og løbende udvikling metoder, der automatiserer faserne i softwareleveringen.