26 June 2024
Wat is serverless?
Ontdek het concept van serverless computing, de voordelen, toepassingen en de impact op applicatie- en softwareontwikkeling.
Filters

Wat is serverless computing?
De term "serverless" klinkt misschien in eerste instantie verwarrend. Servers maken inderdaad nog steeds deel uit van de vergelijking en je code draait nog steeds ergens op servers. Het verschil is dat je niet langer over die servers hoeft na te denken. Je hoeft ze niet te provisionen, configureren, patchen of je zorgen te maken of ze pieken in het dataverkeer aankunnen. De cloudprovider regelt dat allemaal voor je.
Deze verschuiving vertegenwoordigt een belangrijke verandering in de manier waarop we applicaties bouwen en uitvoeren. In plaats van een infrastructuur te onderhouden die continu draait, schrijf je functies die worden uitgevoerd als reactie op specifieke triggers. Dit betekent dat wanneer er niets gebeurt, er niets draait en je nergens voor betaalt.
Dit artikel duikt in de wereld van serverless computing en legt uit hoe het werkt, wat de voordelen zijn en in welke gevallen het zinvol is om erop te vertrouwen.
TL;DR
- Serverless computing voert uw code alleen uit wanneer dat nodig is en schaalt automatisch op basis van de vraag, zonder servers te beheren.
- U betaalt alleen voor de daadwerkelijke uitvoeringstijd (gemeten in milliseconden), niet voor inactieve servercapaciteit.
- Functies reageren op gebeurtenissen zoals HTTP-verzoeken, bestandsuploads of databasewijzigingen.
- Perfect voor API's, gegevensverwerking, geplande taken en applicaties met variabel verkeer.
- Cold starts en uitvoeringstijdlimieten zijn de belangrijkste afwegingen.
- Belangrijke aanbieders zijn onder andere AWS Lambda, Google Cloud Functions en Azure Functions.
Hoe serverless werkt
Kortom, serverless computing draait om het uitvoeren van kleine stukjes code als reactie op gebeurtenissen. Het is een meer gedetailleerde benadering van computing, wat betekent dat in plaats van een complete applicatie continu te laten draaien in afwachting van verzoeken, je individuele functies hebt die 'activeren' wanneer ze nodig zijn.
Dit is wat er achter de schermen gebeurt: Wanneer er een gebeurtenis plaatsvindt (bijvoorbeeld iemand uploadt een bestand, een databaserecord verandert of een API ontvangt een verzoek), stelt de cloudprovider een omgeving in om je code uit te voeren. Je functie wordt uitgevoerd, voert zijn taak uit en vervolgens wordt de omgeving weer offline gehaald. Het klinkt misschien als een ingewikkeld proces, maar het hele proces kan in werkelijkheid slechts een paar honderd milliseconden duren.
Als er meerdere gebeurtenissen tegelijkertijd plaatsvinden, voert de provider automatisch meerdere instanties van je functie parallel uit. Je hoeft geen load balancers te configureren of je zorgen te maken over schaalbeleid. Het platform verwerkt dat allemaal automatisch.
De voordelen van serverless computing
De voordelen van serverless gaan verder dan alleen het niet beheren van servers, hoewel het prettig is om je er geen zorgen over te hoeven maken. Een van de belangrijkste voordelen is het prijsmodel. Traditionele servers kosten geld, of ze nu verzoeken verwerken of inactief zijn. Met serverless betaalt u alleen voor de rekentijd die u daadwerkelijk gebruikt.
Dit maakt serverless ongelooflijk kosteneffectief voor applicaties met variabel of onvoorspelbaar verkeer. Als uw applicatie het ene uur vijf gebruikers bedient en het volgende uur vijfduizend, betaalt u alleen voor wat u nodig hebt. U hoeft geen servers te overprovisioneren voor het geval het verkeer piekt.
De ontwikkelsnelheid is een ander groot voordeel. Wanneer ontwikkelaars zich geen zorgen hoeven te maken over de infrastructuur, kunnen ze zich volledig richten op het schrijven van bedrijfslogica. U kunt in minuten in plaats van dagen van idee naar geïmplementeerde functie gaan.
De automatische schaalbaarheid is ook het vermelden waard. Uw applicatie kan één verzoek of een miljoen verzoeken verwerken zonder configuratiewijzigingen. Het platform schaalt op en af op basis van de werkelijke vraag, waardoor gebruikers altijd een responsieve ervaring krijgen en geen vertraging ervaren.
De beperkingen van serverless begrijpen
Hoewel serverless veel voordelen heeft, kent het ook nadelen.
Koude starts zijn een van de meest besproken beperkingen van serverless. Wanneer een functie recentelijk niet is uitgevoerd, heeft de provider tijd nodig om de uitvoeringsomgeving te initialiseren. Dit kan een paar honderd milliseconden (of meer) toevoegen aan de eerste aanvraag. Voor sommige applicaties is deze latentie acceptabel. Voor andere applicaties die afhankelijk zijn van snelle reacties, kan het een dealbreaker zijn.
Er zijn echter strategieën om koude starts te minimaliseren, zoals het "warm" houden van functies met periodieke pings of het gebruik van provisioned concurrency-functies die sommige providers bieden. Het is echter belangrijk om te onthouden dat deze benaderingen complexiteit en kosten toevoegen, waardoor de eenvoud die serverless in eerste instantie aantrekkelijk maakt, afneemt.
Uitvoeringslimieten zijn een andere overweging. De meeste serverless-platforms beperken de uitvoering van functies tot ergens tussen de vijf en vijftien minuten. Dit maakt serverless ongeschikt voor langlopende processen zoals videorendering of complexe batchtaken die uren duren. Voor deze scenario's moet u andere computeropties bekijken of het werk in kleinere stukken opsplitsen.
Ten slotte kan het debuggen van serverloze applicaties een grotere uitdaging zijn dan het debuggen van traditionele applicaties. Wanneer uw code veel gedistribueerde functieaanroepen gebruikt, wordt het lastiger om de uitvoeringsstroom te traceren en te begrijpen wat er mis is gegaan. Goede logging en monitoring worden dan essentieel in plaats van optioneel.
Bouwen met een serverloos framework
Wanneer u begint met het bouwen van serverloze applicaties, zult u waarschijnlijk verschillende serverloze frameworks tegenkomen die de ontwikkeling vereenvoudigen. Deze frameworks helpen u bij het definiëren, testen en implementeren van uw functies bij verschillende cloudproviders.
Een serverloos framework biedt doorgaans een configuratiebestand waarin u uw functies, hun triggers en de benodigde resources (zoals databases of storage buckets) definieert. Het framework verwerkt vervolgens het implementatieproces en creëert alle benodigde infrastructuur en verbindingen.
Deze frameworks helpen ook bij lokale ontwikkeling. U kunt uw functies op uw eigen computer testen voordat u ze implementeert, wat de ontwikkelingscyclus aanzienlijk versnelt. Veel frameworks ondersteunen meerdere cloudproviders, zodat u kunt implementeren waar u maar wilt.
Werken met AWS Serverless
Wanneer men het over serverless computing heeft, komt AWS Lambda vaak als eerste ter sprake. Amazon Web Services was de pionier van het serverless model en blijft een van de populairste platforms voor serverless applicaties. Werken met AWS serverless services betekent dat u toegang krijgt tot een volwassen ecosysteem met uitgebreide documentatie en community-ondersteuning.
AWS Lambda integreert naadloos met andere AWS-services. Uw functies kunnen reageren op wijzigingen in S3-opslag, berichten uit SQS-wachtrijen verwerken, API-verzoeken afhandelen via API Gateway of reageren op database-updates in DynamoDB. Deze diepgaande integratie maakt het eenvoudig om complexe applicaties te bouwen met serverless als bindmiddel tussen verschillende services.
Het installeren van serverless met AWS is relatief eenvoudig. U kunt beginnen met de AWS Console om functies te creëren en te testen en vervolgens overstappen op infrastructuur als codetools naarmate uw applicatie groeit. Het platform biedt gedetailleerde statistieken en logs, zodat u gemakkelijker kunt begrijpen hoe uw functies presteren en waar zich problemen kunnen voordoen.
Toepassingen in de praktijk
Serverless is een uitstekende keuze in specifieke scenario's. API-backends zijn een natuurlijke keuze, omdat elk eindpunt een eigen functie kan hebben en onafhankelijk kan schalen op basis van de vraag. Als één eindpunt veel verkeer ontvangt terwijl andere rustig zijn, wordt alleen die functie opgeschaald. Deze gedetailleerde schaalbaarheid kan leiden tot aanzienlijke kostenbesparingen in vergelijking met het schalen van een volledige API-server.
Dataverwerkingspipelines werken ook uitzonderlijk goed met serverless. Wanneer bestanden worden geüpload, kan een functie automatisch worden geactiveerd om ze te verwerken. Of u nu miniaturen van afbeeldingen genereert, video's transcodeert of gegevensformaten transformeert, serverless verwerkt de variabele werklast efficiënt. Tijdens rustige periodes betaalt u niet voor ongebruikte verwerkingscapaciteit.
Geplande taken zijn een andere uitstekende use case. In plaats van een server te onderhouden om slechts één keer per dag een back-up uit te voeren, kunt u een functie maken die volgens schema wordt uitgevoerd. De functie wordt alleen uitgevoerd wanneer dat nodig is, voltooit de taak en wordt afgesloten tot de volgende geplande uitvoering.
Realtime streamverwerking wordt ook steeds populairder met serverless. Terwijl gebeurtenissen binnenkomen via IoT-apparaten, applicatielogboeken of gebruikersactiviteitenstromen, kunnen functies elke gebeurtenis direct verwerken. Dit maakt realtime analyses en directe reacties op belangrijke gebeurtenissen mogelijk zonder dat er een altijd actieve verwerkingsinfrastructuur nodig is.
Aan de slag
Starten met serverless betekent niet dat u uw hele applicatie opnieuw moet bouwen. Veel teams beginnen met het verplaatsen van specifieke functies of services naar serverless, terwijl ze hun hoofdapplicatie op een traditionele infrastructuur houden. Deze hybride aanpak stelt u in staat ervaring op te doen met serverless en tegelijkertijd de risico's te minimaliseren.
Een veelvoorkomend startpunt is het verplaatsen van webhook-handlers of geplande taken naar serverless-functies. Dit zijn vaak geïsoleerde stukjes functionaliteit die geen diepe integratie met uw bestaande systemen vereisen. Naarmate u vertrouwd raakt met het serverless-model, kunt u geleidelijk meer workloads verplaatsen.
De sleutel is om klein te beginnen, de patronen te leren kennen en uit te breiden op basis van wat werkt voor uw specifieke situatie. Serverless computing is een krachtige tool in uw ontwikkelkit, maar zoals elke tool is het het meest effectief wanneer het voor de juiste taak wordt gebruikt.
Leer alles over serverless computing en meer met *onze uitgebreide gids over tools en integraties voor moderne webontwikkeling.*




