Hvad er DevOps? Vigtigste praksisser, fordele og værktøjer

Discover how to deliver better software and systems in rapidly scaling environments. Join our Community

Hvorfor skifter flere og flere virksomheder til DevOps-principper? Her er den ultimative guide til at forstå, hvad DevOps er, hvorfor det er nyttigt, og hvordan du implementerer det i din organisation.

Hvis du vil forkorte udviklingslivscyklussen, øge softwarekvaliteten og sikre kontinuerlig levering, bør du overveje DevOps. Patrick Debois, en utilfreds konsulent, der var træt af ineffektiviteten forårsaget af adskillelsen mellem softwareudvikling og IT-drift, opfandt begrebet i 2007. 

Mange virksomheder har siden taget DevOps-principper til sig for at tilpasse sig deres forretningsmæssige behov mere effektivt. DevOps var tidligere begrænset til IT-tjenester, men omfatter nu hele virksomheden, påvirker processer og dataflows og medfører betydelige organisatoriske ændringer.

Hvad er DevOps? 

DevOps er en metode, der kombinerer softwareudvikling (Dev) og IT-drift (Ops). Det er et sæt praksisser, DevOps-værktøjer, processer og endda mennesker, der har til formål at øge samarbejdet i teamet og skabe hurtigere og mere pålidelige produktudgivelser. Et DevOps-miljø skal fremme automatisering og dokumentation samt understøtte kommunikation og samarbejde.

I modsætning til mere traditionelle tilgange (herunder Agile og Scrum), hvor afdelingerne opdeles i “siloer,” lægger DevOps vægt på integrationen af alle teammedlemmer, der er involveret i at skabe produktet: fra softwareudviklerne til testerne og IT-driftsspecialisterne (såsom systemadministratorer, databaseadministratorer og systemingeniører).

Sådan fungerer DevOps

Udviklings- og driftsteams arbejder tættere sammen under en DevOps-model. Ingeniørerne fra begge teams integrerer og arbejder på tværs af hele applikationens livscyklus, fra udvikling og test til DevOps-implementering og drift. DevOps kombinerer de forskellige kompetencer fra begge sider gennem hele applikationsprocessen.

Kvalitetssikrings- og sikkerhedsteams kan knyttes tættere sammen med udvikling og drift samt gennem hele softwareudviklingslivscyklussen under forskellige DevOps-modeller, såsom SecDevOps (der fokuserer på sikkerhed) eller QAOps (der lægger større vægt på test af produktkvaliteten).

Disse grupper anvender bedste praksis til at automatisere tidligere tidskrævende og langsomme processer. De benytter en teknologisk stak og infrastruktur til hurtigt og pålideligt at drive og videreudvikle apps.

DevOps-praksisser og -koncepter

DevOps drejer sig om nogle centrale praksisser. Lad os se en forklaring på hver af dem nedenfor.

Kontinuerlig integration

Kontinuerlig integration (CI) henviser til regelmæssigt at sammenflette kodeændringer i et centralt lager og køre automatiserede builds og tests (herunder enheds-, integrations-, UI- og end-to-end-tests).

Det primære formål med CI er at opdage og rette fejl hurtigere, øge softwarets samlede kvalitet og reducere tiden til validering og udgivelse af nye softwareopdateringer.

Get Free Access
Get regular tech leadership wisdom for delivering better software and systems.
Get Free Access

Have an account? Log In

Kontinuerlig levering

Kontinuerlig levering er tæt forbundet med kontinuerlig integration og er det næste logiske trin. Ved kontinuerlig levering er kravet, at kodeændringer automatisk bygges, testes og er klar til at blive leveret i produktionsmiljøet. Ideelt set sendes alle ændringer først til et testmiljø, før de implementeres i produktionen. 

Versionsstyring

Dette kaldes også kildekodestyring og henviser til håndtering af kode i versioner, dvs. sporing af revisioner og kodeændringer over tid. Det gøres ofte ved hjælp af versionsstyringssystemer, som gør det muligt for teammedlemmer at samarbejde om kode.

