20/2/2024

De beste redenen om infrastructure as code te gebruiken

Net zoals wegen, gebouwen, logistieke knooppunten en landschappelijke verbindingen in de echte wereld essentieel zijn voor het maatschappelijke verkeer, kun je ook in de digitale wereld niet zonder een goede en flexibele infrastructuur. Je IT-infrastructuur zorgt ervoor dat applicaties en toepassingen met elkaar kunnen communiceren, dat data soepel en veilig je netwerk in- en uitstromen en dat medewerkers probleemloos en productief kunnen werken binnen je IT-landschap. De verschillende onderdelen van de IT-infrastructuur vormen samen het hart en de digitale levensaderen die je digitale landschap aandrijven.

Infrastructure as code (IaC) is een relatief nieuwe, handige en betrouwbare techniek om je IT-infrastructuur vorm te geven. Wat houdt infrastructure as code precies in? Welke technologie gaat schuil achter deze infra-oplossing? En wat zijn de belangrijkste voordelen van IaC? Je leest het in dit blogartikel.

Wat is infrastructure as code ?

Infrastructure as Code (IaC) houdt in dat je de IT-infrastructuur definieert en beheert door middel van code. Je beschrijft de infrastructurele componenten als objecten met eigenschappen in YAML, XML of YSO, maar met extra ondersteuning eventueel ook in een populaire programmeertaal als Python. Door objecten vervolgens tegen een omgeving aan te houden en te synchroniseren, kun je IT-componenten aanmaken, updaten of verwijderen. IaC geeft je dus veel vrijheid bij het programmeren en synchroniseren van objecten naar cloudomgevingen als AWS, Azure of Google Cloud.

IaC is vaak een onderdeel van de DevOps-praktijk. De technologie stroomlijnt namelijk processen bij het ontwikkelen en implementeren van nieuwe software. Je kunt het beheer van de infrastructuur als het ware ‘vervroegen’ door handmatige stappen in het laatste deel van de implementatiepijplijn te automatiseren of te schrappen. Als je bij het inzetten van IaC gebruikmaakt van versiebeheer (bijvoorbeeld in Git), worden wijzigingen traceerbaar en kun je bouwen aan een geschiedenis. Gaat er iets fout? Dan vind je moeiteloos terug door welke verandering er een fout is ontstaan.

Lees ook de blog: De rol van DevOps bij applicatieontwikkeling.

Waarom zou je infrastructure as code gebruiken?

Er zijn verschillende redenen om infrastructure as code te gebruiken. We zetten de belangrijkste voordelen voor je op een rij.

Makkelijk omgevingen dupliceren

IaC maakt het makkelijk om omgevingen te dupliceren. Je gebruikt probleemloos dezelfde templates voor al je omgevingen en kunt zelf variabelen instellen voor zaken die je per omgeving anders wilt hebben. Denk bijvoorbeeld aan de database, die in een productieomgeving doorgaans groter is dan in een testomgeving. Je kunt IaC gebruiken om je OTAP-omgevingen van elkaar te scheiden zonder dat dit ten koste gaat van de overzichtelijkheid en werkbaarheid. Als je met meerdere ontwikkelaars een platform opbouwt, kan elke ontwikkelaar bovendien zijn of haar eigen platform opstarten. Zo zit je elkaar niet in de weg. Aan het einde van elke dag sluit je elk afzonderlijk Dev-platform weer moeiteloos af.

Lees ook de blog: De OTAP-ontwikkelstraat: vier fases uitgelegd.

Meer snelheid

De automatisering die infrastructure as code met zich meebrengt, zorgt voor een veel hogere installatie- en configuratiesnelheid. Ontwikkelaars voeren eenvoudigweg een script uit om hun infrastructuur voor elke omgeving in te stellen, inclusief ontwikkeling, implementatie, testen, productie en meer. Jouw medewerkers hoeven niet langer te wachten op langdurige installatieprocedures en verspillen hun kostbare tijd niet aan complexe configuraties.

Versiebeheer en eenvoudig samenwerken

Dankzij goed versiebeheer is het met IaC heel makkelijk om veranderingen in code na te lopen. Je ziet wie wanneer wat gedaan heeft en kunt eventuele fouten makkelijk traceren en herstellen. Stuit je in de productiefase bijvoorbeeld op een probleem met de nieuwe configuratie? Omdat alle wijzigingen in de code zijn bijgehouden in de software repository, is het makkelijk om terug te gaan naar een eerdere versie. De configuratie van je infrastructuur staat in een Git-repository, wat teamgenoten in staat stelt om code te reviewen en eventuele suggesties voor verbetering te doen. Samenwerken als een hecht team vanuit een ‘universal source of truth’ wordt zo makkelijker dan ooit.

