Om moderne applicaties snel en goed te kunnen ontwikkelen, heb je een moderne manier van werken nodig. De cloud stelt hierbij de nodige eisen aan ontwikkelaars, die niet per se specialisten zijn op het gebied van de infrastructuur die hiervoor nodig is. Pulumi wil met open-source Infrastructure-as-Code (IaC) de helpende hand bieden.
Een onderzoek van de Cloud Native Computing Foundation (CNCF) uit 2020 (het CNCF Survey uit dat jaar) bracht aan het licht dat ongeveer 50 procent van de developers een maand moest wachten op toegang tot de infrastructuur. Om een moderne applicatie te ontwikkelen, is dit vrijwel onmisbaar.
Met infrastructuur bedoelen we hier de onderliggende voorwaarden die nodig zijn om een applicatie te kunnen draaien. Denk hierbij bijvoorbeeld aan het opzetten van AWS Fargate voor de compute die nodig is voor applicaties. Die infrastructuur moet je configureren voor je applicatie. Ontwikkelaars zijn niet per se specialisten op dit gebied en willen dat waarschijnlijk ook niet echt worden.
Er zijn meerdere Infrastructure-as-Code-tools op de markt die helpen om een dergelijke infrastructuur in te richten. Veruit de bekendste is Terraform van HashiCorp. Volgens Joe Duffy, oprichter en CEO van Pulumi, is het bestaande aanbod echter verre van eenvoudig. Dat wilde hij samen met zijn mede-oprichter anders zien. Vandaar dat ze in 2017 Pulumi hebben opgericht. Inmiddels werken er ruim 100 mensen voor het bedrijf, is er een Series B investeringsronde geweest die 57,5 miljoen dollar heeft opgebracht en is Pulumi actief in zes landen, waaronder Nederland en België. Bekende grote klanten zijn onder andere BMW en Mercedes-Benz, maar ook Snowflake en Atlassian gebruiken het IaC-product van Pulumi. Duffy geeft aan dat het bedrijf al meer dan 1500 klanten heeft. Naast de open-source IaC-basis biedt Pulumi ook een commercieel product aan waar het inkomsten mee genereert. Dat heet Pulumi Service.
Van code naar cloud
Het doel van het IaC-platform van Pulumi is om ontwikkelaars sneller van code naar cloud te krijgen, vat Duffy samen. Dat houdt in dat de developer zo weinig mogelijk na hoeft te denken over de infrastructuur, in ieder geval op de lagere niveaus. Het Pulumi-platform kun je het beste zien als een abstractielaag, waarmee je alles wat eronder zit in een keer kunt configureren. We hebben het hier dan ook over declaratief programmeren, niet imperatief. Dat wil zeggen, je programmeert op basis van de uitkomsten die je wilt zien, en bent niet per se bezig met hoe het geprogrammeerd moet worden.
De Pulumi Architecture Templates zijn een goed voorbeeld van de manier waarop Pulumi werkt. Dit zijn basisblauwdrukken voor de meest gebruikte cloudarchitecturen, waarbij per dienst de acht meest gebruikte patronen zijn opgenomen. Als ontwikkelaar hoef je daar dus niet over na te denken. Je geeft simpelweg aan welke je wilt gebruiken en hebt (een gedeelte van) de infrastructuur opgezet. Ook zaken zoals een loadbalancer worden aangemaakt als je de blauwdrukken gebruikt.
Let wel, er is niet overal een Architecture Template voor. Pulumi richt zich hiermee op de meest gangbare cloudomgevingen. Per dienst die je hierop inricht heeft het bedrijf de acht meest gebruikte zogeheten patronen in de templates opgenomen. Uiteindelijk draait het bij het optuigen van extra abstractielagen om het zo goed mogelijk aanbieden van de best practices in de markt. Daarmee haal je niet alle complexiteit weg, dat realiseert Duffy zich ook. Maar het maakt onder de streep wel meer mogelijk. “De bedoeling is om de eenvoudige dingen eenvoudig te maken, maar vooral ook de moeilijke dingen mogelijk te maken”, vat hij het samen.
Multicloud en multilanguage
Een abstractielaag zoals Pulumi die voor developers bouwt, kan alleen maar werken als er voldoende ondersteuning is voor de verschillende omgevingen en tools die ontwikkelaars gebruiken. Anders moeten deze alsnog op lagere niveaus gaan programmeren. Dat lijkt wel goed te zitten, als we zo eens naar onderstaande graphic kijken.
Pulumi Universal Infrastructure-as-Code, zoals het open-source platform voluit heet, ondersteunt meer dan 100 clouds en clouddiensten. Uiteraard de bekende public clouds, maar ook de diensten die erop draaien. Als voorbeeld noemt Duffy de combinatie van Amazon EKS, CloudFlare en Snowflake. De infrastructuur die nodig is om dat toe te voegen aan een applicatie, kan op het platform van Pulumi opgezet worden. Daarnaast ondersteunt het platform ook alle bekende talen, van Python, Java en Go tot YAML. Tot slot is er ondersteuning voor alle bekende DevOps en CI/CD tooling.
Pulumi Service
Binnen de open-source ontwikkelomgeving van Pulumi kun je zoals al aangegeven op een relatief eenvoudige manier de infrastructuur voor je applicaties inregelen. Je kunt dit een beetje vergelijken met hoe low-code/no-code-platformen werken. Ontwikkelaars werken met grotere bouwblokken en kunnen zo grotere stappen zetten en dus sneller applicaties live hebben. Vooral platformteams binnen organisaties vinden dit een fijne manier van werken, volgens Duffy.
Pulumi kan deze open-source ontwikkelomgeving vanzelfsprekend alleen maar aanbieden als er ook ergens omzet gegenereerd wordt. Daarvoor heeft het Pulumi Service ontwikkeld. Dit is een SaaS-oplossing waarmee je in de woorden van Duffy “zichtbaarheid en controle” krijgt over datgene wat je op het IaC-platform hebt gebouwd. Duffy vergelijkt de verhouding tussen het open-source Pulumi Universal Infrastructure-as-Code en het commerciële Pulumi Service met de verhouding tussen Git en GitHub.
Pulumi Service is de beheerlaag bovenop het open-source platform. Je kunt hier onder andere precies bijhouden en zien wie welke veranderingen in de code heeft gemaakt en op welk moment dit is gebeurd. Ook voegt het de nodige zaken toe die met name binnen grotere organisaties onmisbaar zijn. Denk hierbij onder andere aan IAM. Je kunt hiervoor Active Directory, Okta of welke tool dan ook gebruiken. Zolang deze maar ondersteuning biedt voor SAML 2.0.
Pulumi Service biedt verder ook nog een interessante toevoeging op het gebied van Secrets Management. Op het moment dat je iets opslaat wat op een wachtwoord lijkt, krijg je van Pulumi een melding/waarschuwing om deze data te encrypten. Een laatste component van Pulumi Service die we hier willen uitlichten is de Automation API. Hiermee kunnen ontwikkelaars IaC als een library gebruiken, niet meer alleen als een CLI. Pulumi CLI is nog wel geïnstalleerd als je gebruikmaakt van Automation API, maar ontwikkelaars hoeven er niet meer mee te interageren. Ze zetten Automation API in om dit voor hen te doen, in de taal van de onderliggende infrastructuur. Vooral in complexere rollouts moet dit veel voordeel opleveren, volgens Duffy.
We gaven hierboven al aan dat Pulumi Service een SaaS-oplossing is. Dit betekent niet dat je het niet kunt inzetten als je geen algemene clouddiensten kan, mag of wil gebruiken. Er is ook een zogeheten self-hosted variant beschikbaar. Deze kun je in een eigen omgeving installeren, ook in air-gapped omgevingen. De belofte is dat je volledige controle hebt en houdt over je data. Met andere worden, databases en object stores bevinden zich in het eigen netwerk. Er vindt ook geen enkele communicatie plaats vanuit deze versie met de buitenwereld, ook niet met Pulumi zelf.
Kan Pulumi naast breedte ook diepte leveren?
In de basis biedt Pulumi organisaties de mogelijkheid om op een hoger abstractieniveau met Infrastructure-as-Code aan de slag te gaan. Dat moet IaC toegankelijker maken voor meer mensen, is het idee. Pulumi ontsluit het volledige aanbod van alle aanbieders van clouddiensten op het gebied van IaC. Volgens Duffy maakt deze eigenschap het mogelijk om vanuit een enkele oplossing de hele hybride infrastructuur van organisaties in te richten. Andere partijen richten zich vaak op een enkele component, zoals serverless, containers en Kubernetes.
Pulumi zet het aanbod dus een stuk breder op dan andere partijen, waarvan Terraform van HashiCorp zonder enige twijfel de voornaamste concurrent is. Het biedt ook migratiediensten aan voor andere IaC-platformen. Hiermee kun je infrastructuur die is gebouwd met Terraform, AWS CloudFormation, Azure Resource Manager en Kubernetes YAML omzetten naar de taal van je keuze binnen Pulumi. Het maakt volgens Duffy niet out hoe deze bestaande infrastructuur opgebouwd en ingedeeld is.
Uiteindelijk roept de breedte van het aanbod van Pulumi bij ons wel de vraag op in hoeverre dit ten koste gaat van de diepgang van het aanbod. Er moeten toch ergens compromissen gesloten worden. Dat hebben we hierboven ook gezien bij de templates, die alleen de meest voorkomende patronen van de meest voorkomende cloudomgevingen aanbieden. Met andere woorden, je kunt heel veel doen met Pulumi, maar niet alles.
Duffy erkent ook meteen dat Pulumi in eerste instantie vooral de breedte heeft opgezocht. Het ging vooral om het aanbieden van de bouwblokken. Naarmate de tijd vorderde, ging Pulumi ook steeds meer de diepte in. Dat was vooral ook mogelijk, omdat ze vrijwel alles ontwikkeld hebben samen met klanten. Dan kun je gezamenlijk heel diep gaan. Continu alles bijhouden wat gebeurt en verandert in de wereld van IaC is echter zeker een uitdaging, geeft hij aan. Pulumi moet hier dus erg goed op blijven letten.
Het kan hard gaan met Pulumi
Wij zien in de opkomst van het IaC-platform van Pulumi een parallel met low-code en no-code. Dat is ook ooit begonnen als een idee om op een hogere abstractielaag te gaan ontwikkelen. Het accepteerde hiervoor eveneens de nodige compromissen om de grotere bouwblokken aan te kunnen bieden. Inmiddels wordt low-code steeds breder geaccepteerd, ook voor het ontwikkelen van core-applicaties.
Een groot verschil tussen de opkomst van low-code en de ‘low-code IaC’ van Pulumi is dat ontwikkelingen nu veel sneller gaan. Waar low-code er een jaar of 10 voor nodig had om echt te landen, zal dat met het aanbod van Pulumi hoogstwaarschijnlijk een heel stuk sneller gaan. De min of meer onverwachte Series B investeringsronde vorig jaar is hier een eerste bewijs voor. Pulumi is op dit moment nog een relatief bescheiden speler in de markt van Infrastructure-as-Code, maar dat zou zomaar eens snel en hard kunnen veranderen.
Lees ook: Tijdens de meest recente editie van HashiConf hoorden we dat ook HashiCorp met Terraform richting een betere zichtbaarheid en meer self-service gaat.