Disse metoder beskriver en trinvis fremgangsmåde til at sammenflette kodeændringer i de samme filer, løse konflikter og rulle ændringer tilbage til tidligere tilstande. Versionsstyring er en af de vigtigste DevOps-processer, som hjælper udviklingsteams med at samarbejde, delegere kodningsopgaver til teammedlemmer og arkivere al kode, så den hurtigt kan gendannes.

Overvågning og logning 

Kontinuerlig overvågning betyder, at man identificerer mislykkede builds eller tests og sikrer, at de ikke skaber forsinkelser. Automatisering fremskynder udviklingen betydeligt, men hvis en automatiseret proces mislykkes, uden at nogen opdager det, er det bedre at udføre opgaven manuelt.

På samme måde er det afgørende at holde øje med apps i produktion for at opdage problemer eller ydelsesproblemer, før dine kunder gør det. 

Mikrotjenester

Mikrotjenestearkitektur er en stil, hvor applikationen er struktureret som en samling af mindre, løst koblede og uafhængigt implementerbare tjenester. Det gør det muligt for leveringsteams at fokusere på specifikke tjenester som selvstændige enheder, hvilket gør udvikling, test og implementering meget lettere.

Infrastruktur som kode (IaC)

Dette er en proces til håndtering af IT-infrastrukturen (netværk, virtuelle maskiner, belastningsfordelere, forbindelsesarkitektur), som anvender den samme versionsstyring af kildekode som DevOps-teamet.

En IaC-model opretter det samme miljø, hver gang den anvendes, på samme måde som den samme kildekode producerer den samme binærfil. IaC er en afgørende tilgang, der fungerer hånd i hånd med kontinuerlig levering.  

Skift til venstre

Dette er en betegnelse for en udviklingsproces, hvor teamet fokuserer på at begynde test så tidligt som muligt. Det endelige mål er øget kvalitet, kortere testcyklusser og at undgå eventuelle overraskelser i slutningen af udviklingscyklussen. Et skift til venstre forudsætter kontinuerlig test (at skrive og køre automatiserede test så tidligt og så ofte som muligt) og kontinuerlig implementering (automatisering af implementeringen af nye versioner).

DevOps-livscyklussen

Den typiske DevOps-arbejdsgang er iterativ og består af 8 hovedfaser:

  1. Planlægning: På dette trin identificerer teamet virksomhedens krav og opretter en køreplan, der maksimerer produktets forretningsværdi.
  2. Kodning: Dette er det trin, hvor den faktiske udvikling udføres.
  3. Bygning: Når udviklingsopgaverne er udført, registreres koden i det fælles kodearkiv.
  4. Test: Versionen implementeres i testmiljøet, hvor testene køres. Dette omfatter typisk enhedstest, integrationstest, test af brugergrænsefladeautomatisering og manuelle test, såsom brugeraccepttest.  
  5. Udgivelse: Når testfasen er afsluttet, klargøres versionen af DevOps-ingeniørerne til implementering i produktionsmiljøet. 
  6. Implementering: På dette trin installeres, testes og implementeres versionen i produktionen, hvor det bliver tilgængeligt for slutbrugerne.
  7. Drift: Håndtering af leveringen af IT-tjenester til kunder fra start til slut. Dette henviser til procedurerne for design, implementering, konfiguration, udrulning og vedligeholdelse af den IT-infrastruktur, der understøtter en organisations tjenester.
  8. Overvågning: DevOps-teams evaluerer hver udgivelse og leverer rapporter for at forbedre fremtidige softwareudgivelser. Ved at indsamle kontinuerlige tilbagemeldinger kan teams optimere deres processer og integrere input fra forbrugerne i den næste udgivelse.
DevOps-livscyklussen – de 8 trin visualiseret i et ottetalsloop
DevOps-livscyklussen er en iterativ proces.

Hvad er fordelene ved DevOps?

