Velkommen til DevOps

Gode gamle dage

Forestil dig at du lever i 90’erne. Du er tech-nørd, og du er stillet til opgave at opsætte et sikkert og skalérbart netværk for det firma, du arbejder for. Du smøger ærmerne op, skynder dig ned i din lokale EDB-forretning og fylder indkøbskurven med servere, routere, kabler og de dertilhørende bunker af manualer. Efter nogle måneder, eller måske år, med opsætning, kodning og fejlsøgning, har du endelig løst din opgave, og dit netværk er klar. Det har kostet dig mange søvnløse nætter, og du er nok også kommet på fornavn med ejerne af din lokale teknikforretning, som har hjulpet dig med reservedele og utallige råd.

Klik-kod-kaffe: Velkommen til 2023

Lad os spole tiden nogle årtier frem, og du står nu i 2023, hvor du har fået den samme opgave. Du sætter dig foran din bærbare computer i sofaen på dit hjemmekontor med din caffe latte på skødet, du vipper dine hænder frem foran computerens tastatur og får fremtvunget nogle sætninger i stil med:

resource "aws_vpc" "main" {

  	cidr_block = "10.0.0.0/16"

}

Du tager en tår af din kaffe - og vupti, du har lige bygget et sikkert og skalérbart netværk.

Velkommen til fremtiden. Velkommen til DevOps.

Selvom eksemplet selvfølgelig er simplificeret, er det dog ikke langt fra virkeligheden. De nedenstående linjer af Terraform-kode er tæt på alt det, du skal bruge for at opbygge en infrastruktur til at understøtte en større microservice arkitektur.

Terraform code IaC infrastructure as code

Terraform-kode

Dette er et pseudo-eksempel som viser, hvordan man kan bruge Terraform til at opbygge en komplet infrastruktur.

Terraform: Terraform er et open source-værktøj, som bruges til at opbygge infrastruktur ved hjælp af kode. Det understøtter mange tjenesteudbydere (AWS, Azure, etc.) og bruger HCL (HashiCorp Configuration Language) som konfigurations sprog.

Nu har du fået tilrettelagt hele din infrastruktur as code, hvilket betyder, at din infrastruktur nu kan versioneres og trackes på linje med traditionel kode. Det betyder blandt andet, at du altid kan holde øje med, hvilke ændringer din infrastruktur gennemgår, hvem der laver dem, og hvornår de bliver lavet, hvilket gør det nemmere at fejlsøge nye deployments, når noget går galt.

Men der er mere..

Forestil dig at kunne replikere dit produktionsmiljø med et enkelt klik.
Forestil dig at kunne teste dine ændringer i et miljø, der nøjagtigt afspejler produktionsmiljøet.
Det er her, at værktøjer som Terraform viser deres værd.

Hertil må vi heller ikke glemme, at selv de mest erfarne udviklere også kan lave fejl. Med infrastructure as code (IaC) værktøjer bliver disse sjældnere. Ved at automatisere opsætningen af infrastrukturen reduceres risikoen for menneskelige fejl, hvilket gør deployments mere pålidelige og sikre. 

Det ligger også lige til højrebenet at tænke containerization og microservice arkitektur ind, når man snakker om DevOps, hvor hver docker container virker som en brik, der bliver tjekket, valideret og dernæst tilkoblet et større system - nærmest som en LEGO-klods, der bliver lagt oven på en større bygningskonstruktion. Her er DevOps-værktøjerne med til at facilitere denne proces og formår faktisk at gøre den helt automatisk. Hver klods har sit eget domæne, sine egne krav til infrastruktur, database og test, som bliver bygget, testet og deployet helt automatisk.

Terraform-kode

Dette er et pseudo-eksempel som viser, hvordan man kan bruge Terraform til at opbygge infrastruktur og database til en microservice.

Automatisering

Eksemplerne ovenfor illustrerer, hvordan Infrastructure as code-værktøjer som Terraform kan være med til at facilitere automatik i ens infrastruktur. Disse kan blive endnu mere værdifulde, hvis de bliver kombineret med CI/CD pipelines, som kan automatisere hele ens udviklingsfase, således at forskellige miljøer bliver deployet, hver gang der er ændringer på deres respektive brancher, hvis kriteriererne der er sat op bliver overholdt.

GitHubActionsPipeline

Dette er et pseudo-eksempel som viser, hvordan en deployment pipeline kan se ud i GitHub actions.

Du har nu ikke kun fået opbygget al business logik, databaser og den infrastruktur, der skal kunne understøtte det, men du har skabt en udviklingsproces, som i sandhed er, i hvert fald tæt på, rigtig agil. En proces, hvor programmøren kan koncentrere sig om det programmøren er bedst til – at kode. Din DevOps engineer til det denne er bedst til – at sørge for DevOps-processerne virker. Og forretningen til det den er bedst til – at kræve uigennemtænkte features og groteske requests :). Snart står din scrum master til at have meget lidt at lave, sagt med et glimt i øjet. En proces, hvor der bliver skabt en feature branch, så snart en task er pullet fra Jira, som udvikleren kan kode sin løsning på. Automatiske builds og tests når en pull request bliver godkendt, hvor tasken i Jira springer over til done, og løsningen ligger i produktion. Lige netop der er DevOps med til at sikre hurtige og korte deployments, og dermed sikre at udviklingsfasen er agil.

Selvfølgelig slipper fejl stadig igennem, og jeg har stadig til gode at se en problemfri proces. Derfor skal vi som programmører nok stadig investere det meste af vores udviklingstid på at fikse bugs, men det er dog blevet en del bedre.

Det svært at sige, om det er DevOps der har fordret de agile udviklingsmetoder, eller om det er de agile udviklingsmetoder, som har fordret DevOps, men rigtigt er det, at de to komplementerer hinanden ekstremt godt.

Fremtiden er nu

Nu hvor din infrastruktur er kogt ned til at være nogle stumper kode, er det nærliggende at tænke over, om man kunne gøre det endnu mere smart ved brug af kunstig intelligens. Forestil dig, at du ikke længere selv behøver at kende alle detaljer om infrastrukturen, men blot skal fortælle din AI, hvad du ønsker. Derfor må næste skridt være at væbne sig med en af nutidens AI’s og få den til at skrive din infrastruktur for dig. Ikke nok med at du som udvikler ikke skal være ekspert i infrastruktur, så er det måske endnu mere tiltalende, at din AI kan være proaktiv og forudsige fremtidige behov for virksomhedens vækst og teknologiske trends og tilpasse dit setup løbende.

Selvom dagens AI ikke er langt fra at kunne netop det, er vi der ikke endnu. Derfor har vi i C Nation specialiseret os i DevOps-processerne på det tekniske niveau, så vi kan være med til at modernisere udviklingsprocesserne hos vores kunder.

Forrige
Forrige

.NET 8 og C# 12 er klar! Er dit projekt klar til dem?

Næste
Næste

Fra Strategisk Vision til Operationel Mestring