Je hebt vast wel eens van SaaS gehoord, en misschien heb je wel eens van PaaS en IaaS gehoord, maar heb je ook gehoord van Function as a Service (FaaS)?

De FaaS markt groeit snel. Volgens Allied Market Research was de markt in 2018 $3,01 miljard waard. Dit aantal zal naar verwachting groeien tot $24 miljard in 2026 – wat betekent dat de industrie zal groeien met een samengesteld jaarlijks groeipercentage (CAGR) van 29,7% van 2020 tot 2026.

Kijkend naar die groei is het veilig om te zeggen dat FaaS behoorlijk belangrijk is.

Maar wat is FaaS en hoe werkt het? Om je te helpen die vragen te beantwoorden, behandelt dit artikel de basisprincipes van FaaS, waarom mensen FaaS wel en niet zouden moeten gebruiken, en de toestand van de wereldwijde FaaS markt in 2022 en verder.

Laten we beginnen.

Wat is Function as a Service (FaaS)?

Function as a Service (FaaS) is een vorm van cloud computing die ontwikkelaars helpt beter te werken door de noodzaak voor hen om de applicatie-infrastructuur te onderhouden, weg te nemen. Wanneer ontwikkelaars FaaS gebruiken, gebruiken ze een FaaS platform om applicatiepakketten te bouwen, uit te voeren en te overzien.

Op dit moment zou je kunnen denken dat FaaS klinkt als serverless computing– en dat is het ook. Met serverless computing kunnen ontwikkelaars het beheer van databases, API gateways, opslag, berichten en andere infrastructuur uitbesteden aan een externe provider. FaaS is dus een vorm van serverless computing.

 Hoe serverloos computing werkt (Bron: iviewlabs)
Hoe serverloos computing werkt (Bron: iviewlabs)

Hoewel dit misschien de eerste keer is dat je over FaaS leest, ben je het waarschijnlijk wel als eens tegengekomen. Veel populaire programma’s en apps gebruiken FaaS, zoals Alexa van Amazon.

Als je bekend bent met Alexa, weet je dat je de functies van Alexa kunt uitbreiden door ‘skills’ op te bouwen. Net als apps, laten skills Alexa dingen doen buiten de basisconfiguratie. Dingen zoals het controleren op meldingen in je app, een nieuwe chat starten of aangepaste audio afspelen.

Amazon beheert alle vaardigheden van Alexa via AWS Lambda. Wanneer je een nieuwe skill bouwt, maak je deze als een functie die je implementeert via AWS Lambda. AWS Lambda voert vervolgens de functie voor je uit en behandelt infrastructuurproblemen zoals beveiliging en databasebeheer.

Dus, hoe werkt FaaS stap voor stap? Laten we dat nu bespreken.

Hoe werkt FaaS?

Om FaaS te begrijpen, moet je twee belangrijke termen kennen:

  1. “Monolithische architectuur”= een op zichzelf staande applicatie die onafhankelijk van andere applicaties draait. Deze applicaties beheren de gebruikersinterface, bedrijfsfuncties en data interface in-house. Monolithische architectuurcode is afhankelijk van andere stukjes code.
  2. “Microservices architectuur” = een stukje code dat een paar kleine taken afhandelt. Deze microservices zijn gescheiden (hoewel ze samen een hele applicatie vormen).

Hier is een diagram dat laat zien hoe monolithische architectuur en microservices architectuur verschillen:

Monolithische architectuur versus microservice architectuur
Monolithische architectuur versus microservice architectuur (Bron: BMC)

Je kunt het belangrijkste verschil in de praktijk zien tussen microservices- en monolithische architecturen wanneer je een functie uitvoert of bijwerkt. Met een monolithische architectuur voert het hele programma de functie in één keer uit (zoals het updaten van een app, bijvoorbeeld). Met een microservices architectuur kun je de microservicesfunctie zelfstandig uitvoeren.

En FaaS is het ding dat microservicesarchitecturen helpt werken.

