Infrastructure as code testing

26 okt. 2022 | by Ralph Van Der Horst

Infrastructure as Code Testing

Voor testers die hun cloud technische skills willen uitbreiden op het gebied van Infrastructure as Code testing

Inleiding

Als functioneel/technisch tester met meer dan 20 jaar ervaring ben ik de afgelopen twee jaar als SDET gaan werken binnen een DevOps-team. Hier kwam ik in aanraking met AWS CDK en de fascinerende wereld van Infrastructure as Code (IaC). Door mijn technische interesse en achtergrond als Software Development Engineer in Test werd ik betrokken bij het onderhouden van AWS stacks en het testen van infrastructuurimplementaties.

Dit artikel is bedoeld voor testers die meer willen weten over het testen van Infrastructure as Code en hun technische vaardigheden op dit gebied willen uitbreiden.

Wat is Infrastructure as Code Testing?

De Uitdaging van Gedistribueerde Infrastructuur

Moderne applicaties bestaan vaak uit gedistribueerde componenten die verspreid zijn over verschillende delen van de infrastructuur: meerdere servers, containers, Lambda-functies, cloudservices, databases, en meer. Het handmatig creëren van een dergelijke complexe infrastructuur is niet alleen vervelend, maar ook zeer foutgevoelig.

De Oplossing: Infrastructure as Code

Door infrastructuur op te slaan als code wordt het implementatieproces:

  • Voorspelbaarder - Consistent herhaalbare deployments
  • Minder foutgevoelig - Geautomatiseerde checks en validaties
  • Terugdraaibaar - Vertrouwen dat je altijd kunt rollbacken
  • Transparant - Het hele team krijgt inzicht in de infrastructuur
  • Aanpasbaar - Snellere wijzigingen doorvoeren

Infrastructure as Code maakt gebruik van beschrijvende talen en door mensen leesbare formaten zoals YAML en JSON. Bij AWS denk je bijvoorbeeld aan CloudFormation templates. Tools zoals Terraform, Ansible en AWS CDK zijn essentieel om deze templates te genereren, omdat handmatig schrijven te complex en foutgevoelig is.

Waarom wordt IaC Testing Steeds Belangrijker?

De Groeiende Complexiteit

Naarmate het aantal integraties en ketens groeit, wordt het handmatige proces van infrastructuurbeheer:

  • Tijdrovend - Steeds meer tijd nodig voor configuratie
  • Foutgevoelig - Hogere kans op menselijke fouten
  • Communicatie-intensief - Veel stakeholdermanagement nodig
  • Omslachtig - Inefficiënte processen

Voor Management: De Business Case

Infrastructure as Code testing rust op drie belangrijke pijlers:

1. Complexiteit Beheersen

Het inrichten van infrastructuur met verschillende componenten is inherent complex. Bedrijven investeren aanzienlijke bedragen in het bouwen van meerdere omgevingen waarop testteams hun integratietests uitvoeren.

2. Tijd Besparen

Zonder proper testen van de infrastructuur ontdekken testteams vaak bugs die veroorzaakt worden door slechte implementaties. Dit verspilt de tijd van alle betrokken teams.

3. Foutgevoeligheid Verminderen

Veelvoorkomende implementatieproblemen zijn:

  • Connectiviteitsissues - REST APIs die niet goed zijn opgezet
  • Security misconfiguraties - Verkeerd geïmplementeerde beveiligingscontroles waardoor Lambda-functies en servers onbereikbaar zijn
  • Netwerkconfiguraties - Poorten en SSL-certificaten die incorrect zijn ingesteld

De Rol van Infrastructure Testing

Het testen van infrastructuur speelt een sleutelrol bij:

  • Het verminderen van problemen door slechte implementaties
  • Het voorkomen van verkeerde configuraties
  • Het geven van vertrouwen aan testers dat gevonden problemen applicatiegerelateerd zijn, niet infrastructuurgerelateerd

Economische voordelen: Omdat infrastructure testing veel tijd bespaart voor alle betrokken teams, is het economisch zeer zinvol om deze stap goed uit te voeren.

Mijn Praktijkervaring als DevOps-Tester

De Leerweg

Hoewel ik dit knowledge document voornamelijk voor mezelf heb geschreven om de benodigde kennis op te doen, heb ik wel een R&D-traject uitgevoerd met AWS CDK, Jest en AWS RSpec. De praktijkervaring is nog beperkt, maar ik zie het potentieel van deze niche, vooral omdat hele organisaties worstelen met deze uitdagingen.

Huidige Vaardigheden

Inmiddels kan ik:

  • CDK-apps creëren in JavaScript
  • Meewerken als DevOps-developer bij het bouwen van stacks
  • Infrastructure-gerelateerde testen ontwikkelen

Voortdurende Ontwikkeling

Ik werk momenteel aan een AWS Developer certificaat om infrastructuurzaken nog beter te begrijpen. Zoals ik studenten en medewerkers altijd uitleg: als je de ‘waarom’-vraag niet begrijpt, kun je nooit goed testen - of het nu gaat om functioneel testen, automatisch testen, of infrastructure testing.

Conclusie

Infrastructure as Code testing is een groeiend vakgebied dat steeds belangrijker wordt in onze cloud-first wereld. Voor testers biedt het een uitstekende kans om hun technische vaardigheden uit te breiden en waardevolle bijdragen te leveren aan DevOps-teams.

De investering in tijd en training om deze vaardigheden te ontwikkelen loont zich terug door de efficiëntievoordelen en kwaliteitsverbeteringen die het biedt aan het hele ontwikkelteam.


Voor meer informatie over populaire tools voor static code checks, deployment, unit testing en lokale “systeemtests”, verwijs ik naar mijn andere blog over Infrastructure as Code testtools.

Contact: Ralph van der Horst op LinkedIn

by Ralph Van Der Horst

arrow right
back to blog

share this article

Relevant articles

Tooling om gecontroleerd io c te testen

Infrastructure as Code Testing: Van Chaos naar Gecontroleerde Deployments Infrastructure as Code (IaC) heeft de manier waarop organisaties …

Read More