Hvad er DevOps?
Se, hvordan DevOps samler folk, processer og teknologi, så der kan leveres bedre produkter til kunderne hurtigere.
DevOps-definition
DevOps (som er kombinationen af udvikling (development) og drift (operations)) er en kombination af mennesker, processer og teknologi, som skaber en kontinuerlig levering af værdi til kunder.
Hvad betyder DevOps for teams? DevOps understøtter tidligere siloroller som udvikling, it-drift, kvalitetskontrol og sikkerhed for at koordinere og samarbejde om at producere bedre og mere pålidelige produkter. Ved at tage en DevOps-kultur i brug og bruge DevOps-fremgangsmåder og -værktøjer kan teams bedre reagere på kundernes behov, øge tilliden til de programmer, de udvikler, og nå forretningsmæssige mål hurtigere.
Fordelene ved DevOps
De teams, der tager DevOps-kulturen, -fremgangsmåder og -værktøjerne i brug, bliver meget produktive og udvikler bedre produkter hurtigere og øger dermed kundernes tilfredshed. Det forbedrede samarbejde og den øgede produktivitet er også vigtigt for at kunne nå forretningsmæssige mål som disse:
Hurtigere lancering på markedet
Tilpasning til markedet og konkurrencen
Vedligeholdelse af systemets stabilitet og driftssikkerhed
Kortere gennemsnitstid til genoprettelse
DevOps og programlivscyklussen
DevOps påvirker programmers 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.
Planlægning
I planlægningsfasen kan DevOps-teams idéudvikle, definere og beskrive funktionerne i de programmer og systemer, de udvikler. De holder øje med statussen på alle niveauer, lige fra opgaver for enkelte produkter til opgaver, der påvirker mange produkter. Oprettelse af opgavebeholdninger, 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 på en agil og synlig måde.
Udvikling
Denne udviklingsfase omfatter alle aspekter af kodningen – at skrive, teste, gennemse og integrere kode af teammedlemmer. Den omfatter også at udvikle kode 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 små og manuelle trin og gentager med gradvis forøgelse via automatisk test og løbende integration.
Levering
Levering består i at udrulle programmer 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 programmer 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 bruger DevOps, nemt levere med tillid til processen og ro i sindet.
Drift
Driftsfasen omfatter vedligeholdelse, overvågning og fejlfinding af programmer i produktionsmiljøer. Når teams begynder at bruge DevOps-fremgangsmåderne, arbejder de på at sikre systemets pålidelighed, høj tilgængelighed og at forsøger 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 udnytte denne årvågenhed, er det nødvendigt med detaljeret telemetri, advarsler, man kan handle ud fra, og fuld synlighed i programmerne 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 organisationen. Udfordringen ved at skabe 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 på en DevOps-kultur, kan de skabe et miljø, der skaber effektive teams.
Samarbejde, synlighed og justering
Et af kendetegnene ved en sund DevOps-kultur er samarbejdet mellem teams, som starter med synlighed. De forskellige teams inden for udvikling og it-drift skal dele deres DevOps-processer, prioriteter og bekymringer med hinanden. Disse teams skal også planlægge arbejdet 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 ellers ville være deres primære ansvarsområde. 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 lanceringscyklusser
DevOps-teams forbliver agile, mens de udgiver software med korte cyklusser. Kortere lanceringscyklusser gør planlægning og risikostyring nemmere, da fremskridtene sker gradvist, hvilket også påvirker systemstabiliteten mindre. En kortere lanceringscyklus 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 tankegang med fokus på vækst. De lærer hurtigt og indarbejder deres nye viden i processerne, 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.
DevOps-fremgangsmåder
Ud over at definere en DevOps-kultur bruger teams DevOps til at implementere visse metoder gennem programlivscyklussen. 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 forbedrer produktiviteten.
Løbende integration og levering (CI/CD)
Konfigurationsstyring refererer til administrationen af tilstanden for 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 følge med i systemtilstanden og sikre, at konfigurationen ikke skrider. Derved sikrer man, at en systemressources konfiguration ikke afviger fra den ønskede tilstand, der er defineret for den.
Hvis man bruger denne tilgang 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.
Versionsstyring
Versionsstyring er en praksis til at administrere kode i forskellige 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, der foretages 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.
Agil softwareudvikling
Agilitet 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 lanceringscyklusser. De teams, der følger Agilitet-metoden, leverer løbende ændringer og forbedringer til kunderne, indsamler deres feedback og lærer og tilpasser sig baseret på kundernes ønsker og behov. Agilitet-metoden er væsentligt anderledes fra andre mere traditionelle strukturer som vandfaldsstrukturen, der inkluderer lange lanceringscyklusser, som defineres ved adskilte faser. Kanban og Scrum er to populære Agilitet-strukturer.
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 for 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 følge med i systemtilstanden og sikre, at konfigurationen ikke skrider. Derved sikrer man, at en systemressources konfiguration ikke afviger fra den ønskede tilstand, der er defineret for den.
Hvis man bruger denne tilgang 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 over ydeevnen og tilstanden for hele programstakken 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 med at se, hvordan de kan forbedre programmet i fremtidige udviklingscyklusser.
DevOps-værktøjer
Teams har mange DevOps-værktøjer, der hjælper dem med at inkorporere 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 programlivscyklussen. 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 udvikler, udruller og bruger programmer på. Sammen med ibrugtagningen af DevOps har teams nu endnu bedre mulighed for at forbedre deres fremgangsmåder og servicere deres kunder bedre.
Agilitet 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 lancerer 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 lukke dem ned, når der ikke længere er brug for dem.
Kubernetes
Efterhånden som flere og flere programmer bruger objektbeholderteknologi, er Kubernetes på vej til at blive branchestandarden for styring af objektbeholdere i stor skala. Automatisering af processerne til at udvikle og udrulle objektbeholdere via CI/CD-pipelines og overvågning af objektbeholderne i produktionsmiljøet bliver en vigtig metode med Kubernetes.
Serverløs 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 serverløs databehandling kan du køre programmer 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.
-
DevOps er ikke begrænset til en enkelt rolle. Alle, der tager del i faserne i et programs 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, definere fremgangsmåder og implementere 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 mere velkendte og skaber positive resultater, vil andre teams som regel følge efter og starte på deres DevOps-rejse.
Se, hvordan teams på tværs af Microsoft har taget en DevOps-kultur i brug.
-
Det helt basale mål med DevOps er at kunne skabe værdi for kunderne løbende. Resultaterne ved at bruge DevOps skal måles i relation til de forretningsmæssige mål. DevOps-teams bliver fælles om disse mål og når dem gennem korte lanceringscyklusser. 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 Agilitet 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. Agilitet er en udviklingsmetodologi, der er designet til at opretholde produktiviteten og fungere som drivkraft for udgivelser i en virkelighed med skiftende behov. DevOps og Agilitet er ikke uforenelige og bruges ofte i samspil.
-
Sammen med løbende integration er løbende levering og løbende udvikling metoder, der automatiserer faserne i softwareleveringen.