Wat is Infrastructure as Code?

Geschreven door op Jul 30, 2020

Software ontwikkeling of data

Veel bedrijven specialiseren zich in software ontwikkeling of data. Bij Little Rocket doen we beide. We zoeken continue naar de beste manier om deze twee expertises samen te laten werken. Daarbij komen al snel vragen naar boven zoals: welke werkzaamheden horen bij een software ontwikkelaar? En ook: welke werkzaamheden horen er bij een data expert? Als je dit kunt beantwoorden kom je erop uit dat er nog steeds heel nauw samengewerkt moet worden tussen deze rollen. De praktijk leert ook dat er meer overlap in zit dan je vooraf zou verwachten. Elkaars taal spreken is niet alleen voor ons team, maar vooral voor onze klanten een groot voordeel als het gaat om kwaliteit en snelheid.

Als we terugkijken in tijd, dan zagen we dezelfde vragen ontstaan bij mensen die werkten in infrastructuur (operatie) en software ontwikkeling. Door dit apart te benaderen was het moeilijk voor een software team om een planning af te geven omdat de werkzaamheden buiten het team lagen. Ook voor het infrastructuur team (ook wel het huidige Ops) was het lastig dat de infrastructuur kennis niet in het software team zat. Veel bedrijven hebben dit ervaren en daardoor zagen we in de loop van te tijd de term DevOps ontstaan. Een integratie van infrastructuur kennis en development kennis.

Nu zien we de grens tussen operationeel (infrastructuur) en software ontwikkeling verder vervagen. Infrastructuur wordt namelijk programmeerbaar met code: Infrastructure as Code. Dat betekent een nieuw niveau van het uitrollen van software, in minder tijd, met minder fouten en een stuk schaalbaarder.

Wat is Infrastructure as Code?

Als software bedrijf ben je afhankelijk van IT-infrastructuur en de software zal op hardware moeten draaien. Software wordt gemaakt met code. Hardware draait tegenwoordig veelal in de cloud. Dat is vaak zelfs virtueel. Dit opent deuren, want de infrastructuur wordt zo programmeerbaar. Dat wordt een hele belangrijke manier van werken om diverse redenen die we in dit artikel toelichten.

Infrastructure as Code (IaC) of programmeerbare infrastructuur betekent het definiëren en beheren van infrastructuur door middel van code. Zo'n infrastructuur wordt beschreven als objecten met eigenschappen. Vaak worden deze objecten omschreven in YAML, XML of JSON, maar vaak is er ook ondersteuning om dit in je favoriete programmeertaal te doen als Kotlin, Python etc.

De objecten worden vervolgens tegen een omgeving aangehouden en de state wordt dan gesynchroniseerd. Op deze manier worden IT componenten aangemaakt, ge-update of verwijderd. Je programmeert dus wat je wilt en synchroniseert dat naar de omgeving, bijvoorbeeld AWS, Google Cloud of Microsoft Azure.

In dit artikel verstaan wij onder infrastructuur alle hardware. Dat wil zeggen, servers, netwerk configuraties, permissies en alles wat erbij komt kijken om je applicatie uit te rollen in cloud of on-premise.

Laten we een voorbeeld geven:
Stel je wil een S3 Bucket met bepaalde permissies waarborgen in AWS cloud dan zijn er verschillende manieren om dit te realiseren in IaC. In AWS kun je hiervoor Cloudformation gebruiken, dit is een IaC provisioning service. AWS heeft hier frameworks bovenop gebouwd om het eenvoudiger maken: SAM en AWS CDK. Beide frameworks geven output in Cloudformation, waarmee je een stack creëert in de cloud op een AWS account. Afhankelijk van de status van deze stack, worden acties uitgevoerd. Zo zal de eerste keer de bucket worden aangemaakt en bij de tweede keer niet meer. Bij een volgende iteratie met andere wijzigingen, dan dienen deze in IaC worden gedefinieerd. Met het uitrollen, zal de bestaande bucket worden gebruiken en alleen deze nieuwe wijzigingen worden doorgevoerd. De cloudformation stack bevat de laatste versie en kan zo zelf bepalen welke acties er gedaan moeten worden. Anders gezegd: we programmeren wat we willen hebben, voeren dit aan cloudformation en krijgen bericht terug. We loggen dus niet in op een console om instellingen te wijzigen.

