07 mrt 2024 Op weg naar echte Infrastructure as Code Nieuws Open source software is anno 2024 uitgegroeid tot de mondiale hoeksteen van technologische vooruitgang en innovatie. Marcel Kornegoor, docent en open source guru bij AT Computing, weet er alles van en deelt zijn ervaringen. Dit keer o.a. over abstractielagen. De brede adoptie van cloud-platformen, virtualisatie, containerisatie en verregaande automatisering van de software delivery workflow met CI/CD pipelines, zorgen voor een interessant spanningsveld binnen de IT. Aan de ene kant zijn de mogelijkheden en flexibiliteit van IT infrastructuur (servers, netwerken, storage) door de jaren heen enorm gegroeid. Aan de andere kant brengt deze ontwikkeling een toegenomen complexiteit met zich mee. Een oplossing hiervoor is de inzet van abstractielagen, die de precieze werking van onderliggende systemen maskeert. Je hoeft hierdoor als software ontwikkelaar alleen nog te weten wat je nodig hebt, maar niet hoe datgene precies werkt. Ook in het dagelijks leven maken we volop gebruik van abstractielagen: je doet de kraan open om water te pakken en hoeft daarvoor geen kennis te hebben over waterdruk, het leidingwerk of het zuiveringsproces. Abstracties zijn waardevol. Je kunt immers niet alles van alles weten, maar je wilt in het dagelijks leven vaak wel van “alles” gebruik maken. Er kleeft echter ook een risico aan: wat nu als de abstractie een keer niet goed werkt? Je doet de kraan open en er stroomt ineens bruin water uit… in geval van water ga je meestal niet zelf op onderzoek uit, maar vertrouw je erop dat de watermaatschappij dit doet. Binnen de IT zul je in voorkomende gevallen wel zelf op onderzoek uit moeten. En dan kunnen de diverse abstractielagen voor een flinke uitdaging zorgen: weet je nog wel hoe de onderliggende systemen precies werken? En wie kan nog het geheel overzien? CfgMgmtCamp Maandag 5 en dinsdag 6 februari 2024 was ik samen met drie collega’s van AT Computing aanwezig bij Config Management Camp in het Belgische Gent. Config Management Camp is een jaarlijkse, hoog aangeschreven, technisch georiënteerde conferentie op gebied van configuration management en Infrastructure as Code (IaC). Configuration management en IaC richten zich op het onder controle brengen en onder controle houden van een IT infrastructuur. Stel je hebt een (virtuele) server of database nodig, dan kun je die met IaC geautomatiseerd creëren. In het geval van een server kun je het daarop draaiende besturingssysteem instellen met behulp van configuratie management: het zorgt ervoor dat de juiste accounts, netwerkpoorten en applicaties geautomatiseerd en correct worden geïnstalleerd en geconfigureerd. Dit helpt de hoeveelheid handwerk enorm te reduceren, voorkomt menselijke fouten en draagt bij aan de beveiliging en conformiteit (compliance) van de IT-omgeving. Wereldwijd veel gebruikte tools voor configuratie management en IaC zijn onder andere Ansible, Puppet, Terraform en Salt De conferentie stond bol van nieuwe tools die allemaal, natuurlijk stuk voor stuk op een net andere manier, voor een zekere vorm van abstractie zorgen. Er was hierbij een trend zichtbaar naar een nog hoger niveau van abstractie, waarbij de nieuwe tools niet meer direct iets doen, maar instructies fabriceren voor tools binnen een andere abstractielaag. In technische termen: je schrijft niet langer direct een stuk YAML voor een deployment op Kubernetes, maar gebruikt een programmeertaal die met behulp van een (Kubernetes) library de benodigde YAML genereert. Het voordeel van deze manier van abstraheren is dat er meer eenduidigheid ontstaat aan de “bovenkant” van de IT-stack. Je hoeft daardoor nog maar één tool en bijbehorende taal te leren, waarna je diverse onderliggende tools kunt gebruiken voor het echte werk. Als we dit vertalen naar de analogie met de waterkraan dan kun je het zien als een keuken met allemaal verschillende soorten kranen, waar niet alleen water uitkomt, maar ook melk, thee, koffie, bier en frisdrank. Als directe gebruiker moet je hierdoor van ieder type kraan leren hoe die werkt. Er is wel sprake van abstractie van alle onderliggende techniek, want als je de betreffende kraan opent dan kun je zorgeloos de betreffende drank tappen. Het spreekt voor zich dat het onderliggende, geabstraheerde proces per kraan heel anders verloopt. Het proces voor koffie en thee (warm en vers gezet) verschilt substantieel van het proces voor whisky (misschien wel 20 jaar geleden gemaakt en geleverd op een specifieke temperatuur). De extra abstractie die er nu binnen configuratie management en IaC aan zit te komen, legt een extra laag over het bedienen van alle verschillende kranen heen. Je bedient hierbij niet meer direct de kraan, maar beschrijft in één en dezelfde taal precies wat je aan drankjes wilt hebben en conform welke eisen (bijvoorbeeld de hoeveelheid en temperatuur). De door jou geschreven instructies worden vervolgens door de bijbehorende tool omgezet in een nieuwe set instructies voor iedere specifieke kraan. Je hoeft op die manier dus niet meer van iedere kraan te weten hoe die precies werkt. In plaats daarvan hoef je alleen nog maar te leren om instructies rondom de gewenste uitkomst te schrijven. Waarom? Dat is een terechte vraag. Het voegt immers nog een laag aan het al complexe IT-landschap toe. Sterker nog: een laag die eigenlijk zelf niets doet. Toch zijn de ontwikkelaars van de nieuwe tools ervan overtuigd dat het waarde biedt. En ze hebben daar ook wel een punt. De meeste bestaande configuratie management en IaC tools maken voor het beschrijven van de gewenste configuratie gebruik van bijvoorbeeld YAML, JSON of iets wat daarop lijkt. Dit zijn geen programmeertalen en brengen daardoor diverse beperkingen met zich mee. Zo is het maken van een eenvoudige loop of een test al een uitdaging. De nieuwe lichting config-talen belooft alle voordelen van een programmeertaal te bieden, met behoud van de leesbaarheid van bijvoorbeeld YAML. Op papier lijkt dit allemaal reuze handig. Je maakt complexe onderliggende IT-technieken immers bruikbaar voor een grotere groep medewerkers. Omdat voor de nieuwe abstractielaag voor de configuratie van IT-infra gebruik wordt gemaakt van een taal die veel lijkt op bijvoorbeeld JavaScript, Go of Python, wordt het voor onder andere softwareontwikkelaars eenvoudiger om te definiëren hoe een stuk infrastructuur voor een applicatie eruit moet zien. Domein experts van de onderliggende lagen kunnen, al dan niet samen met de softwareontwikkelaars, zorgen voor goede sjablonen die als blauwdruk voor een nieuwe omgeving gebruikt kunnen worden. Dit helpt het IT-landschap te standaardiseren, verhoogt de conformiteit en de veiligheid. Een ander groot voordeel is dat je een bredere competentie rondom de nieuwe configuratie-taal opbouwt: een grotere groep mensen krijgt met dezelfde taal te maken, waardoor je als bedrijf minder afhankelijk wordt van de kennis en kunde van een kleine groep medewerkers. De medewerkers met kennis over de onderliggende lagen, zullen meer en meer als adviseur/consultant te werk gaan en collega’s helpen om zo zelfstandig mogelijk code te schrijven voor de onderliggende infrastructuur. Slotakkoord Al met al is de beweging richting echte Infrastructure as Code een zeer interessante ontwikkeling. Met name binnen grote ondernemingen brengt het nieuwe mogelijkheden met zich mee, omdat het de schaalbaarheid en hergebruik bevordert. Tools zoals Pulumi, MgmtConfig en WingLang opereren in dit nieuwe abstractiegebied en ook de recent door Apple geïntroduceerde taal PKL (uitgesproken als pickle) tilt abstractie naar een hoger niveau. De grootste uitdaging in de toekomstige, meer abstracte wereld? Dat is wat mij betreft de zoektocht naar specialisten die alle abstracties echt snappen en dit tot betrouwbare IT-oplossingen weten te vertalen. Het wordt immers met een extra abstractielaag niet per definitie eenvoudiger in de IT-stack… Meer weten over open source? Bekijk hier alle cursussen. Gerelateerde artikelen Copilot: onmisbare turbo voor jouw organisatie De werkdag van een cloud engineer Azure AI Services: wat kun je er nou écht mee?