Wanneer je elke nieuwe microservicesfunctie uitvoert, hoef je alleen de functie te maken. Vervolgens neemt je FaaS provider de functie over, voert deze uit en zorgt vanaf dat moment voor het beheer van de functie.

Omdat FaaS een tool is die werkt met input van jou, is het van cruciaal belang op te merken dat elke FaaS functie slechts verantwoordelijk zou moeten zijn voor één taak. Deze taak wordt vervolgens uitgevoerd wanneer de trigger wordt geactiveerd. Een functie die bijvoorbeeld een kopie van de bon van de gebruiker maakt, werkt alleen als de gebruiker op ‘Bon downloaden’ drukt.

FaaS gebruikt een “event-driven execution model”, wat betekent dat je functies alleen worden geactiveerd wanneer ze worden geactiveerd. Daarmee draaien ze niet op de achtergrond.

Wat kan FaaS nog meer doen?

Welke diensten vallen FaaS?

Hoewel alle providers verschillend zijn, bieden FaaS providers over het algemeen deze diensten aan:

  • Authenticatiediensten. Deze zorgen voor de aanmeldings- en authenticatieprocessen voor de gebruikers van je programma.
  • Databasediensten. Deze helpen je informatie in databases op te slaan, zodat je programma deze kan gebruiken. FaaS providers beheren een deel van het database onderhoud voor jou.
  • Bestandsopslag. FaaS providers kunnen gegevens en bestanden voor je app opslaan, dus je hoeft deze niet op je eigen server te hosten.
  • Rapportage. FaaS providers kunnen letten op fouten of beveiligingsrisico’s in je programma en je waarschuwen wanneer ze iets vinden dat niet goed is.

Over het algemeen helpen deze services ontwikkelaars om slimmer te werken. Laten we het hierna hebben over de voordelen van FaaS.

Voordelen van een FaaS model

Met FaaS hoeven ontwikkelaars zich geen zorgen te maken over infrastructuur of implementatie – alleen het schrijven van applicatielogica. Als FaaS wordt geïmplementeerd, kan het dus de tijd die nodig is om een ​​programma te bouwen en te implementeren aanzienlijk verkorten.

Het bouwen en implementeren is dan ook eenvoudiger met FaaS. De inrichtingstijd duurt slechts enkele seconden in plaats van uren (per keer). Je bent ook niet beperkt tot bepaalde talen of resources. FaaS providers kunnen code in de meeste talen uitvoeren en je kunt het bouwproces versnellen door gebruik te maken van de caches en databases die je provider aanbiedt.

Het FaaS model is zeer schaalbaar en capaciteitsplanning is veel eenvoudiger. Als je meer resources nodig hebt, kun je eenvoudig de instructies van je FaaS provider raadplegen om je gebruik te upgraden. Veel FaaS providers bieden horizontale schaling, wat betekent dat als je gebruik piekt, de provider je gewoon extra resources zal verstrekken om de piek op te vangen.

Bovendien hoef je je geen zorgen te maken over onderhoud, Disaster Recovery (DR) of beveiliging.

Tot slot is FaaS zeer efficiënt. Providers brengen je alleen kosten in rekening voor de resources die je gebruikt, dus je betaalt waarschijnlijk veel minder voor FaaS dan voor je eigen hardware. Op dezelfde manier worden je functies niet op de achtergrond uitgevoerd en zijn in plaats daarvan inactief. Je hoeft niet te betalen voor inactiviteit.

Dus kent FaaS alleen maar voordelen? Niet helemaal.

Nadelen van een FaaS model

Het FaaS model neemt een paar van de grootste uitdagingen in verband met programmaontwikkeling weg, maar het vereist ook dat je je controle aanzienlijk beperkt. Je kunt niet veel beslissingen nemen over de server, beveiliging of database die je code gebruikt. In plaats daarvan is het aan je provider.

Op dezelfde manier is debuggen vaak een beetje moeilijker omdat je geen volledige controle over je systeem hebt. Testen is ook moeilijk omdat FaaS code zich niet altijd soepel vertaalt naar de testomgeving.

Bovendien moet je je houden aan de strikte vereisten van je FaaS leverancier. FaaS functies kunnen maar één actie uitvoeren, dus als je dit niet gewend bent, moet je de manier waarop jij en je team code schrijven veranderen. Evenzo moet je mogelijk code in bestaande apps herschrijven om deze geschikt te maken voor FaaS implementatie – dus FaaS is vaak beter geschikt voor nieuwe programma’s dan oude.

Ten slotte betekent het kiezen voor FaaS vaak dat je je voor de lange termijn aan één enkele leverancier bindt. Je werkt met het systeem en de vereisten van je provider wanneer je je programma’s bouwt. Als je van provider verandert, kan het natuurlijk nodig zijn dat je een deel van je werk opnieuw moet doen en mogelijk je functies niet meer werken.

Voordelen versus nadelen

Voordelen Nadelen
Code sneller implementeren

Provisioning duurt milliseconden

Code in elke taal

Geautomatiseerde Disaster Recovery (DR)

Kosten-efficiënt

Schaalbaar

Controle verliezen over de server

Debuggen is moeilijker

Testen duurt langer

Je zit vast aan je leverancier

Je moet voor FaaS geschikte code schrijven

FaaS versus SaaS, PaaS, en IaaS

Nu je meer weet over FaaS, vraag je je misschien af ​​hoe het zich verhoudt tot andere Anything as a Service (XaaS) opties zoals IaaS, SaaS en PaaS.

IaaS, PaaS en FaaS services hebben vergelijkbare doelen: ze helpen bedrijven om applicaties goedkoper en effectiever te beheren. Elke optie biedt echter iets anders.

Met Infrastructure as a Service (IaaS) kun je rekenkracht (zoals RAM en CPU) huren. Met IaaS moet je nog steeds enkele applicatiefuncties (zoals beveiliging) intern beheren.

Met Platform as a Service (PaaS) kun je hardware- en softwaretools verhuren om je app te bouwen. Een bekend voorbeeld is AWS Elastic Beanstalk.

In tegenstelling tot IaaS en PaaS kun je met FaaS ruimte huren om functies onafhankelijk uit te voeren. Deze feature maakt het schaalbaarder.

Hier is een korte samenvatting van hoe de drie anders werken:

Hoe FaaS verschilt van IaaS en PaaS
Hoe FaaS verschilt van IaaS en PaaS (Bron: thenewstack.io)

Software as a Service (SaaS) is niet gericht op het bouwen van apps of programma’s. In plaats daarvan kun je applicaties huren, zodat je ze niet zelf hoeft te bouwen. Er zijn duizenden SaaS opties beschikbaar – van tools voor gegevensanalyse tot WordPress SEO plugins.

Marktomvang, marktaandeel en toonaangevende leveranciers

De groei van FaaS weerspiegelt een algemene verschuiving in de manier waarop organisaties nieuwe programma’s ontwikkelen.

In voorgaande decennia creëerden ontwikkelaars grote systemen als meerjarige projecten. Tegenwoordig geven veel organisaties de voorkeur aan een Development Operations (DevOps) benadering van ontwikkeling. DevOps geeft prioriteit aan het continu ontwikkelen en verbeteren van een programma, beetje bij beetje.

Hoe DevOps werkt
How DevOps works (Bron: Atlassian)

Evenzo maken organisaties steeds vaker gebruik van clouddiensten om zaken veiliger en efficiënter te maken. Volgens Oracle zullen organisaties binnenkort 600 keer meer gevoelige data in de cloud opslaan.

Je kunt deze trend zien in gegevens verzameld van 7.164  C-suite executives van Statista. Van 2019 tot 2021 nam het gebruik van een enkele publieke of private clouddienst af en namen de meeste organisaties meerdere cloudoplossingen over.

Gebruik van cloudtechnologie
Gebruik van cloudtechnologie (Bron: Statista)

Ook de investeringen in cloud computing groeien. Een ander onderzoek van Statista onder honderden grote ondernemingen over de hele wereld toonde aan dat 83% van de ondervraagde bedrijven jaarlijks meer dan 1,2 miljoen dollar investeerde in openbare cloudcomputing. Dit cijfer is gestegen van 50% in 2019.

Mensen wenden zich tot FaaS omdat het toekomstbestendig en schaalbaar is. Verder biedt het betere productiviteit en prestaties, een snellere time-to-market voor apps en een meer kosteneffectieve manier om nieuwe programma’s te produceren.

Deze voordelen trekken veel sectoren aan, waaronder organisaties in het bankwezen (of ‘BFSI’ organisaties), consumentengoederen en detailhandel, entertainment, telecommunicatie, Information and Technology Enabled Services (ITES), gezondheidszorg en productie. Dit is hoeveel elke branche bijdraagt ​​aan de FaaS markt:

Welke industrieën FaaS gebruiken
Welke industrieën FaaS gebruiken (Bron: MarketsandMarkets)

In tegenstelling tot SaaS zijn er geen duizenden FaaS leveranciers waaruit organisaties kunnen kiezen. De overgrote meerderheid van FaaS maakt gebruik van oplossingen die worden aangeboden door grote spelers, waaronder AWS Lambda, Azure Functions, IBM Cloud Functions, Google Cloud Functions, Alibaba Cloud en Cloudflare Workers.

We zullen nu elk van deze providers behandelen.

AWS Lambda

AWS Lambda, gelanceerd door Amazon in november 2014, is een extreem populaire FaaS tool. In Q4 2021 gebruikte 33% van de cloudgebruikers een AWS service.

AWS Lambda
AWS Lambda

AWS Lambda biedt native ondersteuning voor veel programmeertalen, waaronder Node.js, C#, Python, Ruby, Go, Java en Powershell. Zoals we al zeiden in “Wat is Function as a Service (FaaS)?” gebruikt Alexa AWS Lambda.

Features and functies:

  • Verbinden met andere AWS tools
  • Bewaakt de prestaties van je programma met Amazon CloudWatch
  • Meer dan 200 integraties met SaaS tools
  • Je kunt docker containers inzetten (AWS heeft deze feature in december 2020 geïntroduceerd)

Voordelen:

  • Je kunt je eigen backend bouwen met Lambda API of de Amazon API gateway
  • Je kunt functies implementeren als containerafbeeldingen
  • Je kunt verbinding maken met relationele databases met Amazon RDS Proxy
  • Je kunt kiezen hoeveel geheugen je aan elke functie wilt besteden

Nadelen:

  • Als je AWS nog niet gebruikt, kost het instellen ervan veel tijd en moeite

Microsoft Azure Functions

Microsoft Azure Functions is een mogelijkheid van Microsoft Azure, dat Microsoft in februari 2010 voor het eerst lanceerde als “Windows Azure”. Met Azure Functions kun je gebeurtenisgestuurde code uitvoeren via FaaS. In Q4 2021 gebruikte 21% van de cloudgebruikers Azure.

Microsoft Azure Functions
Microsoft Azure Functions

Features and functies:

  • Je kunt je functies verbinden met 250+ connectors in Azure Logic Apps
  • Ondersteunt JavaScript, C#, F#, Powershell, PHP, Python en Java
  • Biedt veel tutorials voor nieuwe gebruikers
  • Helpt je bij het analyseren van je programma via Azure Application Insights

Voordelen:

  • Azure Functions gebruikt een geïntegreerd programmeermodel
  • Zeer geschikt voor teams die DevOps gebruiken
  • Meerdere abonnementen beschikbaar

Nadelen:

  • Azure Functions biedt geen ondersteuning voor Node.js of Ruby

Google Cloud Functions

Google Cloud is de derde meest populaire cloud computing oplossing na AWS en Azure. Het heeft momenteel een marktaandeel van 10%. Google Cloud Functions is een FaaS functie van Google Cloud — een service die meer dan 100 producten biedt voor een breed scala aan toepassingen.

Google Cloud
Google Cloud

Features and functies:

  • Debuggen en loggen is geïntegreerd in Google Cloud Functions (via CloudTrace en CloudDebugger)
  • Je gebruikt triggers van Google Assistant, Google Cloud, Firebase of een andere app die HTTP gebruikt
  • Google Cloud Functions integreert met veel Google partners

Voordelen:

  • Degenen die multi-cloud of hybride mogelijkheden willen, kunnen het gebruiken
  • Het is open-source, dus je kunt makkelijk overstappen naar een ander FaaS platform als je dat liever hebt
  • Het is zeer makkelijk te gebruiken
  • Google biedt veel gratis resources aan nieuwe gebruikers

Nadelen:

  • De op containers gebaseerde services van Google Cloud Function zijn minder geavanceerd dan andere FaaS providers

IBM Cloud

IBM Cloud kwam van SoftLayer, een openbaar cloudplatform dat IBM in juni 2013 kocht. IBM veranderde het platform in Bluemix en lanceerde het in juli 2014 als PaaS tool. Sindsdien heeft IBM de service omgedoopt tot IBM Cloud en zijn features uitgebreid naar FaaS.

IBM Cloud
IBM Cloud

Vanaf het Q4 van 2021 heeft 4% van de cloudgebruikers IBM Cloud gebruikt. Het draait op het Apache OpenWhisk ecosysteem.

Features and functies:

  • Je kunt zoeken naar videocontent
  • Je kunt je programma verbinden met andere programma’s via IBM Watson API’s
  • IBM biedt kant-en-klare functies voor een aantal veelvoorkomende taken
  • Ondersteunt Node.js, Python, Swift, PHP, Go, Ruby, Java, en .NET Core

Voordelen:

  • Geweldig voor het bouwen van mobiele applicaties
  • Makkelijk te leren gebruiken
  • Monitort je app via IBM Cloud Monitoring

Nadelen:

  • Beperkt de geheugentijd van je functie tot tien minuten of 2048 MB

Alibaba Cloud

Alibaba Cloud is niet zo algemeen bekend als andere cloud computing opties, maar het heeft nog steeds een behoorlijk marktaandeel van 6%. Alibaba Cloud, gelanceerd door Alibaba in 2008, is gericht op online bedrijven en degenen die de andere diensten van Alibaba gebruiken.

Alibaba Cloud
Alibaba Cloud

FaaS is een van de aanbiedingen van Alibaba Cloud, naast een Content Delivery Network (CDN), gegevensopslag en verwerking van big data.

Features and functies:

  • Integreert met andere computing diensten van Alibaba
  • Rampbestendig, aangezien Alibaba functies host op clusters in meerdere gebieden
  • Videotranscodering
  • AI redenering
  • Ondersteunt Node.js, Python, Java, PHP, en C#

Voordelen:

  • Biedt een gratis optie voor degenen die niet veel code hoeven uit te voeren
  • Zeer schaalbaar
  • Je kunt vele soorten triggers gebruiken

Nadelen:

  • Het kan moeilijk zijn om functies van Alibaba naar een andere FaaS provider te verplaatsen

Cloudflare Workers

Cloudflare Workers, gerund door Cloudflare, is een FaaS systeem dat geschikt is voor nieuwe ontwikkelaars en mensen die code vrijwel onmiddellijk willen uitvoeren. Cloudflare Workers biedt een gratis abonnement en schaalbare prijzen.

Cloudflare Workers
Cloudflare Workers

Features and functies:

  • Ondersteunt JavaScript, C++, Rust en C
  • Je kunt afbeeldingen, pdf’s en andere bestanden opslaan op Cloudflare Workers om ze als statische middelen te implementeren
  • Rampenbestendig, aangezien Cloudflare Workers gebruik maakt van een wereldwijd netwerk van servers
  • Integreert met andere Cloudflare producten

Voordelen:

  • Het is goedkoper dan veel andere FaaS opties
  • Het is makkelijk voor nieuwere ontwikkelaars om te leren gebruiken
  • Je kunt heel snel aan de slag
  • Cloudflare biedt gedetailleerde tutorials en resources die je kunnen helpen bij het bouwen van je applicatie

Nadelen:

  • Cloudflare Workers is minder robuust dan andere opties en beter geschikt voor mensen met kleinschalige projecten

