Wat is infrastructure as code?
Infrastructuur is een onlosmakelijk onderdeel van elk softwareontwikkelingsproces. Het is rechtstreeks verantwoordelijk voor de stabiliteit van een toepassing. Servers, load balancers, firewalls en databases maken allemaal deel uit van een infrastructuur.
Infrastructuur speelt een zeer belangrijke rol in het gehele ontwikkelingsproces. Nu is er een zeer uniek concept dat vaak wordt geassocieerd met infrastructuren. Het heet 'Infrastructure as Code' (IaC). Laten we dit concept nader bekijken.
Wat is Infrastructure as Code?
Infrastructuur als Code (IaC) verwijst naar de methode van het leveren en beheren van infrastructuur met behulp van code in plaats van handmatig. Omdat infrastructuur als code wordt gedefinieerd, kunnen gebruikers configuraties snel bijwerken en delen, terwijl wordt gewaarborgd dat de infrastructuur in de gewenste toestand blijft. Met andere woorden: eenvoudig herhaalbare infrastructuren kunnen ontwikkeld worden.
Enkele kenmerken van IaC:
- Het maakt het mogelijk om infrastructuur eenvoudig te koppelen aan versiebeheertechnieken, waardoor infrastructuurwijzigingen traceerbaar en controleerbaar zijn.
- Het biedt de mogelijkheid om het volledige infrastructuurbeheer te automatiseren. Hierdoor wordt IaC tegenwoordig vaak geïntegreerd in CI/CD-pipelines en speelt het een sleutelrol in de SDLC.
- Handmatige infrastructuurvoorziening en beheer zijn niet langer nodig. Dit betekent dat gebruikers moeiteloos de onvermijdelijke configuratiedrift van de onderliggende infrastructuur en configuraties kunnen beheren, en dat alles terwijl alle omgevingen binnen de beoogde configuratie blijven.
Voordelen van IaC
Hier zijn de belangrijkste voordelen van Infrastructuur als Code.
Snelheid
Het belangrijkste voordeel van IaC is de snelheid. IaC stelt je in staat om een script uit te voeren dat snel je volledige infrastructuur kan opbouwen. Dit kun je doen voor elke omgeving, of het nu gaat om ontwikkeling, productie of alles daartussenin, inclusief staging, QA, etc. Kortom, IaC kan de efficiëntie van de volledige levenscyclus van softwareontwikkeling verbeteren.
Consistentie
Handmatige processen leiden onvermijdelijk tot fouten. Mensen maken nu eenmaal fouten. Communicatie verloopt vaak moeizaam. Handmatig infrastructuurbeheer zal altijd leiden tot inconsistenties, hoe hard je ook probeert. IaC lost dit op door ervoor te zorgen dat de configuratiebestanden de enige waarheidsgetrouwe bron zijn. Op die manier kun je er zeker van zijn dat identieke opstellingen herhaaldelijk worden uitgevoerd, zonder verschillen.
Verantwoordelijkheid
Aangezien IaC-configuratiebestanden van een versienummer kunnen worden voorzien, net als elk ander broncodebestand, kun je de wijzigingen volgen die elke configuratie heeft ondergaan. Kortom: er zal niet meer worden gewezen naar wie wat heeft gedaan en wanneer.
Efficiënt
Je kunt je infrastructuurarchitecturen in fasen implementeren met behulp van infrastructuur als code. Dit verbetert de efficiëntie van de SDLC door ervoor te zorgen dat je team nieuwe niveaus van productiviteit bereikt.
Kosteneffectief
Zonder twijfel is een van de belangrijkste voordelen van IaC de verlaging van de kosten voor infrastructuurbeheer. Je kunt zelfs je investering verminderen door cloudcomputing en IaC te combineren. Dit komt doordat je niet langer geld hoeft uit te geven aan het kopen van hardware of het inhuren van mensen om het te bedienen. Je hoeft ook geen fysieke ruimte te bezitten of te huren om het op te slaan.
Broncontrole
Voor verbeterde openheid en verantwoording kan code worden ingecheckt in broncontrole.
Documentatie
De infrastructuurcode fungeert als een dynamisch document van de huidige status van de infrastructuur.
Herbruikbaarheid
IaC maakt het eenvoudig om herbruikbare modules te ontwerpen, zoals gerepliceerde omgevingen voor ontwikkeling en productie.
Hoe werkt Infrastructuur als Code?
Als het gaat om de werking van IaC-tools, kunnen we ze in twee categorieën verdelen: de imperatieve benadering en de declaratieve benadering.
- Imperatieve benadering: hierbij worden 'opdrachten' gegeven. Een reeks commando's of instructies wordt gespecificeerd die de infrastructuur moet volgen om het gewenste resultaat te bereiken.
- Declaratieve benadering: deze methode geeft weer hoe het eindresultaat eruit moet zien, in plaats van expliciet de volgorde van stappen te beschrijven die de infrastructuur moet volgen om het uiteindelijke resultaat te bereiken.
Infrastructuur als Code (IaC) kan worden uitgelegd in 3 eenvoudige stappen:
- De definitie van de infrastructuur wordt door ontwikkelaars gedefinieerd en geschreven in een domeinspecifieke taal.
- De bestanden worden vervolgens overgezet naar een master server, een beheer-API of een eenvoudig codeopslagsysteem.
- Vervolgens automatiseert het platform het volledige creatie- en configuratieproces van de computerresources.
Kerncomponenten IaC
Hier zijn de kerncomponenten van IaC:
1. Scripting: het schrijven van scripts is wellicht de eenvoudigste benadering van IaC. Ad-hoc scripts zijn perfect als je eenvoudige of eenmalige acties wilt uitvoeren. Maar als het gaat om meer complexe configuraties, wordt het altijd aanbevolen om een meer gespecialiseerde optie te kiezen, zoals hieronder beschreven.
2. Configuratiebeheertools: dit zijn gespecialiseerde tools, vaak bekend als Configuratie als Code. Ze zijn primair ontwikkeld om software te beheren en richten zich voornamelijk op het opzetten en configureren van servers. Enkele populaire voorbeelden zijn: Chef, Puppet en Ansible.
3. Voorzieningstools: het creëren van infrastructuur is het primaire doel van voorzieningstools. Deze tools stellen ontwikkelaars in staat om de infrastructuurcomponenten nauwkeurig te beschrijven. Populaire voorbeelden zijn: Terraform, AWS CloudFormation en OpenStack Heat.
4. Containers en sjabloontools: dit zijn tools die helpen bij het maken van vooraf geladen sjablonen of afbeeldingen die alle bibliotheken en componenten bevatten die nodig zijn om een toepassing te starten. En als je containerized workloads overweegt, zijn ze niet alleen eenvoudig te verspreiden, maar ook aanzienlijk goedkoper dan een volledige server. Rkt, Docker, Packer en Vagrant zijn belangrijke voorbeelden van deze tools.
Conclusie
IaC is ongetwijfeld een van de belangrijkste DevOps- en Agile-softwareontwikkelingspraktijken die vandaag de dag bekend zijn bij ontwikkelaars. Servers, databases, services, virtuele netwerken, machtigingen, blokapparaten en praktisch elk ander aanbod van cloudproviders kunnen moeiteloos worden ingezet en beheer met behulp van Infrastructuur als Code.
Ben je op zoek naar meer informatie?
Neem contact op voor meer informatie of laat een berichtje achter. We helpen graag!