Goed en geautomatiseerd versiebeheer zorgt ook voor minder menselijke fouten en een kleinere kans op ‘configuration drift’. Met dit laatste bedoelen we dat de configuratie van een IT-omgeving of -infrastructuur sluipenderwijs en ongemerkt verandert en uiteindelijk niet meer aansluit op de oorspronkelijke behoeften van een organisatie of de eindgebruikers. Het eindresultaat gaat te veel afwijken van het originele ontwerp. Omdat je bij IaC altijd terug kunt naar de vorige versie, slinkt het risico op configuration drift en profiteer je van een effectieve vorm van disaster recovery.

Kosten besparen

Als je de technologie goed gebruikt, kan infrastructure as code je ook helpen om kosten te besparen. Omdat werken met IaC ervoor zorgt dat alles wat live staat onderdeel uitmaakt van de codebase, is de kans kleiner dat er diensten blijven draaien die je bij nader inzien niet nodig hebt. Omdat IaC cloud-based is, bestaat er veel ruimte voor het nauwkeurig op- en afschalen van resources en diensten.

Snel door naar productie

IaC maakt gebruik van een volledig geautomatiseerde infrastructuur. Dit betekent dat stappen elkaar snel opvolgen en je zonder veel manuele handelingen modules realiseert in de productieomgeving. Bovendien kun je heel snel terugschakelen naar een vorige versie als er iets niet klopt of als je een bepaald deel van de code nog eens wilt bekijken. Infrastructure as code vormt een prima combinatie met de DevOps-werkwijze, zeker als je de technologie en beproefde IaC-tools als Terraform, Ansible of Chef integreert in CI/CD-pijplijnen.

Lees ook de blog: 6 Strategische methodes voor een hoge CI/CD-pipeline performance.

Code hergebruiken

IaC gaat uit van het principe van herbruikbaarheid. Een eenmaal ontwikkelde code kun je (her)gebruiken voor diverse omgevingen en toepassingen die moeten voldoen aan vergelijkbare eisen. Je hoeft dus minder code te ‘kloppen’, een gegeven dat de ontwikkelsnelheid en doorlooptijd ten goede komt.

Security by design

IaC biedt veel mogelijkheden om te werken volgens het principe security by design. Dit wil zeggen dat je van vanaf de ontwerpfase tot en met de realisatie van een dienst, systeem of applicatie nadenkt over de veiligheid. IaC maakt namelijk inzichtelijk welke veranderingen waarom en door wie zijn uitgevoerd.

Zelfredzaamheid en selfservice voor ontwikkelaars

Ontwikkelaars hoeven niet langer te wachten tot de infrastructuur is opgezet als ze hun taken willen uitvoeren of een klein wijzigingsverzoek indienen. IaC-systemen moedigen onafhankelijkheid en persoonlijke verantwoordelijkheid aan, wat tegelijkertijd processen vereenvoudigt en ontwikkelaars stimuleert om alleen belangrijke veranderingen (die dus echt meerwaarde toevoegen) door te voeren.

Wanneer is IaC niet de beste optie?

Ondanks dat IaC diverse voordelen heeft, zijn er situaties denkbaar waarin het niet de beste of meest voor de hand liggende optie is. Zo is het een relatief nieuw fenomeen waar nog lang niet iedereen mee bekend is. Laat de kennis van je developers op het terrein van IaC nog te wensen over? Dan is het verstandig om niet gelijk alle kaarten op deze techniek te zetten en eventueel de hulp van een gespecialiseerde externe partij in te roepen als je er toch een start mee wil maken. Besef ook dat het optimaal gebruiken van infrastructure as code betekent dat je een CI/CD-pijplijn moet inrichten. De initiële investering voor je project wordt dan groter.

Deel deze post
Merijn Plaisier
Merijn is Lead Engineer en tevens Partner bij ACC ICT. Merijn is vanaf 2010 werkzaam bij ACC ICT in verschillende rollen en maak je blij met de meest technische vraagstukken waar hij zich in vast kan bijten. Merijn schrijft graag over ontwikkelingen in de IT-branche.