De vigtigste fordele ved en DevOps-tilgang er:

  • Hurtigere softwarelevering: Med CI/CD-forløb er implementeringen hurtigere og hyppigere. Det tager mindre tid at opdatere eksisterende tjenester og implementere nye systemer, funktioner eller fejlrettelser. Dette kan give en vigtig konkurrencefordel og en bedre brugeroplevelse.
  • Forbedret samarbejde: Med DevOps-praksisser arbejder udviklerne og driftsteamsene tæt sammen og deler ansvaret, hvilket øger synligheden i arbejdet. Teamsene er mere forbundne og arbejder mod de samme mål og målsætninger.
  • Større produktivitet: Når arbejdet ikke længere er opdelt, og kommunikationen er forbedret, er der større gennemsigtighed, hvilket får teamsene til at arbejde mere effektivt.
  • Automatiserede gentagne opgaver: Ud over den store fordel ved ikke at skulle udføre disse opgaver manuelt giver det teamet mere tid til at arbejde med innovationer i projektet.
  • Øget kvalitet og pålidelighed: Praksisser for kontinuerlig integration og levering sikrer, at ændringer er funktionelle og stabile, hvilket forbedrer kvaliteten af et softwareprodukt. Overvågning gør det muligt for teams at holde sig opdateret om ydeevnen i realtid.
  • Bedre sikkerhed: Sikkerheden i DevOps kan også forbedres ved at integrere sikkerhedstest i forløbet for kontinuerlig integration, kontinuerlig levering og kontinuerlig implementering.
  • Hyppigere udgivelser: Kunderne kan ofte modtage opdateringer og fejlrettelser, og det fører til større kundetilfredshed. 

Hvordan indfører man en DevOps-kultur?

Overgangen til DevOps indebærer en ændring af kultur og filosofi. I begyndelsen kan indførelsen af DevOps betyde, at drifts- og udviklingsteams forpligter sig til at forstå de problemer og teknologiske begrænsninger, der findes i hver fase af softwareudviklingsprocessen. 

Fastlæg forbedrings-KPI'er, såsom kortere cyklustider eller færre fejl i produktionen. Ved at kommunikere på tværs af arbejdsaktiviteter kan du lægge fundamentet for kontinuerlige processer.

Undersøg de nuværende værktøjer til udvikling og IT-drift. Identificer eventuelle svagheder, såsom et trin, der altid udføres manuelt, eller et værktøj, der ikke har API'er til kommunikation med andre værktøjer. Overvej at implementere en enkelt DevOps-leveringspipeline for hele virksomheden. Teammedlemmer kan skifte fra ét projekt til det næste uden at skulle gennemgå yderligere oplæring. 

Nu hvor DevOps-tankegangen er på plads, skal du beslutte, hvilke målepunkter der skal bruges til at måle succes, og identificere de værktøjer, der fremover skal anvendes (mere om det senere). For fortsat at forbedre dig skal du fokusere på bedste praksis, videndeling og løbende forbedringer. Identificer hindringer, der påvirker dine KPI'er, og optimer dine værktøjer og din teknologi.

DevOps-modenhedsmodellen har 5 faser:

  • Indledende: en traditionel model, hvor udviklingsteamet og driftsteamet arbejder i siloer.
  • Håndteret: det indledende skift mod DevOps, hvor driftsprocesserne begynder at blive automatiseret. Samarbejdet mellem udvikling og drift øges, eftersom teamene ikke længere er adskilt. Det er en konceptafprøvningsfase.
  • Defineret: Automatiseringsprocesser for alle praksisser (herunder udvikling og test) defineres og implementeres. Ændringerne anvendes på organisatorisk niveau.
  • Målt: Teamene deler viden og tilpasser praksisser takket være de etablerede processer og værktøjer. Automatisering og kommunikation mellem værktøjerne forbedres, og politikker bruges til at håndhæve standarder.
  • Optimeret: Resultaterne begynder at vise sig takket være løbende forbedringer. DevOps kan udvikle sig til flere værktøjssæt eller procedurer. Kundevendte applikationer (som normalt er B2C-applikationer) udgiver for eksempel hyppigere, mens FinTech-applikationer i højere grad følger DevSecOps-principper.

DevOps-værktøjer

DevOps-metoden fokuserer på automatisering af softwareudviklingsaktiviteter såsom opbygning, test og implementering for at opnå en hurtigere tid til markedet, produkter af høj kvalitet og færre fejl og tilbagerulninger af softwarefunktioner. Når alt dette tages i betragtning, vil den rette værktøjsstak hjælpe med at sikre, at du kan opnå en vellykket DevOps-kultur.