Imperatief vs. Declaratief

Voor IaC is het van belang, dat je de verschillen begrijpt tussen “imperatief vs declaratief” en “mutable vs immutable”. Dit filmpje van IBM legt dit mooi uit:

Met een imperatieve stijl beschrijf je elke stap, die gedaan moet worden. Declaratief beschrijft alleen de gewenste eind status. (Je legt niet de stappen vast hoe je van A naar B moet komen)

Declaratief is bijzonder handig als je bijvoorbeeld een dev, test en live omgeving hebt. Je wilt hetzelfde qua infrastructuur om zeker te weten dat het hetzelfde werkt. Als je dat zou doen met een beschrijving of steeds nieuwe omgevingen opzetten sluipen er vanzelf fouten in. Dat gaat tijd kosten en kan vervelende situaties creëren. Maar ook: Als je voor elke wijziging in infrastructuur een ticket moet inschieten kost dat veel tijd. En de infrastructuur specialist moet kennis hebben van jouw software en hoe je dat gemaakt hebt om het juiste te leveren. Met IaC wordt dit geautomatiseerd wat een stap voorwaarts betekent in snelheid en risicoverlaging.

Mutable vs. Immutable

Mutable IT-infrastructure is meer de aanpak zonder IaC. Meerdere personen kunnen wijzigingen aanbrengen in de infrastructuur en als er iets omvalt is het een duur en mogelijk tijdrovend proces om te analyseren wat, wanneer en door wie dit is veroorzaakt.

Met Immutable kun je de infrastructuur niet aanpassen. Dat klinkt als onhandig, maar is het niet. In plaats van elke keer je omgeving te upgraden en te documenteren wat je doet als je van v1 naar v2 (etc) gaat definieer je een hele nieuwe omgeving. Je laat v1 en v2 even naast elkaar draaien en stopt v1 dan en gaat verder met v2 als die goed bevonden is. Zo leg je eigenlijk elke keer veranderingen/instructies op elkaar en worden als een tape elke keer op dezelfde manier afgedraaid. Startpunt is dan afhankelijk van de state waar het IT-component(en) zich bevind(t)(en). Immutable Infrastructure as Code is de aanpak om infrastructuur traceerbaar te houden en speelt ook een groot belang bij het beter borgen van veiligheid. Alles is volgens een exacte specificatie automatisch uitgerold, zonder aanpassingen door personen.

Dit aspect helpt enorm met een vaak voorkomende term “configuration drift”, problemen waar je tegenaan gaat lopen met een IT-infrastructuur die regelmatig wijzigt. Zeker als je een infrastructuur hebt die enige omvang heeft én steeds in beweging is. Je moet dan niet alleen je versies allemaal beheren en documenteren, maar vaak ook de hele geschiedenis daarvan. Dat gaat snel(ler) tot problemen leiden en is een stuk minder schaalbaar.

Het mag helder zijn dat IaC bedrijven in staat stelt om wijzigingen en configuraties in een operatie efficiënter te beheren. Maar er zijn meer redenen om Infrastructure as Code te omarmen.

Waarom Infrastructure as Code?

  • Software Development Best Practises zijn toepasbaar op infrastructuur
  • Code reviews
  • Schaalbaar / Snelheid:  IT-infrastructuur eenvoudig uit te rollen op meerdere omgevingen (test, accept, productie. Maar ook b.v. meerdere klanten)
  • Door het gebruik van versiebeheer, zijn infrastructuur veranderingen traceerbaar
  • Herbruikbaarheid van code
  • Mogelijkheid tot uitvoeren van rollbacks
  • Toezicht en review op veiligheid
  • Declaratief
  • Bouwstenen voor het automatiseren van processen

Controle en inzicht

Zonder Infrastructure as Code worden wijzigingen in infrastructuur met de hand gedaan. Bijvoorbeeld via de terminal of met UI interface/ portal zoals bijvoorbeeld de webconsole van AWS, Google en Azure. Op deze manier worden veranderingen wel gedaan, maar niet vastgelegd. Het is niet centraal gemakkelijk en snel goed te traceren wat precies gewijzigd is.
Als je de bestanden van IaC in een versiebeheer vastlegt (zoals je in Git doet) worden deze wijzigingen traceerbaar. Je wilt deze veranderingen graag vastleggen om een geschiedenis te kunnen inzien. Mocht er iets fout gaan, dan kan je analyseren door welke verandering er een fout is ontstaan.

Security by design

Vanuit best practises van ontwikkelaars kunnen nu ook reviews worden gedaan over de veranderingen op infrastructuur. Dit zal de kwaliteit verbeteren, is goed voor kennisdeling en draagt bij aan de veiligheid en kwaliteit. Omdat het inzichtelijk is welke verandering door wie is uitgevoerd kan je hierover met elkaar in gesprek. Dit proces noemen we ook wel ‘security by design’.

We zien een grote toename in cybercrime en elke bedrijf is in feite een target. Controle hierover is dus erg belangrijk. IaC kan hierbij helpen en risico's verlagen.

Kwaliteit en snelheid

Met IaC kun je sneller werken en met hogere kwaliteit. De kans dat er iets mis gaat is kleiner en als er iets mis gaat kan dit snel hersteld worden. Dit levert voor de gebruikers van de infrastructuur en de software omgevingen op die goed presteren en hoge beschikbaarheid hebben.

Welke implementaties zijn er?

Er zijn veel cloudplatformen en frameworks om uit te kiezen bij een implementatie, dit maakt het niet altijd even makkelijk. Om hier een beeld van te krijgen hebben we hieronder een lijst gemaakt met een aantal mogelijke frameworks. In de praktijk zul je al snel gaan werken met meerdere frameworks.

NaamDoelAWS cloudformation & SAM & CDKManager van AWS infrastructuur tot uitrollen/configureren van applicaties. Op basis van AWS cloudformation.Azure resource managerManager van Azure infrastructuur tot uitrollen/configureren van applicatiesGoogle cloud deployment managerManager van Google infrastructuur tot uitrollen/configureren van applicatiesTerraformConfiguratie-orkestratie. Coördineren van configuratie in complexe omgevingen en clusters. Terraform is een orkestratie framework b.v. m.b.v. modules/providers worden zaken gedelegeerd naar frameworks (de experts).HelmManage Kubernetes applicationsAnsible / ChefBouwen van infrastructuur en het implementeren en configureren van applicatiesPuppetMet Puppet kun je het beheer van servers en geïnstalleerde software automatiseren met de beschrijvende programmeertaal RubyPulumiMulti cloud solutionSaltStack/SaltConfiguration manager

Mindset

Infrastructure as Code is net als DevOps ook een state of mind. Je moet geloven dat je elkaar nodig hebt om tot succes te komen. Zeker als er snel geïnnoveerd wordt en wijzigingen elkaar snel opvolgen. Een situatie die voor veel bedrijven steeds meer de regel is als we het hebben over portals, websites, apps, koppelingen en andere software die kritisch zijn voor processen en inkomsten.
Het is niet alleen een inhoudelijk of procesmatig gebeuren, het is ook een mindset en dezelfde taal (willen) spreken. Foutloos samenwerken, security by design, elkaar begrijpen en oog voor kwaliteit en resultaat spelen mee.

Naast de genoemde voordelen van IaC, is dit voor ons bij Little Rocket een reden om IaC binnen Little Rocket zoveel mogelijk toe te passen. Dezelfde taal (willen) spreken maakt integratie veel makkelijker en het resultaat beter. Het proces verloopt sneller en de kwaliteit is hoger. Dat levert voordelen op voor ons team en onze klanten!

Doe de datascan
Wil je weten welk level van datavolwassenheid jouw organisatie heeft, en wat je moet doen om verder te groeien? Doe dan eerst onze datascan.

  • ✔ Invullen kost enkele minuten
  • ✔ Je krijgt per e-mail een gratis rapport met toelichting
  • ✔ Binnen twee dagen weet je waar je staat

Benieuwd wat wij allemaal doen?

Bekijk al onze diensten en ontdek de mogelijkheden met data & AI.

