DevOps, DevSecOps og GitOps – hvad skal jeg være obs på?

Skrevet af
Bjarne Dollerup
Artikel

Del indlæg

Hvad er DevOps?

Ligesom mange andre IT-begreber bliver DevOps brugt i flæng og nogle gange decideret misbrugt. I modsætning til mange marketingskabte begreber er der dog særdeles meget værdi i at anvende DevOps, og der er rigtig mange værktøjer til at understøtte virksomheder, som ønsker at drage nytte af DevOps. Men lad os først forsøge at besvare spørgsmålet: Hvad er DevOps?

Artiklen er skrevet af Bjarne Dollerup, som er development-konsulent i Globeteam 

Historisk har udviklere og driftsfolk arbejdet i hver deres silo. Den ene gruppe havde ansvar for at udvikle en service eller en applikation, som efterfølgende blev sat i drift af den anden gruppe. Man kan sige, at udviklingsafdelingen skrev koden, mens driftsafdelingen sørgede for, at den blev gjort tilgængelig for brugerne.

I mange organisationer er processerne internt i begge grupper veldokumenterede, men denne dokumentation er ofte i form af worddokumenter i konfigurationsdatabaser, “Run books” (læs scripts på et USB-stik) og en “sådan plejer vi at gøre”-viden hos udviklere og driftsfolk. Det betyder, at selv om alle gør det rigtige med de rigtige intentioner, kan en udrulning alligevel gå grueligt gal.

DevOps er en sammentrækning af ‘development’ og ‘operations’ og er kort fortalt en metode og en filosofi, som har til formål at nedbryde siloerne mellem udviklingsafdelingen og IT-driften ved at sætte rammerne for en fælles, struktureret måde at arbejde på omkring følgende to nøgleområder:

  • Udrulning/opsætning/test af en eller flere applikationer eller komponenter.
  • Udrulning/vedligeholdelse af tilhørende infrastrukturkomponenter, så som Pc’er, servere, netværk, applikationer/services, etc. Denne “disciplin” omtales også som “GitOps”.

Vi vender tilbage til, hvordan DevOps hænger sammen med DevSecOps og GitOps længere nede i denne artikel.

Hvor kommer DevOps fra?

I udviklingsprojekter har man traditionelt brugt en lineær vandfaldsmodel til softwareudvikling, hvor den ene fase efterfulgte den anden, og hvor hver fase var afhængig af, at den forudgående fase var færdiggjort.

Tilgangen udsprang af den dengang fremherskende brug af mainframes og UNIX systemer og fremfor alt det faktum, at udviklingsprojekters varighed typisk blev målt i år.

Det har dog vist sig, at kunderne/brugerne ikke altid præcis ved, hvad de har brug for, og dermed kan deres krav ændre sig i løbet af et udviklingsprojekt. Hvis man bruger en vandfaldsmetodik, betyder dette ofte, at udviklerne må tilbage til tegnebrættet, og efterfølgende skal koden igen testes/verificeres og implementeres. Alt i alt vil dette medføre forsinkelser og en dramatisk stigning i de projekterede omkostninger.

Som en reaktion på ovennævnte problemer blev Agile og DevOps metoderne/filosofierne introduceret i 2009. Agile (eller agil) baserer sig på følgende ideer:

  • Individer og samarbejde
  • Velfungerende software
  • Samarbejde med kunden
  • Håndtering af forandringer

De agile grundprincipper er beskrevet mere detaljeret i “Manifest for agil softwareudvikling”, som findes på Manifest for agil softwareudvikling (agilemanifesto.org)

Den agile tankegang udmøntende sig i en udviklingspraksis, der samler udvikling, kvalitetssikring og drift i én proces. Dette danner grundlaget for det, vi kalder DevOps. DevOps bruges dog også til at beskrive et sæt af processer og værktøjer.

Dette diagram illustrerer de forskellige elementer og deres indbyrdes sammenhæng:


Hvad er DevOps? Diagrammet forklarer sammenhængen med udvikling, kvalitetssikring og drift


Hvorfor DevOps?

I mange organisationer er applikationsporteføljen en kombination af indkøbte applikationer og services (Office 365, SAP, Adobe Photoshop, etc.) og tilrettede eller egenudviklede applikationer. Det betyder, at organisationen har en række arbejdsgange og processer omkring bl.a.:

  • Håndtering af applikationskode, konfigurationsfiler og scripts
  • Test af applikationer/services
  • Belastnings- og ydelsestest af applikationer/services
  • Sikkerhedstjek af applikationer/services
  • Opsætning af infrastruktur (netværk, servere, applikationer, etc.)
  • Udrulning i test, QA og produktionsmiljøer

