Door de geschiedenis heen zijn veel technologieën ontwikkeld met een specifiek doel voor ogen, om vervolgens pas later hun ware potentieel te onthullen. Denk aan het web, dat oorspronkelijk werd ontworpen voor het uitwisselen van natuurkundepapieren, maar is uitgegroeid tot een hoeksteen van het moderne leven. Of JavaScript, dat aanvankelijk werd afgedaan als een eenvoudige scripttaal voor het toevoegen van interactiviteit aan webpagina’s, maar nu de meest gebruikte programmeertaal ter wereld is. Tegenwoordig bevindt WebAssembly (WASM) zich op een soortgelijke koers, en breidt het zich ver uit voorbij de bedoelingen van de oorspronkelijke makers.
Oorspronkelijk gebouwd voor gebruik in webbrowsers, heeft WebAssembly al zijn transformerende impact op webontwikkeling bewezen, zoals we in eerdere artikelen hebben besproken. Echter, het potentieel stopt niet bij de browser. Een van de spannendste nieuwe toepassingen van WASM is de cloud, waar het zich snel ontwikkelt als een game-changer voor serverless computing. Nu WebAssembly steeds populairder wordt, is het duidelijk dat het zich zal vestigen als een fundamenteel platform voor het uitvoeren van serverless functies in de cloud.
De weg naar WebAssembly
Voordat we verder duiken, is het de moeite waard om na te denken over wat WebAssembly onderscheidt van eerdere pogingen om niet-traditionele talen in de browser te draaien. Historisch gezien waren er verschillende pogingen om dit te bereiken, maar de meeste slaagden niet:
- Java Applets (deprecatie in 2007)
- VBScript (een kortstondige poging van Microsoft, beperkt tot eigen browsers)
- Adobe Flash en Microsoft Silverlight (beiden kwamen en gingen)
Wat maakt WebAssembly nu zo uniek dat het niet alleen snel werd omarmd door alle moderne browsers, maar ook ver buiten het web is geëxpandeerd?
De eerste reden ligt in de ontwerpfilosofie. Mozilla, de drijvende kracht achter WebAssembly, werkte samen met Google, Microsoft, Apple en anderen en verplichtte zich om het vanaf het begin te ontwikkelen onder de W3C-standaarden.
De tweede reden is de innovatieve benadering van WebAssembly. In plaats van één enkele taal te ondersteunen, introduceerde het een binair formaat waartoe bestaande programmeertalen konden compileren. Dit fundamentele verschil vormt de basis van zijn succes.
Hoewel het oorspronkelijke bericht teruggaat tot 2019 en reflecteerde op eerdere ontwikkelingen, hebben de daaropvolgende jaren alleen maar bevestigd hoe juist de inzichten waren. Tegenwoordig heeft WebAssembly zich stevig gevestigd buiten het web, en een van de gebieden waar het uitblinkt is in serverless architecturen.
In de volgende secties duiken we dieper in deze veelbelovende synergie.
Waarom WebAssembly in cloud computing?
Waarom heeft WebAssembly voet aan de grond gekregen in cloud computing, met name in serverless omgevingen? Het antwoord ligt in het lichte, snelle en veilige uitvoeringsmodel.
Serverless functies, of Function-as-a-Service (FaaS), stellen ontwikkelaars in staat om kleine eenheden code uit te voeren als reactie op gebeurtenissen, zonder zich zorgen te maken over de onderliggende infrastructuur. Deze functies moeten voldoen aan verschillende cruciale vereisten:
- Lichtgewicht: Ze moeten snel opstarten en uitvoeren, omdat ze meestal worden gebruikt voor korte, gebeurtenisgestuurde taken.
- Geïsoleerd en Veilig: Beveiliging is essentieel, aangezien functies van verschillende gebruikers dezelfde hardware kunnen delen.
- Cross-platform: Functies moeten naadloos draaien over diverse cloudomgevingen met minimale aanpassingen.
WebAssembly sluit perfect aan bij deze behoeften, waardoor het een uitstekende keuze is voor serverless computing. Hier is waarom:
- Laag overhead: WASM-modules zijn compact en geoptimaliseerd voor snelle opstart, wat de “cold start”-latentie aanzienlijk vermindert — een veelvoorkomend probleem in serverless architecturen.
- Beveiliging en isolatie: Het robuuste sandboxing-model van WASM zorgt ervoor dat modules geïsoleerd zijn en beperkte toegang hebben tot het onderliggende systeem, wat de beveiliging in multi-tenant omgevingen versterkt.
- Cross-platform compatibiliteit: WASM’s vermogen om dezelfde code uit te voeren op verschillende besturingssystemen en hardware maakt het zeer draagbaar, wat het ideaal maakt voor serverless workloads over cloudplatforms heen.
Met de combinatie van lage latentie, sterke sandboxing en cross-platform capaciteiten is WebAssembly goed geschikt voor het afhandelen van de kortdurende, gebeurtenisgestuurde taken die vaak voorkomen in serverless applicaties.
Hoe WebAssembly werkt buiten het web
Hoewel WebAssembly (WASM) van nature krachtig is, werd het oorspronkelijk ontworpen voor gebruik op het web en mistte het essentiële functies voor bredere toepassingen, zoals bestandsbeheer, netwerkfunctionaliteit en systeemoproepen. Deze beperkingen werden opgelost door WASI (WebAssembly System Interface).
WASI is een gestandaardiseerde API die WebAssembly-modules in staat stelt om te communiceren met de systeembronnen van de hostomgeving, zoals bestandssystemen, netwerken en klokken, op een veilige en platformonafhankelijke manier. Het werd ontwikkeld door de Bytecode Alliance, een open-sourceorganisatie die mede werd opgericht door Mozilla, Fastly, Intel en anderen om veilige, draagbare en hoogpresterende WebAssembly-gebaseerde software te bevorderen.
Door deze hiaten te overbruggen, brengt WASI WebAssembly dichter bij de mogelijkheden van traditionele binaire bestanden, terwijl het de kenmerkende draagbaarheid en beveiliging behoudt.
Belangrijkste kenmerken van WASI:
- Platformonafhankelijkheid: WASI stelt WASM-toepassingen in staat om te draaien op verschillende omgevingen zonder dat aanpassingen nodig zijn.
- Beveiliging als standaard: WASI bouwt voort op het sandboxing-model van WASM en zorgt ervoor dat modules alleen toegang hebben tot systeembronnen die expliciet door de runtime zijn toegestaan.
- Modulaire API: WASI biedt kernfunctionaliteiten zoals bestand I/O, netwerken en kloktoegang in een modulaire structuur. Toepassingen gebruiken alleen de capaciteiten die ze nodig hebben, wat zowel de beveiliging als de prestaties ten goede komt.
Via WASI breidt WebAssembly zijn reikwijdte uit en stelt het toepassingen in staat om robuust en veilig te communiceren met hostsystemen, terwijl het zijn lichte en draagbare aard behoudt.
Tooling
Programmeertalen en technologieën alleen zijn niet voldoende om toepassingen of functies voor de echte wereld te bouwen. Frameworks spelen een cruciale rol door de gaten te vullen met essentiële tools, abstracties en integraties die de ontwikkeling, implementatie en het beheer van toepassingen vereenvoudigen. Dit geldt ook voor het gebruik van WebAssembly (WASM) in serverless functies.
Om serverless functies effectief te ontwikkelen met behulp van WASM, zijn er verschillende frameworks ontstaan. Twee daarvan springen eruit als leidende opties:
Deze frameworks zijn specifiek ontworpen om de sterke punten van WASM in serverless omgevingen te benutten. Ze bieden de benodigde tools, schaalbaarheid en beveiliging om event-gedreven, cloud-native toepassingen efficiënt te ontwikkelen en uit te voeren.
Fermyon Spin
Fermyon Spin wordt erkend als een van de leidende frameworks voor het bouwen en implementeren van serverless toepassingen aangedreven door WebAssembly (WASM).
Belangrijkste sterke punten:
- Gebruiksvriendelijkheid: Spin biedt ontwikkelaarsvriendelijke tools en een eenvoudige CLI, waarmee het proces van het bouwen van serverless functies wordt vereenvoudigd zonder dat uitgebreide setup of infrastructuurbeheer nodig is.
- Hoge Prestaties voor Stateless Functies: Ontworpen voor stateless serverless functies, maakt Spin gebruik van de snelle uitvoertijden van WASM, waardoor het ideaal is voor toepassingen zoals API’s, gegevensverwerking en event-gedreven microservices.
- Actieve Gemeenschap en Ondersteuning: Ondersteund door een betrokken gemeenschap en een toegewijd team, blijft Fermyon Spin zich ontwikkelen om in te spelen op opkomende WASM serverless use cases, wat het een betrouwbare keuze maakt voor productieomgevingen.
Suborbital Atmo
Suborbital Atmo is een ander toonaangevend framework dat specifiek is ontworpen voor het bouwen van modulaire, event-gedreven toepassingen met WebAssembly (WASM). Het wordt gepositioneerd als een oplossing voor het mogelijk maken van complexe serverless workflows en microservices aangedreven door WASM.
Belangrijkste sterke punten
- Workflowgericht: Atmo excelleert in het samenstellen van workflows, waardoor het ideaal is voor toepassingen die meerdere functies vereisen, waarbij taken met elkaar interageren en gegevens delen over een reeks.
- Modulaire Microservices: Door gebruik te maken van WASM, stelt Atmo de creatie van zeer modulaire en samenstelbare toepassingen in staat, die perfect geschikt zijn voor cloud-native en gedistribueerde systemen.
- Gelijktijdige Uitvoering: De taakbeheerder van Atmo ondersteunt gelijktijdige verwerking, wat het een sterke keuze maakt voor toepassingen die achtergrondverwerking vereisen of serverless functies met hoge doorvoer moeten afhandelen.
Afsluitende gedachte
Het serverless paradigma heeft de backend-ontwikkeling getransformeerd door ontwikkelaars in staat te stellen zich te concentreren op het schrijven van code, zonder de last van het beheren van infrastructuur. In combinatie met WebAssembly wordt serverless computing nog krachtiger.
Als gevolg hiervan zal WebAssembly een cruciale rol spelen in de toekomst van serverless computing. Met zijn vermogen om code efficiënt, draagbaar en veilig uit te voeren, heeft het het potentieel om de manier waarop ontwikkelaars toepassingen bouwen en implementeren in zowel cloud- als edge-omgevingen te herdefiniëren, en daarmee in te spelen op de evoluerende eisen van moderne computing.
Op zoek naar betrouwbare softwareontwikkelingsdiensten?
Ontdek hoe we kunnen helpen.
- Anneke van der Putten
- Call: +31 (0)30 782 0111
- anneke@netrom.nl
- Ronald Bouwmeister
- Call: +31 (0)30 782 0117
- ronald@netrom.nl