Vad är Infrastructure as Code och varför är det viktigt?

Systemutveckling

Infrastructure as code, IaC, utvecklades för att lösa utmaningen kring drift och deploy i flera olika utvecklingsmiljöer och är en viktig del inom DevOps. Vissa påstår till och med att DevOps inte skulle vara möjligt utan IaC. Vi pratade med Tomas Majling, backend utvecklare på Digitalent, för att höra mer om vad IaC innebär och vilka fördelar som finns med att anama konceptet.

Vad är Infrastructure as Code?

“Infrastructure as Code” är helt enkelt ett sätt att bygga sin IT-infrastruktur med kod. Det vanligaste är att använda det till olika molnplattformar som Amazon Web Services, Google Cloud Platform eller Microsoft Azure. Med kod kan du på ett enkelt sätt starta upp virtuella servrar, databaser, nätverk och andra molntjänster.

Hur skiljer det sig mot traditionell infrastruktur?

Det vanliga är att man sätter upp sin infrastruktur i en Portal, till exempel Amazon Web Services (AWS) har sin konsol. Det kan verka simpelt med att man enkelt kan starta upp en ny applikation med hjälp av guider i sin portal. Men över tid kan det bli svårare då fler och fler applikationer tillkommer samt fler och fler blir delaktiga i infrastrukturen. Hålla reda på vad som ändrats och lagts till blir svårt. Om något nytt läggs till eller ändras i infrastrukturen som inte fungerar som tänkt blir det svårare att gå tillbaka till ett tidigare fungerande läge.

Vad är fördelarna med IaC?

Genom att skriva sin infrastruktur i kod så kan man versionshantera sin källkod. Skulle något inte fungera som man vill kan man enkelt gå tillbaka till en tidigare version av sin källkod.

I en portal kan det ta tid att klicka runt för att få förståelse över infrastrukturen. Med IaC är koden ritningen och dokumentationen över infrastrukturen. Infrastrukturen kan även snabbt återanvändas i andra projekt eller organisationer för att få upp en likadan miljö.

Med hjälp av konfigurationer och variabler i koden så kan du skapa en infrastruktur för olika utvecklingsmiljöer som till exempel en för QA och en för produktion. Att sätta upp infrastruktur för olika miljöer i en portal kräver att du gör samma jobb två gånger.

Hur kan man komma igång med IaC?

Börja med att få en förståelse för din infrastrukturplattform, till exempel AWS, genom portalen. Använd sedan deras egna verktyg för att skriva kod, CloudFormation för AWS till exempel.

Kan du rekommendera några verktyg för att komma igång med IaC?

För att komma igång är det lättast att börja med använda någon av tjänsternas egna verktyg. Har du till exempel tänkt använda AWS som plattform så är CloudFormation att rekommendera då det alltid testar om koden du skrivit är korrekt och om något går fel i skapande och uppstart av infrastrukturen så lägger den automatiskt tillbaka det som fungerade senast.

När man fått en förståelse för en vald plattform är ett generiskt verktyg att rekommendera, till exempel Terraform för att skapa infrastrukturer. Med ett generiskt verktyg kan du använda flera infrastrukturplattformar i samma konfiguration. Det går alltså att skapa miljöer för olika plattformar i samma kod, till exempel AWS och Google Cloud Platform. Här får man dock vara mer försiktig och testa av koden innan då den skapar och ändrar även om något inte fungerade.

De flesta verktyg hjälper dig att se över det som ska läggas till, ändras eller tas bort innan man konfigurerar miljön. Till exempel kan man skapa ett “Change set” i AWS för att se vad som ska hända i ett grafiskt gränssnitt efter du kört din konfiguration. I Terraform finns också möjligheten att se över sin konfiguration innan den körs med hjälp av kommandot “plan”.

Skrivet av: