Onze Inzichten

Blogs

Infrastructure as Code: waarom je het nodig hebt en hoe je het moet gebruiken

Gijs Zonneveld
Gijs Zonneveld
15 nov 2021 - 4 min read

Dankzij cloudtechnologie is het uitrollen van nieuwe infrastructuur eenvoudiger dan ooit. Maar cloud-infrastructuur is er in zo veel soorten en maten, dat het veilig, gestructureerd en efficiënt configureren en beheren ervan een uitdaging kan zijn. infrastructure as code (IaC) zorgt dat alle infrastructuur voldoet aan een standaard ontwerp en geen handmatige configuratie of onderhoud nodig heeft. Zo kun je al je infrastructuur gemakkelijk en snel op- of afschalen.

Het onderhouden van on-premises infrastructuur is inmiddels voor veel bedrijven een last. Het integreren ervan met de talloze gebruikte SaaS-tools en het uitrollen van geavanceerde marketingtechnologie, zoals A/B-tests en personalisatie, zijn lastig. En dan zijn er nog de kosten en de beperkte schaalbaarheid...

Als je om deze en andere redenen naar de cloud migreert, moet je oppassen dat je je on-premises problemen niet mee migreert naar de cloud. Om dat te voorkomen, heb je effectieve continuous integration & delivery (CI/CD) pipelines nodig. Zo zorg je voor een infrastructuur die schaalbaar is en altijd 'gewoon werkt'.

Infrastructure as Code: een introductie

Handmatige configureratie van je infrastructuur kan nooit het innovatietempo bijhouden dat je in de huidige omstandigheden nodig hebt. IaC houdt in dat je niet elk individueel onderdeel van je infrastructuur configureert, maar dat je één 'sjabloon' schrijft van hoe je denkt dat een virtuele machine, een database, een CDN, een firewall of een andere component geconfigureerd moet zijn. Heb je een extra instantie nodig van zo’n onderdeel? Dan zeg je gewoon tegen je deployment pipeline: rol een extra instantie uit.

De voordelen zijn legio:
  • Al je omgevingen zijn gelijk. Nooit meer code die werkt op je ontwikkel-, test- en acceptatie-omgevingen en faalt in productie door configuratieverschillen.
  • Het afbreken van een component is net zo eenvoudig als het uitrollen ervan. Dat levert je eindeloos snelle schaalbaarheid op en ongekende controle over de kosten.
  • Omdat je gelijktijdig een oneindig aantal identieke testomgevingen kunt draaien, test je verschillende nieuwe functionaliteiten tegelijk. Na acceptatie kun je ze snel integreren in productie.

Technisch gezien is de 'infrastructuur' die je bij IaC onderhoudt een verzameling deployment- en provisioning scripts die je onder versiebeheer plaatst. Het draaien van zo’n script resulteert in, bijvoorbeeld, een server die een standaard configuratie draait. Het opruimen is net zo eenvoudig: een ander script archiveert de inhoud en maakt de resources vrij, zodat je geen kosten maakt voor ongebruikte infrastructuur.

Een compleet overzicht van alle deployments zorgt dat je altijd weet wat je hebt draaien en waar het voor gebruikt wordt. Dit voorkomt een situatie die we vaak zien, waar ergens een server draait die niemand uit de lucht durft te halen, omdat niemand precies weet waar hij voor dient en wie de eigenaar is. Waarschijnlijk is een developer gewoon vergeten zijn testserver te killen en heeft het ding geen enkele functie meer. Maar niemand weet het zeker... En al die tijd worden er dure resources verbruikt voor niets.

WHITEPAPER CLOUD DATA STRATEGIES

Cloud-agnostische IaC met Terraform

Alle belangrijke cloudaanbieders hebben inmiddels IaC-tooling. Amazon's CloudFormation en Azure ARM Templates zijn bekende voorbeelden. Maar hier bij Triple houden we liever onze opties open als het op het kiezen van een cloudprovider aankomt. Soms vereist een project dat we meerdere clouds integreren of een hybride configuratie draaien, met cloud en on-premises in één project. Of we willen SaaS-diensten integreren. Of een extern CDN zoals dat van Akamai. En we willen in al die gevallen met dezelfde IaC-gereedschapskist kunnen werken.

Terraform van Hashicorp is het gereedschap dat wij het liefst gebruiken. Terraform geeft ons alle voordelen van IaC terwijl het ons niet vastpint in het ecosysteem van één cloudprovider. Met de open source command line-interface van Terraform kunnen we infrastructuur in elke cloud handmatig plannen, bouwen, aanpassen, updaten en weer afbreken, maar ook geautomatiseerd. Een slim systeem van API-adapters, door Terraform 'providers' genoemd, vertaalt de Terraform-taal naar commando's die de doelsystemen begrijpen.

