Wat is Infrastructure as Code (IaC) en wat kan ik ermee?

De voor- en nadelen van IaC en hoe je er zelf mee aan de slag gaat.

Applicaties bestaan tegenwoordig uit steeds meer verschillende onderdelen. Function Apps, servicebussen, databases, services… Cloud providers zijn in deze toename onmisbaar. Zo is het opzetten van een architectuur die bestaat uit verschillende onderdelen tegenwoordig een stuk toegankelijker. Het gevolg? Moderne architecturen worden steeds complexer. Het opzetten van een nieuwe omgeving kost daardoor steeds meer tijd en dus geld.

Tijdens zijn afstudeerstage bij Covadis deed Jurre Vriesen onderzoek naar oplossing van bovenstaande problemen. Onderzoek naar Infrastructure as Code (IaC). De verschillende oplossingen werkte hij uit, onderzocht hij en zijn geïmplementeerd. Daardoor kan ook jij IaC toepassen in je projecten!

Wat is Infrastructure as Code?

Infrastructure as Code is het beschrijven van je infrastructuur, die je normaal bij je cloud provider configureert, in je code. Uiteindelijk bevat je code de complete infrastructuur van je applicatie. Daarmee kan een tool (hier: Terraform) de juiste resources met de correcte instellingen aanmaken op een cloud provider, zoals Azure. Alle problemen die in de inleiding werden genoemd kunnen we daardoor oplossen. 

6 voordelen van Infrastructure as Code

  1. Tijdswinst: Per omgeving wordt op basis van de code dezelfde infrastructuur opgezet, waardoor niet elke architectuur wijziging handmatig moet worden doorgevoerd.
  2. Consistentie: Doordat veel handmatig werk vervangen wordt door automatische wijzigingen, is de consistentie tussen de verschillende omgevingen aanzienlijk hoger.
  3. Risicovermindering: Minder handwerk betekent minder kans op fouten, wat ook de kans op problemen verminderd.
  4. Kwaliteitswaarborging: De architectuur is onderdeel van de codebase van het project en wordt dus ook meegenomen in het reviewproces tijdens een pull-request. Daardoor wordt de kwaliteit beter gewaarborgd.
  5. Overzicht: Alles staat op één plek, waardoor jij beter overzicht houdt en je collega’s de code eenvoudiger eigen kunnen maken.
  6. Herhaalbaarheid: Doordat de architectuur in de code is opgenomen, dan deze eenvoudig worden uitgerold binnen een nieuwe Azure Subscription. Minder dubbele handelingen is meer tijdswinst!

Heeft Infrastructure as Code ook nadelen?

Heel eerlijk? Wij konden de nadelen niet ontdekken, naast dat je natuurlijk de extra techniek moet beheersen. Wel hebben we een kanttekening: denk bij een bestaand project goed na of er meerwaarde is in het omzetten van de architectuur naar code. Een architectuur kun je niet omzetten naar Terraform-code, dus dat betekent beginnen bij nul. Is dit project de tijd, moeite, kosten en het risico waard?

Tools voor Infrastructure as Code

Er zijn verschillende tools voor IaC, zoals Terraform, Bicep en ARM-templates. Wij kozen voor Terraform vanwege de goede integratie met Azure. Bovendien kan met Terraform de infrastructuur declaratief worden beschreven; je beschrijft dus hoe iets eruit ziet (plattegrond) en niet hoe het moet worden gebouwd. Dat wordt door Terraform geïnterpreteerd en omgezet naar werkende architectuur.

Maak zelf een snelle start

Wat ons betreft is IaC een aanrader voor alle projecten in de cloud. Eenvoudig, hoge kwaliteit, minder fouten, wat wil je nog meer? Let wel op of het de investering waard is in een bestaand project. Ga zelf met IaC aan de slag met de readme.md van Jurre en maak een vliegende start!