Best practices van FaaS

FaaS is een technologie, maar het is ook een mentaliteit die ontwikkelaars moeten aannemen ten aanzien van programma- en applicatie-ontwikkeling.

Volg deze best practices om het meeste uit FaaS te halen:

  • Houd de beperkingen van FaaS in je achterhoofd. FaaS is niet voor elk programma geschikt en als je met FaaS een niet-FaaS-vriendelijk programma probeert te maken, kost dat tijd, moeite en geld.
  • Voer alleen functies met één actie uit op FaaS. Als je functies uitvoert met meerdere acties, verstoor je de geïsoleerde omgeving waarin FaaS functies het beste werken. Deze onderbreking zal je applicatie vertragen en de efficiëntie verminderen.
  • Voer geen functies uit met dependency’s. Afhankelijkheden zullen later fouten en een schaalbaarheidsprobleem veroorzaken.
  • Let goed op je laadtijd. Je laadtijd komt van je bibliotheken of functies die veel geheugen vereisen. Een hoge laadtijd zal je programma vertragen en uiteindelijk gebruikers frustreren.
  • Verminder het aantal RDBMS verbindingen (Relation Database Management System) dat je gebruikt. Deze verbindingen verlengen de tijd die nodig is om functies te laten werken en introduceren een storingspunt in je programma.

Heb je FaaS nodig?

FaaS is voor sommigen een innovatieve en baanbrekende technologie, maar het zal niet voor iedereen werken.

De organisaties die het meeste uit FaaS halen, zijn bereid programma’s te bouwen met microservice architecturen waarbij elke functie maar één ding doet. Deze functies zouden onafhankelijk moeten werken – als ze afhankelijk zijn, loop je tegen schaalbaarheidsproblemen aan.

Als je een applicatie wilt bouwen met een monolithische architectuur of functies die van elkaar putten, werkt FaaS mogelijk niet goed. Ook als je je niet op de lange termijn aan één enkele leverancier wilt binden, kan FaaS een kortzichtige keuze zijn.

Natuurlijk kun je nog steeds gebruikmaken van cloudtechnologie zonder FaaS. Je kunt bijvoorbeeld investeren in PaaS of IaaS om een ​​deel van de functies van je applicatie uit te besteden aan de cloud. Deze optie geeft je enkele van de kosten- en efficiëntievoordelen van cloudcomputing, maar je hoeft je programma niet te bouwen binnen de beperkingen van het FaaS model.

Als alternatief, als je geen programma hoeft te bouwen dat iets zeer specifiek of gespecialiseerds doet, kun je overwegen te investeren in een SaaS tool. Sommige SaaS tools zijn zelfs open-source, dus je kunt een bestaande tool mogelijk aanpassen aan je behoeften.

Samenvatting

FaaS is geen technobabble of een nieuwe trend. Het is een schaalbare technologie waarvan je de komende tien jaar meer zou mogen verwachten.

FaaS uitleggen kan soms moeilijk lijken, maar FaaS is in feite niets meer dan een service waarmee ontwikkelaars code kunnen schrijven en uitvoeren met behulp van infrastructuur die door iemand anders wordt onderhouden. Veel diensten die je regelmatig gebruikt, zoals Alexa, gebruiken FaaS. Veelvoorkomende FaaS leveranciers zijn IBM Cloud Functions, AWS Lambda, Alibaba Cloud, Google Cloud Functions en Microsoft Azure Functions.

Hoewel FaaS voor sommige bedrijven zeer effectief is, is het niet voor iedereen geschikt. FaaS werkt het beste voor het uitvoeren van geïsoleerde, stateless code die een enkele functie vervult.

We willen graag van jou horen. Hoe gebruik jij FaaS in je bedrijf en heb je advies voor anderen die de technologie voor het eerst ontdekken? Vertel het ons graag in de comments hieronder.

Matteo Duò Kinsta

Hoofdredacteur bij Kinsta en content marketing consultant voor WordPress plugin-ontwikkelaars. Verbind met <a href="">Matteo op Twitter.