De værktøjer og teknologier, der understøtter, at medarbejdere inden for udvikling og drift kan interagere gennem hele softwarens livscyklus, kaldes en DevOps-værktøjskæde. Kontinuerlig integration, kontinuerlig levering, automatisering og samarbejde er blandt de centrale DevOps-elementer, der dækkes.

Så hvilke almindelige værktøjer bruges i DevOps?

Planlægningsværktøjer

Dette er hovedsageligt de samme værktøjer, som bruges i metoder til agil udvikling. Et af de mest populære værktøjer til denne fase er måske Jira. Hvis du ikke allerede kender det, er det et projektstyringsværktøj fra Atlassian, der er udviklet til, at agile teams kan holde styr på deres opgaver, problemer og fejl. Det muliggør integration med flere andre værktøjer, der bruges i andre faser af DevOps-processen.

God kommunikation er afgørende i DevOps, både i planlægningsfasen og i de øvrige faser, så det er en god idé at bruge en beskedapplikation, der også kan integreres med resten af værktøjerne. Sådanne applikationer omfatter Slack, også fra Atlassian, eller Microsoft Teams.

Versionsstyringsværktøjer

Versionsstyringsværktøjer hjælper applikationsudviklingsteams med at håndtere ændringer i kildekoden over tid. De hjælper softwareteams med at arbejde hurtigere og smartere, efterhånden som udviklingsmiljøerne vokser.

Versionsstyringsløsninger bidrager især til at reducere udviklingstiden og øge succesraten for implementeringer. Git er sandsynligvis det mest anvendte versionsstyringsværktøj, men nogle teams vælger måske at bruge TFS, SVN eller GitHub til kildekodestyring.

Værktøjer til kontinuerlig integration

Værktøjer til kontinuerlig integration anvender automatiserede tests på udviklingsbrancher og gør det muligt at sende ændringer til hovedbranchen, når builds lykkes. De giver også løbende feedback gennem chatbeskeder i realtid fra dit team med enkle integrationer. Bemærkelsesværdige værktøjer omfatter Jenkins (som er et værktøj med åben kildekode), Circle CI og AWS.

More Articles

Værktøjer til konfigurationsstyring

Gennem hele DevOps-livscyklussen henviser konfigurationsstyring til vedligeholdelse og kontrol af komponenterne i store, komplekse systemer i en kendt, ensartet og fastlagt tilstand. Servere, netværk, lager og applikationer er alle eksempler på komponenter i IT-systemer.

Værktøjerne til konfigurationsstyring gør implementeringsprocessen problemfri og ensartet gennem hele produktionsprocessen. Nogle bemærkelsesværdige værktøjer til konfigurationsstyring er Ansible, Puppet og Chef.

Værktøjer til kontinuerlig drift

Værktøjer til kontinuerlig drift bruges til at automatisere processen med at lancere applikationen og dens opdateringer. Kontinuerlig drift eliminerer nedetid ved hjælp af løsninger til containerstyring som Kubernetes og Docker. Disse teknologier til containerstyring gør processen med at udvikle, teste og implementere en applikation på tværs af forskellige miljøer meget nemmere.

Er DevOps noget for dig?

Selvom ingen metode passer til alle, har du måske nu et klarere billede af, hvad DevOps er, og hvad du har brug for til at implementere det. På baggrund af dette og flere oplysninger om DevOps-priser kan du beslutte, om DevOps er en proces, der kan passe til dit teams mål.

Når det er sagt, bør du overveje at indgå et samarbejde med den rette nærregionale softwareudviklingspartner, hvis du undersøger, hvordan du kan implementere DevOps eller skalere det mere effektivt.

Leder du efter flere bedste praksisser inden for DevOps? Tilmeld dig The CTO Clubs nyhedsbrev for at få de seneste indsigter.

Andreea Draniceanu
Hi there! My name is Andreea, I’m a software test engineer based in Romania. I’ve been in the software industry for over 10 years. Currently my main focus is UI test automation with C#, but I love exploring all QA-related areas 😊

You may also like