Har organisationen ikke struktureret disse processer, kan det føre til en række forskellige problemer, blandt andet:

  • Defekt udrulning af en applikation og/eller infrastruktur.
  • Udrulning af applikation, komponenter og infrastruktur, der ikke “passer” sammen.
  • Udrulning af applikationskode og/eller infrastruktur, der ikke er valideret.

Disse problemer kan så igen føre til sårbar infrastruktur/applikationskode, langsommelig udrulning af forretningskritiske applikationer eller lækkede bruger og/eller kundeoplysninger.

Nærmere bestemt har organisationen brug for at etablere:

  1. En ensartethed på tværs af arbejdsgange, så det er samme proces hver gang, man ruller ny infrastruktur eller en ny applikation ud.
  2. En mulighed for at spore, hvem der har foretaget en ændring og hvornår
  3. En proces for godkendelse af enhver udrulning.

Hvordan kan DevOps bidrage til at løse problemet?

DevOps sætter som nævnt rammerne for en fælles, struktureret måde at arbejde på i udvikling og drift. Mere specifikt består DevOps af:

  • Et fælles sæt af processer, som sikrer et optimal udviklings-, test- og udrulningsforløb af en given applikation eller infrastruktur.
  • Et sæt af teknologier, som sikrer en effektiv måde at beskrive applikationer, processer og infrastruktur på.
  • Et sæt af roller/ansvarsområde, som virksomheder med fordel kan anvende.
  • …og sidst, men ikke mindst fleksibilitet i anvendelsen af ovennævnte.

Mange af de “nye” softwarevirksomheder benytter sig af DevOps, og nogle proklamerer stolt, at det handler om at “move fast and break things“. Det kan godt være, at dette er en god forretningsmodel for visse brancher og virksomheder, men for de fleste organisationer vil jeg mene, at det ikke handler om hastighed, men derimod om effektivitet og gennemskuelighed.

GitOps: Hvad med infrastrukturen?

Du vil ofte høre begreberne GitOps og ”Infrastructure as Code (IaC)” nævnt i samme åndedrag som DevOps.

GitOps er driftsafdelingens version af DevOps, og er ligeledes en kombination af processer, roller og teknologier, hvor IaC så er en delmængde. GitOps er rammeværket og processen, og IaC et mønster eller en teknik, der ganske simpelt beskriver, hvordan opsætning og konfiguration af alle infrastrukturkomponenter, lader sig beskrive i kode.

DevSecOps: Hvad med sikkerheden?

Sikkerhed er naturligvis en vigtig del af såvel udvikling som IT-drift. Dette omtales ind imellem som DevSecOps eller SecDevOps. Begge begreber betyder det samme: Integration af sikkerhedstjek af de elementer, der indgår i applikationsudvikling, som f.eks.:

  • Er kode skrevet ud fra bedste praksis?
  • Er der administratorkodeord i kode- eller konfigurationsfilerne?
  • Hvis projektet anvender Open Source eller Shared Source-elementer, er disse så opdaterede, eller indeholder de sårbarheder?

Hvordan kan Globeteam hjælpe jer med DevOps?

Globeteam har konsulenter med erfaring indenfor både GitOps og DevOps, og vi tager gerne en uforpligtende snak omkring, hvordan din organisation bedst kan drage nytte af disse teknologier.

Læs mere om, hvordan Globeteam kan hjælpe jer i gang med DevOps.


Referencer:

What is GitOps? | GitLab

What is DevOps? | GitLab

Hvad er DevOps? En forklaring af, hvad DevOps er | Microsoft Azure

 

Andre læste også
DevOps og Scrum
2. marts 2022
DevOps og Scrum
DevOps er en iterativ udviklings- og udrulningsmetodik, og Scrum definerer en række principper som hjælper udviklingsteams med at arbejde iterativt baseret på den agile softwareudviklingsmodel.
Globeteam kan hjælpe dig med implementering og anvendelse af DevOps-værktøjer
23. februar 2022
DevOps-værktøjer – et spadestik dybere
Der er rigtig mange DevOps-værktøjer, og det kan være komplekst at sætte op, så man kan drage fuld nytte af dem. I denne artikel kigger vi nærmere på nogle af dem og deres anvendelsesmuligheder.
DevOps symbol og spade ved strand som symbol for at artiklen går et spadestik dybere og omhandler DevOps processer i praksis
15. februar 2022
DevOps processer – et spadestik dybere
I denne artikel graver vi et spadestik dybere og beskrive forskellige DevOps processer og metodikker, der kan implementeres for at understøtte metoden i praksis og sikre et succesfuldt udviklings- og driftsprojekt.

Nyhedsbrev

Få vores nyhedsbrev

Hold dig opdateret på din virksomheds digitale muligheder med cases og faglige artikler