Verwante
blogartikelen

De sleutel tot succes: een effectieve datastrategie

Een datastrategie, of tegenwoordig zelfs een data & AI strategie, vormt de route voor het verzamelen, analyseren en gebruiken van data & AI.
Leen Timmers
February 1, 2024
15 min

De combinatie van Artificial Intelligence en zinvol werken

Dat de aandacht voor data & AI toeneemt en dat de waarde steeds vaker aangetoond wordt is duidelijk. Zo blijkt uit het thema van de 16e...
Leen Timmers
January 18, 2024
10 min

Wat is GraphQL?

Wanneer je start met het bouwen van een webapplicatie zijn er talloze vragen die je moet beantwoorden. Welke technieken gebruik ik voor...
Michel Boezerooij
October 15, 2020
15 min

Van prep naar predictive: onze visie op data

Afgelopen week vond de Big Data Expo 2019 plaats in de jaarbeurs in Utrecht. Een plek waar mensen samenkomen met een gedeelde interesse...
February 29, 2020
5 min

De 7 dimensies van digitale volwassenheid die je moet weten voor je gaat transformeren

Digitale transformatie. We willen het allemaal, net zoals ‘iets met’ Big Data, Marketing Automation & AI. En we strugglen er ook...
Marc van Belkum
February 25, 2020
5 min

Groeien met data… daar komt geen einde aan

Zelfs als uit onze datascan blijkt dat je het hoogste level van datavolwassenheid hebt bereikt, kun je blijven groeien met data...
Marc van Belkum
June 20, 2023
10 min

Op weg naar een toekomst zonder geheimen 

Wat gaat er morgen gebeuren? Op die vraag kun je een behoorlijk betrouwbaar antwoord geven als je organisatie level 4 van...
Marc van Belkum
May 31, 2023
10 min

Waarom? Waarom? Waarom?

‘We halen veel nieuwe klanten binnen, halen onze salestargets, maar waarom stijgt onze omzet niet?’ Met dit soort waarom-vragen ga je aan...
Marc van Belkum
May 4, 2023
10 min

Wie is de beste data-ontdekker?

Komt uit onze datascan dat je op level 2 zit van datavolwassenheid? Dan is het tijd om te experimenteren! In deze fase heb je al wat data...
Marc van Belkum
April 26, 2023
10 min

Waarom kwalitatieve data broodnodig is

Elk bedrijf, groot of klein, heeft data. Maar niet elk bedrijf dóet iets met die data. In dit tweede blog (uit een serie van zes) lees je...
Marc van Belkum
April 5, 2023
10 min

Claim nú marketingbudget voor Google Analytics 4 in 2023

Kijk je soms, regelmatig of vaak naar de bezoekersaantallen van je website? Maar zegt de datum 1 juli 2023 je weinig? Dan ben je niet...
Leen Timmers
November 24, 2022
5 min

Waarom hardlopers straks weglopen met datasynthese

Marc van Belkum
April 7, 2022
5 min

Third party data stopt, zet je eigen data in voor sales & marketing!

Met het steeds verder beperken van third party (cookie) data verandert het digital marketing landschap sterk. En daarmee ook de...
May 28, 2020
10 min

De waarde van data analyse voor jouw bedrijf

Ieder bedrijf genereert data, bewust of onbewust. Als je die data links laat liggen gebeurt er niets. Gebruik je data om beter te worden.
Jelle Scholten
May 20, 2020
5 min

In drie stappen van data naar business inzicht

In de afgelopen jaren hebben veel bedrijven steeds meer data verzameld. Waarom? Omdat data het nieuwe goud is....
Jelle Scholten
February 27, 2020
5 min

De vijf levels van data-volwassenheid

Hoe hard is het nodig voor jouw bedrijf om te investeren in data? Dat hangt af van twee dingen: hoe datavolwassen je concurrenten...
Marc van Belkum
September 7, 2022
4 min

“Dankzij data maken we nu slimmere keuzes”

We horen de term steeds vaker: datavolwassenheid. Terecht, wat ons betreft, want bedrijven die mede dankzij data...
Leen Timmers
October 5, 2022
3 min