Cursus
Het beheren van een fysieke of virtuele server is niet niks, of het nu gaat om de hoge onderhoudskosten of de benodigde expertise. Serverless computing lost deze problemen op door een budgetvriendelijke manier te bieden waarop ontwikkelaars applicaties in de cloud kunnen bouwen en draaien.
In dit artikel bespreken we serverless computing, de toepassingen ervan en de voordelen voor ontwikkelaars en bedrijven. Dit is een belangrijk onderwerp, want de markt voor serverless computing overschreed in 2022 de $9 miljoen en zal naar verwachting de komende tien jaar met nog eens 25% groeien. Laten we erin duiken.
Definitie en overzicht
Stel dat de stroom en het water die je thuis gebruikt worden afgerekend op basis van je verbruik in plaats van een vaste, geschatte maandelijkse vergoeding. Zo werkt serverless computing: het is de manier waarop cloudproviders hun infrastructuur toewijzen zodat je applicaties kunt bouwen en draaien op basis van gebruik, zonder je zorgen te maken over serveronderhoud.
In tegenstelling tot traditioneel cloudcomputing, waarbij een fysieke of gevirtualiseerde server, opslag en netwerkinfrastructuur worden ingericht, beheert bij serverless computing de cloudprovider de infrastructuur en worden middelen automatisch toegewezen naarmate je applicatie schaalt. Met andere woorden: serverless computing abstraheert de server voor ontwikkelaars, zodat zij zich kunnen focussen op de applicaties die ze bouwen in plaats van op de infrastructuur waarop die applicaties draaien.
Stel, je applicatie heeft normaal 100 tot 200 dagelijkse gebruikers. Als het aantal gebruikers de volgende dag plots stijgt naar 1.000.000, schaalt de server automatisch je resources om aan die vraag te voldoen. Dit is met traditioneel cloudcomputing niet haalbaar, omdat servers dan downtime ervaren door de toename in verkeer; en als de server weinig opslag heeft, moet er grotere opslag worden aangeschaft, wat tijd kost.
| Categorie | Serverless computing | Traditioneel computing |
|---|---|---|
| Schalen | Dynamisch | Vast |
| Facturatie | Op basis van gebruik | Doorlopende kosten, ongeacht gebruik, inclusief onderhouds- en operationele kosten |
| Infrastructuurbeheer | Geabstraheerd voor bedrijven | Vraagt actief beheer |
Belangrijkste kenmerken
Voordat we kijken naar de belangrijkste eigenschappen die serverless computing onderscheiden van andere traditionele cloudmodellen, bekijken we eerst de kernbegrippen binnen serverless computing.
- Functie (Function): Een stuk code dat is ontworpen om een specifieke taak uit te voeren, zoals een bestand uploaden, HTTP-verzoeken verwerken of iets anders. Elke functie staat op zichzelf en reageert op een gebeurtenis.
- Aanroep (Invocation): Het aanroepen van een functie om een specifieke actie uit te voeren; oftewel het uitvoeren van de functiecode als reactie op een gebeurtenis.
- Duur (Duration): De tijd die een functie nodig heeft om uit te voeren, vanaf het moment van aanroepen tot aan de response.
- Cold start: De tijd die een serverlessplatform nodig heeft om resources toe te wijzen wanneer een functie wordt aangeroepen, vóórdat de uitvoering start.
- Gelijktijdigheidslimiet (Concurrency Limit): Het maximale aantal instanties waarin een functie gelijktijdig kan draaien als reactie op events en requests.
- Timeout: De maximale toegestane duur voor een functie voordat het serverlessplatform de uitvoering beëindigt.
Event-gedreven uitvoering
Event-gedreven uitvoering staat ook bekend als Function-as-a-Service (FaaS), waarbij de serverless applicatie wordt opgedeeld in onafhankelijke serverless functies die worden getriggerd door specifieke events uit bronnen zoals HTTP-verzoeken, wijzigingen in een database, berichtenwachtrijen of bestandsuploads.
Stel dat je een serverless applicatie hebt die automatisch afbeeldingen verwerkt zodra ze naar een Amazon S3-bucket worden geüpload. Wanneer een gebruiker een afbeelding uploadt, wordt een functie getriggerd om de afbeelding te verwerken en in een andere Amazon S3-bucket op te slaan. Zo draait de functie alleen wanneer dat nodig is, wat het systeem efficiënt en kosteneffectief maakt.

