In de afgelopen jaren zijn cloud-native applicaties de standaard geworden voor veel bedrijven om schaalbare applicaties te bouwen. Onder de vele ontwikkelingen in cloudtechnologieën, springen serverless architecturen eruit als een transformerende aanpak. Gebruiksgemak en efficiëntie zijn de twee meest gewenste eigenschappen voor moderne applicatieontwikkeling, en serverless architecturen bieden deze. Dit heeft serverless de game changer gemaakt voor zowel de cloud providers als de consumenten.
Voor bedrijven die applicaties willen bouwen met deze aanpak, bieden grote cloud providers verschillende serverless oplossingen. In dit artikel zullen we de kenmerken, voordelen en uitdagingen van deze architectuur verkennen, samen met gebruiksscenario’s. In dit artikel heb ik AWS als voorbeeld gebruikt om de concepten te verkennen, maar dezelfde concepten zijn van toepassing op alle grote cloud providers.
Serverless
Serverless betekent niet dat er geen servers zijn. Het betekent eenvoudigweg dat de onderliggende infrastructuur voor die services wordt beheerd door de cloud providers. Dit stelt architecten en ontwikkelaars in staat om de applicaties te ontwerpen en te bouwen zonder zich zorgen te hoeven maken over het beheren van de infrastructuur. Het is vergelijkbaar met het gebruik van de ritdienst-app Uber: wanneer je een rit nodig hebt, hoef je je geen zorgen te maken over het bezitten of onderhouden van een auto. Uber regelt dat allemaal, en jij richt je gewoon op waar je naartoe moet door te betalen voor de rit.
Serverless architecturen bieden veel voordelen die ze geschikt en aantrekkelijk maken voor veel gebruiksscenario’s. Hier zijn enkele van de belangrijkste voordelen:
Auto Scaling
Een van de grootste voordelen van serverloze architectuur is dat het inherent schaalbaarheid ondersteunt. Cloudproviders verzorgen het zware werk om bijna oneindige, direct beschikbare schaalbaarheid te bieden. Als bijvoorbeeld een app die is gebouwd met serverloze technologieën plotseling populair wordt, schalen de tools of services automatisch om aan de behoeften van de app te voldoen. We hoeven niet midden in de nacht wakker te worden om de servers of andere resources toe te voegen.
Richt je op Innovatie
Doordat je niet langer belast wordt met het beheren van servers, kun je je in plaats daarvan richten op het bouwen van de applicatie, het toevoegen van functies ter bevordering van de groei van de app. Voor elke organisatie, klein, middelgroot of groot, helpt deze aanpak zich te concentreren op wat echt belangrijk is – de groei van het bedrijf.
Kostenefficiëntie
Met traditionele servermodellen betaal je vaak voor ongebruikte resources, omdat ze vooraf worden gekocht en worden beheerd, zelfs wanneer ze niet worden gebruikt. Serverloos verandert dit door over te stappen op een betaal-naar-gebruik-model. In de meeste scenario’s betaal je alleen voor de resources die je daadwerkelijk gebruikt. Als de app die je bouwt niet meteen aanslaat, zullen je kosten minimaal zijn, zoals het betalen voor een enkele sessie in plaats van een heel jaar. Naarmate het verkeer van de app groeit, zal ook de kostprijs dienovereenkomstig toenemen.
Snellere Time-to-Market
Met serverloze frameworks kun je applicaties veel sneller bouwen en implementeren in vergelijking met traditionele servermodellen. Wanneer de app klaar is, kan deze met minimale inspanning worden geïmplementeerd met behulp van serverloze resources. In plaats van tijd te besteden aan serverbeheer, kun je je richten op ontwikkeling en het toevoegen van nieuwe functies, waardoor ze in een sneller tempo worden verscheept.
Verminderd operationeel onderhoud
Aangezien cloudproviders de infrastructuur beheren, hoeven de consumenten zich geen zorgen te maken over het voorzien, onderhouden, schalen of verhelpen van beveiligingspatches en kwetsbaarheden.
Serverloze frameworks bieden flexibiliteit en kunnen worden toegepast op verschillende use cases. Of het nu gaat om het bouwen van webapplicaties of het verwerken van real-time gegevens, ze bieden de schaalbaarheid en efficiëntie die nodig zijn voor deze use cases.
Web Service-API’s bouwen met AWS Serverless
Nu we de voordelen van serverloze architecturen hebben besproken, laten we ons verdiepen in enkele praktische voorbeelden. In dit gedeelte zullen we een eenvoudige backend webapplicatie maken met behulp van AWS serverloze resources.
De bovenstaande backendapplicatie bevat drie lagen om API’s voor een webapplicatie te leveren. Zodra deze op AWS is ingezet, is de gateway-eindpunt beschikbaar voor API-gebruik. Wanneer de API’s door gebruikers worden aangeroepen, worden de verzoeken via de API-gateway naar de juiste lambda-functies geleid. Voor elk API-verzoek wordt de Lambda-functie geactiveerd en deze heeft toegang tot de DynamoDB om gegevens op te slaan en op te halen. Dit ontwerp is een gestroomlijnde, kosteneffectieve oplossing die automatisch schaalt naarmate de vraag groeit, waardoor het een ideale keuze is voor het bouwen van API’s met minimale overhead. De componenten in dit ontwerp integreren goed met elkaar en bieden flexibiliteit.
Er zijn twee belangrijke componenten in deze architectuur – rekenen en opslag.
Serverloos Computing
Serverloos computing heeft de manier veranderd waarop cloud-native applicaties en services worden gebouwd en geïmplementeerd. Het belooft een echt pay-as-you-go model met een granulariteit op milliseconde-niveau zonder verspilling van resources. Vanwege de eenvoud en economische voordelen heeft deze aanpak aan populariteit gewonnen, en veel cloudproviders ondersteunen deze mogelijkheden.
De eenvoudigste manier om serverloos computing te gebruiken is door code te leveren die door het platform op verzoek wordt uitgevoerd. Deze aanpak leidde tot de opkomst van Function-as-a-service (FaaS) platforms die zich richten op het toestaan van kleine stukjes code die worden vertegenwoordigd als functies om voor een beperkte tijd uit te voeren. De functies worden getriggerd door gebeurtenissen zoals HTTP-verzoeken, wijzigingen in opslag, berichten of meldingen. Aangezien deze functies worden opgeroepen en gestopt wanneer de code-uitvoering is voltooid, behouden ze geen persistente status. Om de status te behouden of de gegevens te persisten, maken ze gebruik van services zoals DynamoDB die duurzame opslagmogelijkheden bieden.
AWS Lambda kan schalen op basis van de vraag. Bijvoorbeeld, AWS Lambda verwerkte meer dan 1,3 biljoen oproepen op Prime Day 2024. Dergelijke mogelijkheden zijn cruciaal voor het omgaan met plotselinge pieken in het verkeer.
Serverloze Opslag
In het serverloze computing-ecosysteem verwijst serverloze opslag naar oplossingen voor cloudopslag die automatisch schalen zonder dat de consumenten de infrastructuur hoeven te beheren. Deze services bieden veel mogelijkheden, waaronder schaalbaarheid op aanvraag, hoge beschikbaarheid en betalen naar gebruik. Bijvoorbeeld, DynamoDB is een volledig beheerde, serverloze NoSQL-database die is ontworpen om key-value en document-datamodellen te verwerken. Het is speciaal gebouwd voor toepassingen die consistente prestaties vereisen op elke schaal, met een latentie van enkele milliseconden. Het biedt ook naadloze integratiemogelijkheden met veel andere services.
Belangrijke cloudproviders bieden tal van serverloze opslagopties voor specifieke behoeften, zoals S3, ElastiCache, Aurora en nog veel meer.
Andere Gebruiksscenario’s
In het vorige gedeelte bespraken we hoe serverloze architectuur kan worden benut om backend-API’s voor een webtoepassing te bouwen. Er zijn verschillende andere gebruiksscenario’s die baat kunnen hebben bij serverloze architectuur. Enkele van die gebruiksscenario’s zijn onder andere:
Gegevensverwerking
Laten we een ander voorbeeld verkennen van hoe serverloze architectuur kan worden gebruikt om services op de hoogte te stellen op basis van gegevenswijzigingen in een gegevensopslag. Bijvoorbeeld, in een e-commerceplatform, laten we zeggen bij het maken van een bestelling, moeten verschillende services op de hoogte worden gesteld. Binnen het AWS-ecosysteem kan de bestelling bij de creatie worden opgeslagen in DynamoDB. Om andere services op de hoogte te stellen, kunnen meerdere gebeurtenissen worden getriggerd op basis van deze opslaggebeurtenis.
Met DynamoDB Streams kan een Lambda-functie worden aangeroepen wanneer dit evenement zich voordoet. Deze lambda-functie kan vervolgens het wijzigingsevenement naar SNS (Simple Notification Service) pushen. SNS fungeert als de meldingsdienst om verschillende andere services op de hoogte te stellen die geïnteresseerd zijn in deze gebeurtenissen.
Real-Time bestandsverwerking
In veel toepassingen uploaden gebruikers afbeeldingen die moeten worden opgeslagen, verwerkt voor het verkleinen, omgezet naar verschillende formaten en geanalyseerd. We kunnen deze functionaliteit realiseren met behulp van AWS serverloze architectuur op de volgende manier. Wanneer een afbeelding wordt geüpload, wordt deze naar een S3-bucket gestuurd die is geconfigureerd om een gebeurtenis te activeren om een Lambda-functie aan te roepen. De Lambda-functie kan de afbeelding verwerken, metagegevens opslaan in DynamoDB en verkleinde afbeeldingen opslaan in een andere S3-bucket. Deze schaalbare architectuur kan worden gebruikt om miljoenen afbeeldingen te verwerken zonder de noodzaak om enige infrastructuur te beheren of handmatig in te grijpen.
Uitdagingen
Serverloze architecturen bieden veel voordelen, maar brengen ook bepaalde uitdagingen met zich mee die moeten worden aangepakt.
Koude start
Wanneer een serverloze functie wordt aangeroepen, moet het platform een nieuwe container maken, initialiseren en uitvoeren om de code uit te voeren. Dit proces, bekend als cold start, kan extra latentie introduceren in de workflow. Technieken zoals het warm houden van functies of het gebruik van vooraf geconfigureerde gelijktijdigheid kunnen helpen om deze vertraging te verminderen.
Monitoring en Debugging
Doordat er een groot aantal aanroepen kan zijn, kunnen monitoring en debugging complex worden. Het kan uitdagend zijn om problemen in toepassingen die veel worden gebruikt te identificeren en op te lossen. Het configureren van tools zoals AWS Cloudwatch voor metingen, logs en waarschuwingen wordt sterk aanbevolen om deze problemen aan te pakken.
Hoewel serverloze architecturen automatisch schalen, moeten de resourceconfiguraties geoptimaliseerd worden om knelpunten te voorkomen. Een juiste toewijzing van resources en de implementatie van kostenoptimalisatiestrategieën zijn essentieel.
Conclusie
De serverloze architectuur is een belangrijke stap in de ontwikkeling van cloud-native toepassingen ondersteund door serverloze computing en opslag. Het wordt veel gebruikt in verschillende soorten toepassingen, waaronder op gebeurtenissen gebaseerde workflows, gegevensverwerking, bestandsverwerking en big data-analyse. Dankzij de schaalbaarheid, flexibiliteit en hoge beschikbaarheid is serverloze architectuur een betrouwbare keuze geworden voor bedrijven van alle formaten.
Source:
https://dzone.com/articles/from-zero-to-scale-with-aws-serverless