Hvad er Infrastructure as Code (IaaC) ?

I nutidens verden udvikles, opdateres og implementeres applikationer inden for få uger – hvis ikke få dage. For at holde et sådan et tempo og sikre at applikationerne fungerer som forventet, er det vigtigt at den underliggende infrastruktur også kan leveres og skaleres efter behov med minimal indsats. Infrastructure as Code (IaC) er et koncept, der hjælper organisationer med at opnå denne fleksibilitet.

Hvor benyttes den? 

For at forstå, hvor Infrastructure as Code kan bruges, er det vigtigt at forstå, hvad IaC forsøger at løse. F.eks.. tag et kig på nedenstående traditionelle on-premise proces til at implementere en webapplikation:

  • Udviklingsteamet har brugt måneder på at udvikle en state-of-the-art løsning, der imødekommer et forretningsbehov, og som nu er klar til at blive implementeret.
  • Udviklingsteamet åbnede en change/ticket med driftsteamet, der anmodede om ressourcer til at køre applikationen, f.eks. web- og databaseservere.
  • Driftsteamet sørger infrastrukturen og anmoder om implementeringspakken fra udviklingsteamet sammen med installationsvejledning.
  • Udviklingsteamet leverer de ønskede oplysninger, som driftsteamet følger for at implementere applikationen.

I ovenstående scenarie, hvis alt går godt, kan time-to-market strække sig fra uger til måneder på grund af følgende potentielle problemer:

  • Nye servere skal bestilles.
  • Produktions server-konfigurationen kan være forskellig fra udviklingsmiljøet, hvilket resulterer i, at applikationen ikke fungerer som forventet, dette kræver til gengæld ekstra tid til at “fikse” applikationen.
  • Eventuelle ændringer i produktionsmiljøet af driftsteamet kan påvirke applikationen negativt, hvis de samme politikker ikke anvendes på og testes i udviklingsmiljøet.
  • Ændringer i udviklingsmiljøet (uden for applikationskoden) for at få applikationen til at fungere, men som ikke kan anvendes i produktionsmiljøet på grund af sikkerhedsproblemer.

Ovenstående er et øjebliksbillede af nogle eksempler på almindelige problemer. Infrastructure as Code (IaC) kan hjælpe med at løse ovenstående problemer og går ud over de mange gode fordele. IaC’s primære mål er at tilvejebringe infrastruktur ved hjælp af kode til at producere konsistente og identiske miljøer.

Fordele ved IaC ?

Fordelene ved IaC er som navnet antyder, er det processen med at definere den ønskede tilstand af miljøet ved hjælp af kode, som ved udførelse producerer et konsistent og identisk miljø.

Dette giver følgende fordele:

  • Kildekontrol og versionering: Da infrastrukturen er defineret i kode, kan den gemmes i organisationens foretrukne kildekontrolsoftware og versionsbestemmes. Dette giver igen yderligere fordele såsom versionering, forgrening, sporbarhed og rollbacks.
  • Konsistente miljøer: Da infrastrukturen er klargjort ved hjælp af kode og ikke en manuel proces, er resultatet et konsistent og reproducerbart miljø på tværs af alle typer – udvikling, test, iscenesættelse og produktion. Selvom hvert miljø vil adskille sig med hensyn til skala, vil de stadig være ens med hensyn til politikker og konfiguration.
  • Genanvendelighed og skalerbarhed: Konfiguration af ressourcer såsom webservere kan gemmes i centraliserede moduler og genbruges. Dette betyder også, at miljøet kan skaleres ved at kalde modulet lige så mange gange som det nødvendige antal tilsvarende ressourcer. Dette fremmer også yderligere sammenhæng.
  • Reduceret TTM: Provisionering af miljøer ved hjælp af kode sikrer, at hele it-teamet – fra udviklere til testere til drift – arbejder på lignende miljøer, hvilket reducerer miljøfejl, forbedrer softwarekvaliteten og reducerer tiden til markedet.
  • Dokumentation: Infrastruktur defineret i kode fungerer som et levende dokument, der konstant opdateres, efterhånden som ændringer implementeres – intet behov for Visio-diagrammer, der har tendens til at glide væk fra virkeligheden.

Hvordan benyttes IaC ?

Det er processen med at definere den ønskede tilstand af miljøet ved hjælp af kode, som ved udførelse producerer et konsistent og identisk miljø.

Dette giver følgende fordele:

  • Kildekontrol og versionering: Da infrastrukturen er defineret i kode, kan den gemmes i organisationens foretrukne kildekontrolsoftware og versionsbestemmes. Dette giver igen yderligere fordele såsom versionering, forgrening, sporbarhed og rollbacks.
  • Konsistente miljøer: Da infrastrukturen er klargjort ved hjælp af kode og ikke en manuel proces, er resultatet et konsistent og reproducerbart miljø på tværs af alle typer – udvikling, test, iscenesættelse og produktion. Selvom hvert miljø vil adskille sig med hensyn til skala, vil de stadig være ens med hensyn til politikker og konfiguration.
  • Genanvendelighed og skalerbarhed: Konfiguration af ressourcer såsom webservere kan gemmes i centraliserede moduler og genbruges. Dette betyder også, at miljøet kan skaleres ved at kalde modulet lige så mange gange som det nødvendige antal tilsvarende ressourcer. Dette fremmer også yderligere sammenhæng.


Reduceret TTM: Provisionering af miljøer ved hjælp af kode sikrer, at hele it-teamet – fra udviklere til testere til drift – arbejder på lignende miljøer, hvilket reducerer miljøfejl, forbedrer softwarekvaliteten og reducerer tiden til markedet.

Dokumentation: Infrastruktur defineret i kode fungerer som et levende dokument, der konstant opdateres, efterhånden som ændringer implementeres – intet behov for Visio-diagrammer, der har tendens til at glide væk fra virkeligheden.

Nu til den interessante del af IaC: Hvordan man opnår det ?

IaC-værktøjer kan bredt klassificeres i to kategorier:

Værktøjer, der bruges til at levere infrastruktur – Værktøjer som Bamboo, Terraform, Cloud Formation, ARM-skabeloner bruges til at levere ny infrastruktur eller opdatere eksisterende infrastruktur for at opnå den ønskede sluttilstand.

Værktøjer, der bruges til at konfigurere infrastruktur – Værktøjer som Chef, Ansible og Puppet bruges til at konfigurere den eksisterende infrastruktur for at sikre, at ressourcerne er konfigureret på samme måde.

One thought on “Hvad er Infrastructure as Code (IaaC) ?

  1. Janus siger:

    Hej Usman
    tak for et godt indlæg. Bliv endelig ved!

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.