Event-gedreven uitvoering, met bestandsupload als voorbeeld. Afbeelding door de auteur
Automatisch schalen
Auto-scaling is het toewijzen van compute-resources op basis van vraag of toename van workloads. Het is een kernkenmerk van serverless computing dat het efficiënt en flexibel maakt: resources worden niet verspild bij weinig belasting en er is geen downtime bij hoge vraag.
Krijgt je applicatie bijvoorbeeld een verkeerstoename? In plaats van downtime te ervaren door het hoge verkeer, levert het platform automatisch extra instanties om de verhoogde workload aan te kunnen. Evenzo schaalt het platform resources terug om kosten te minimaliseren wanneer het verkeer laag is. Dit zorgt voor efficiëntie zonder handmatige tussenkomst, waardoor de applicatie in uiteenlopende scenario’s kosteneffectief en responsief blijft.
Betalen per gebruik
Serverlessplatforms rekenen kosten op basis van de gebruikte resources, niet op basis van toegewezen capaciteit. In tegenstelling tot traditionele cloudmodellen, waar je mogelijk niet alle toegewezen resources benut, betaal je bij serverless alleen voor de gebruikte rekentijd. De kosten worden ook gemeten per aanroep of per duur van de functie-uitvoering, zodat je precies wordt gefactureerd voor de resources die je gebruikt.
Als je applicatie in een maand bijvoorbeeld 100 afbeeldingen van gebruikers verwerkt, betaal je niet voor 24/7 servergebruik, maar alleen voor de rekentijd die nodig was voor die 100 verwerkte afbeeldingen.
Abstractie van serverbeheer
Dit is ook een belangrijk kenmerk van serverless computing: ontwikkelaars en bedrijven hoeven zich niet bezig te houden met het inrichten, schalen en onderhouden van servers. Zo kunnen ze zich richten op de kern van hun bedrijfsproblemen en het serveronderhoud overlaten aan de cloudprovider.
Beheer van gelijktijdigheid
Serverlessplatforms kunnen meerdere functies gelijktijdig uitvoeren. Dat is sneller en efficiënter vergeleken met traditionele benaderingen. Willen gebruikers bijvoorbeeld afbeeldingen uploaden en hanteert de serverlessprovider een standaard gelijktijdigheidslimiet van 100, dan worden verzoeken boven die limiet in de wachtrij geplaatst en uitgevoerd bij de volgende functie-uitvoering.
Voordelen van serverless computing
Kostenefficiëntie
In tegenstelling tot traditioneel cloudcomputing, dat dedicated servers vereist en kosten met zich meebrengt wanneer de server niets doet, gebruiken serverlessplatforms een event-gedreven model om ontwikkelaars te belasten. Een handige analogie is een taxiservice gebruiken in plaats van een auto bezitten. Met een taxi hoef je je geen zorgen te maken over uitgaven zoals parkeerkosten, brandstof, enzovoort; je betaalt alleen voor de afstand die je aflegt. Bij serverless computing betaal je, net als bij de taxi, alleen voor de compute-resources die je gebruikt. In de traditionele aanpak (een auto bezitten) ben je verantwoordelijk voor alle middelen, ook wanneer het systeem stilstaat.

Vergelijking van kostenefficiëntie tussen servertype. Bron: Cloudflare
Minder operationele complexiteit
Bij serverless computing wordt veel tijd bespaard, omdat ontwikkelaars geen tijd hoeven te besteden aan het installeren en onderhouden van servers; ze kunnen zich meer focussen op het bouwen van de applicatie. Omdat applicaties zijn opgebouwd uit onafhankelijke cloudfuncties, kun je één functie updaten zonder andere functies of de hele applicatie te verstoren.
Betere schaalbaarheid
Dit is een van de belangrijkste voordelen van een serverlessplatform en de reden dat het populair is bij kleinere organisaties en startups. Serverlessplatforms maken het eenvoudig om automatisch te schalen wanneer de vraag toeneemt. Bij functies met schommelende aantallen requests schalen serverlessplatforms op of af door de resourceallocatie aan te passen, zodat compute-resources optimaal worden benut.
Snellere time-to-market
Met serverless applicaties kun je snel releasen en direct feedback van gebruikers krijgen. Dit is belangrijk voor startups, omdat het de benodigde tijd en mankracht om applicaties te bouwen vermindert.
Betrouwbaarheid
In tegenstelling tot applicaties die op dedicated servers worden gehost, kun je serverless applicaties overal draaien. Dit verbetert de prestaties en verlaagt de latentie in vergelijking met traditioneel cloudcomputing.
Serverless-architectuur en hoe het werkt
Serverless-architectuur is een manier om applicaties te bouwen zonder de infrastructuur waarop de applicatie draait te installeren en te beheren. Ontwikkelaars kunnen serverless applicaties bouwen met twee serverlessmodellen: Backend as a Service (BaaS) of Function as a Service (FaaS).
- Backend as a Service (BaaS): Dit serverlessmodel wordt meestal gebruikt bij het bouwen van backends voor web- en mobiele applicaties. Ontwikkelaars hoeven backendfunctionaliteit zoals databases, gebruikersauthenticatie, opslag enzovoort niet zelf te coderen. Dit versnelt de ontwikkeling, omdat ontwikkelaars zich vooral richten op de frontend. Voorbeelden van BaaS-providers zijn Firebase, SupaBase en AWS Amplify.
- Function as a Service (FaaS): Bij FaaS schrijven ontwikkelaars de code die het platform uitvoert, zonder zich zorgen te maken over het beheren van compute-resources en schaling. Hierdoor kunnen functies worden uitgevoerd als reactie op getriggerde events. Voorbeelden van FaaS-providers zijn AWS Lambda, Azure Cloud Functions en Google Cloud Functions.