De code die Terraform gebruikt ondersteunt ook het maken van ‘modules’, stukjes herbruikbare. Onze beveiligingsconfiguraties voor Azure groeien en evolueren bijvoorbeeld elke dag. Het modulesysteem zorgt ervoor dat al onze klanten daar continu van profiteren.

Bijhouden van de state

De kern van Terraform is het antwoord op de vraag die beheerders al decennia wakker houdt: wat draait er precies op mijn infra? Terraform checkt en rapporteert voortdurend de state van alle infrastructuur en vergelijkt die met wat er in je code is gedefinieerd. Wijkt het af? Dan kan het automatisch gecorrigeerd worden. En omdat ook deze data in de cloud worden opgeslagen, zien al je teams altijd dezelfde actuele informatie. Ook als ze aan de andere kant van de wereld zitten.

Usecases voor Infrastructure as Code

Laten we eens kijken naar een paar van de usecases voor IaC. Om te laten zien dat deze technologie geen 'nice to have' is, maar een absolute kernfactor in het versnellen van je innovatie.

Beheer van complexe applicaties

Apps zijn tegenwoordig multi-tier en multi-cloud. Functionaliteit uit verschillende private en public clouds en SaaS worden daarbij gecombineerd. Een typische business-applicatie is bijvoorbeeld op Microsoft Azure gebouwd, maar gebruikt een commercieel SaaS CDN. Met een tool als Terraform beheer je dat allemaal op één plek.

OTAP configureren en onderhouden

Test-, acceptatie- en deploymentprocessen worden vaak verstoord door configuratie-afwijkingen tussen omgevingen. IaC deployt altijd dezelfde configuratie, of het nu een lokale test is of een volledige productieomgeving. Dit maakt het in stand houden van een soepel OTAP-proces stukken makkelijker.

Wegwerp-infrastructuur voor testen en demo’s

Niet alle infrastructuur hoeft altijd aan te staan. IaC maakt het mogelijk om een volledige testomgeving op te starten voor elke nieuwe functie die je wilt testen. En dan weer af te breken als het testen klaar is. Hetzelfde geldt voor softwaredemo’s. De nachtmerrie van het 'demo-effect', waarbij alles wat op je testserver perfect werkte jammerlijk mislukt in de demo-omgeving, behoort tot het verleden. IaC zorgt dat elke omgeving precies on-spec is.

WHITEPAPER CLOUD DATA STRATEGIES

Centraal beheer van beveiligingsregels

Cloudbeveiliging vereist slimme policies die strikt gehandhaafd worden. Het uitrollen van beveiligingsconfiguraties vanuit een centraal punt in de organisatie maakt dat veel makkelijker. Met Terraform kun je ook logs en factureringsgegevens van al je resources bij elkaar brengen voor analyse en forensisch onderzoek.

Centraal beheer van cloudresources om de kosten te beheersen

Terraform is een centrale omgeving die alle infrastructuur beheert. Dat maakt het de ideale plek om gebruiksgegevens te aggregeren en kosten en efficiëntie te beoordelen. Op basis van die data identificeer je de projecten of teams met het hoogste verbruik en kun je ze waar mogelijk afschalen.

Provisioning via zelfbediening

Tot slot een heel groot, zeg maar gerust revolutionair, voordeel van IaC. Veel organisaties hebben ontdekt dat IaC het mogelijk maakt om gebruikers hun eigen infrastructuur te laten uitrollen. Binnen hun gebruiksrechten kunnen gebruikers vanuit een zelfbedieningsportaal IaC-scripts draaien en de infrastructuur lanceren die ze nodig hebben. Zonder dat ze iemand van IT nodig hebben. Dit bespaart iedereen veel tijd, e-mails en telefoontjes.

Snel aan de slag? Laat je helpen door een specialist!

Zoals gezegd zijn de voordelen van Infrastructure as Code groot. Maar het implementeren ervan is een serieus technisch project. Ook in je organisatie moet er veel veranderen. Pak je dit op eigen houtje op, zonder externe hulp, dan wordt het een zware klus. Wij hebben IaC al in de vingers. We hebben de best practices en standaardscripts liggen die je nodig hebt om je migratie naar IaC snel af te ronden en succesvol te maken. We kunnen je IaC-project faseren en structureren en we kunnen je helpen governance en beheer uit te rollen die echt werken.

Ben je klaar om aan IaC te beginnen? Of heb je misschien meer informatie nodig over wat Terraform en IaC voor je kunnen doen? Neem contact op en we helpen je op weg met een demo, een analyse of een goed gesprek.