FAAS- en BAAS-serverless cloudarchitecturen. Bron: Journal of Cloud Computing
Het hoofddoel van serverless-architectuur is serverbeheer abstraheren voor ontwikkelaars. Zo werken serverlessplatforms onder de motorkap:
- Functiecreatie: Applicaties die met een serverless-architectuur zijn gebouwd, worden opgedeeld in subonderdelen, waarbij elk onderdeel een individuele functie is, onafhankelijk van andere functies en gericht op een specifieke taak.
- Functieontwikkeling: Deze functies worden verpakt en gedeployed naar een serverlessplatform zoals AWS Lambda, Azure Cloud Functions of Google Cloud Functions.
- Event-gedreven uitvoering: Deze functies worden aangeroepen als reactie op een specifieke gebeurtenis of trigger. Triggers kunnen bijvoorbeeld databasewijzigingen of HTTP-verzoeken zijn.
- Automatisch schalen: Serverlessplatforms beheren het gebruik van resources door events naarmate de workload toe- of afneemt. Zo krijgt een functie met veel verkeer meer resources toegewezen.
- Tijdelijke containers: Het triggeren van een event creëert containers die de uitgevoerde functie toegang geven tot benodigde resources. Na voltooiing van de taak worden deze containers vernietigd.
- Facturatie: De facturatie is gebaseerd op de hoeveelheid uitvoeringstijd en gebruikte compute-resources.
- Statusloosheid (Statelessness): Serverlessfuncties behouden tijdens de uitvoering geen informatie. Benodigde gegevens voor een aanroep worden in een database of extern opgeslagen.
- Logging en monitoring: Serverlessplatforms bieden tools voor logging en monitoring om de prestaties van applicaties en problemen in functies te volgen.
Je zou je kunnen afvragen: is een serverless-architectuur niet hetzelfde als een containerarchitectuur, omdat beide de server voor ontwikkelaars abstraheren? Dat klopt deels, maar in tegenstelling tot serverlessfuncties, die de server volledig abstraheren, moet je bij containers bij hoge verkeerspieken zelf de containers schalen met tools als Kubernetes. Dat druist in tegen het doel van FaaS, waar alle servergerelateerde acties automatisch door het serverlessplatform worden afgehandeld.
In een containerarchitectuur kun je containerinstanties hebben die langdurig draaien en daardoor kosten maken, terwijl je bij serverlessfuncties wordt afgerekend op basis van de tijd die je functie daadwerkelijk draait. Voor kleinere applicaties maakt een serverless-architectuur het eenvoudiger om ze op te knippen in onderdelen die als onafhankelijke functies door het platform kunnen worden uitgevoerd.
Serverless computingplatforms
Voordat Google App Engine in 2008 verscheen, bood Zimki het eerste “pay as you go”-platform voor code-executie, maar dit werd later beëindigd. In de beginfase kon Google App Engine alleen Python ondersteunen en had het gemeten facturatie voor applicaties, waaronder SnapChat. Rond 2010 bood een ander platform, PiCloud, ook FaaS-ondersteuning voor Python-applicaties.
In 2014 populariseerde AWS het serverlessmodel met tools als AWS Serverless Application Model (AWS SAM) en Amazon CloudWatch. Google bracht in 2016 hun tweede serverlessaanbod uit, Google Cloud Functions, naast Azure Functions. Sindsdien zijn diverse serverlessplatforms uitgebracht, zoals Function Compute van Alibaba Cloud en IBM Cloud Functions van IBM Cloud.
Om de noodzaak van een gevirtualiseerde of fysieke database te verminderen, zijn ook serverlessdatabases ontwikkeld. AWS biedt Amazon Aurora, een serverlessvariant op basis van MySQL en PostgreSQL. Azure biedt Azure Data Lake, en Google levert Firestore.

Serverless cloudplatforms. Bron: Network Interview
Praktische toepassingen en use-cases
Websites en API’s
Serverless computing wordt gebruikt voor het bouwen van webapplicaties en REST-API’s. Het mooie is dat applicaties met een serverlessinfrastructuur automatisch schalen op basis van de vraag van gebruikers, wat de gebruikerservaring verbetert.
Mediaverwerking
Serverless-architectuur maakt mediaverwerking eenvoudiger. Gebruikers kunnen content uploaden vanaf uiteenlopende apparaten en in verschillende groottes, en het platform verwerkt dit met een functie die voldoet aan de vraag van elke gebruiker zonder de prestaties te verlagen. Zo kan een gebruiker bijvoorbeeld een afbeelding uploaden via een S3-bucket, wat een AWS Lambda-functie triggert om een watermerk of thumbnail toe te voegen.
Chatbots
Ontwikkelaars kunnen met serverless-architectuur een chatbot implementeren die reageert op klantvragen en betalen alleen voor de resources die de chatbot gebruikt. Zo gebruikt Slack serverless-architectuur om de wisselende botverzoeken af te handelen en onderbenutte bandbreedte te vermijden door dagelijkse fluctuaties in klantbehoeften.
Webhooks
Je kunt een serverlessplatform gebruiken om via een webhook-HTTP-endpoint met SaaS-leveranciers te communiceren, dat meldingen ontvangt en taken uitvoert. Dit biedt minimaal onderhoud, lage kosten en automatische schaalbaarheid voor de gebouwde webhook.
IoT
Coca-Cola gebruikt serverless-architecturen op hun verkoopautomaten Freestyle om klanten te laten bestellen, betalen en betalingsmeldingen te ontvangen voor hun drankjes. Coca-Cola gaf aan dat ze ongeveer $13.000/jaar uitgaven aan het beheer van hun automaten, wat daalde naar $4.500/jaar na de implementatie van serverless-architecturen.
Dataverwerking
Major League Baseball Advanced Media bouwde hun product Statcast met een serverless-architectuur om gebruikers nauwkeurige realtime sportstatistieken te bieden. Het gebruikt serverless computing om data te verwerken en gebruikers inzichten te geven over honkbalwedstrijden.
Event-gedreven applicaties
Serverless-architectuur wordt gebruikt voor event-gedreven applicaties, zodat wanneer een event of status verandert, er een service wordt getriggerd. Je kunt serverlessplatforms gebruiken om wijzigingen in een database te monitoren en die te vergelijken met kwaliteitsstandaarden.
Serverless edge computing
Doordat data over lange afstanden moet reizen, kost het applicaties tijd om verzoeken te verwerken en content te leveren vanaf gecentraliseerde servers, wat zorgt voor latentie en knelpunten.
Serverless edge computing lost dit op door compute-resources over meerdere locaties te verdelen en zo de belasting van de centrale server te verminderen. Serverless edge computing plaatst de compute-resources die serverlessfuncties draaien dichter bij eindgebruikers (de edge). Hierdoor kan de serverless applicatie op meer apparaten draaien, neemt de congestie af en daalt de latentie.
Bij serverless edge computing is infrastructuur toegewezen aan elk apparaat, zodat het complexe taken kan uitvoeren zonder data terug te sturen naar de centrale locatie voor verwerking. Enkele use-cases die de gebruikerservaring optimaliseren met serverless edge-functies:
- Gepersonaliseerde ervaring: Met serverless edge-functies kan content worden gepersonaliseerd op basis van voorkeuren, locatie en apparaattype.
- Videostreaming en gaming: Verzoeken dicht bij gebruikers verwerken vermindert de latentie en buffering bij videostreaming of online gamen.
- Beveiliging en authenticatie: Door workloads over verschillende edge-locaties te verdelen, wordt kwaadaardig verkeer gecontroleerd en gefilterd voordat het de centrale infrastructuur bereikt.
- IOT-apparaten: Serverless edge computing zorgt ervoor dat IoT-apparaten efficiënter presteren doordat de infrastructuur die het apparaat aandrijft dicht bij de gebruiker staat.
Uitdagingen en aandachtspunten
Ondanks de voordelen kent serverless computing ook enkele nadelen.
- Vendor lock-in: De meeste cloudproviders bieden meerdere services die goed integreren met serverless applicaties. Hoewel het mogelijk is om een dienst van een andere leverancier in je serverapplicatie te gebruiken, zijn services van één provider vaak eenvoudiger te integreren.
- Minder controle: Een ander punt is het gebrek aan controle over de server. Als er een probleem is met de server, zoals een storing of hardwareprobleem, kun je dit niet zelf oplossen en ben je afhankelijk van de cloudprovider.
- Cold starts: Een cold start treedt op wanneer een functie die een tijdje inactief is geweest, wordt aangeroepen en het enkele seconden duurt voordat deze uitvoert. Dit kan latentie introduceren, wat de prestaties en de gebruikerservaring kan beïnvloeden.
- Beveiliging: Door je data aan een derde toe te vertrouwen en een server te delen met andere gebruikers, loop je het risico je applicatie- en gebruikersdata bloot te stellen als de servers niet correct zijn geconfigureerd.
- Complexe debugging: Door de aard van serverless applicaties is het voor ontwikkelaars lastig om de productieomgeving lokaal te reproduceren, waardoor lokaal testen moeilijker wordt. Integratietests die de interactie tussen frontend- en backendcode testen, zijn in een serverlessomgeving ook lastig uit te voeren.
Conclusie
Voor bedrijven die lichte applicaties willen bouwen, is serverless computing de juiste weg. Voor applicaties die uit veel services met complexe interacties bestaan, is een hybride infrastructuur aan te raden, met virtuele machines voor grote processen; in dat geval gebruik je serverless containers alleen voor korte taken. Serverless edge-functies zijn ook het overwegen waard, omdat ze de latentie minimaliseren door data lokaal te verwerken zonder de centrale server zwaar te belasten.
Houd er rekening mee dat er voortdurend vooruitgang wordt geboekt om de mogelijkheden van serverless computing uit te breiden. Zo kun je een multicloudaanpak gebruiken om serverless applicaties te bouwen, waarbij je services van meer dan één cloudprovider combineert. Er zijn ook ontwikkelingen om cold starts te elimineren, zoals geïmplementeerd in Cloudflare Workers.
Bedankt voor het lezen. Wil je meer leren over serverless computing en je skills op dit gebied vergroten? Bekijk dan de volgende DataCamp-bronnen:
- AWS Cloud Technology and Services: Leer over de cloudtechnologieën en -diensten van AWS, inclusief serverless-opties.
- Azure Architecture and Services: Begrijp de architectuur en services van Azure, inclusief de serverless-functies.
- Streaming Data with AWS Kinesis and Lambda: Duik in AWS Kinesis en Lambda voor realtime datastreaming en -verwerking.
Voor kortere leestijd: bekijk onze blogpost met projectideeën voor alle niveaus.
- Top 13 Hands-On AWS Projects: From Beginner to Pro: Ontdek praktische AWS-projecten om je serverless computing-vaardigheden te verbeteren.
Ervaren docent data science en biostatisticus met expertise in Python, R en machine learning.
Veelgestelde vragen
Wat is serverless computing?
Serverless computing is een cloudcomputingmodel waarbij cloudproviders de infrastructuur beheren en automatisch resources toewijzen naarmate applicaties schalen. Ontwikkelaars kunnen zich richten op het bouwen en draaien van applicaties zonder zich zorgen te maken over serveronderhoud.
Hoe verschilt serverless computing van traditioneel cloudcomputing?
In tegenstelling tot traditioneel cloudcomputing biedt serverless computing dynamische schaalbaarheid, betalen-per-gebruik, en wordt het infrastructuurbeheer geabstraheerd voor bedrijven.
Wat zijn de belangrijkste voordelen van serverless computing?
Belangrijkste voordelen zijn kostenefficiëntie, minder operationele complexiteit, betere schaalbaarheid, snellere time-to-market en hogere betrouwbaarheid.
Wat zijn veelvoorkomende use-cases voor serverless computing?
Serverless computing wordt gebruikt voor het bouwen van websites en API’s, mediaverwerking, chatbots, webhooks, IoT-toepassingen, dataverwerking en event-gedreven applicaties.
Met welke uitdagingen moet je rekening houden bij het adopteren van serverless computing?
Enkele uitdagingen zijn vendor lock-in, minder controle over de onderliggende infrastructuur, cold starts, mogelijke beveiligingsrisico’s door het delen van resources, en complexe debugging door de gedistribueerde aard van serverless applicaties.

