Function-as-a-Service (FaaS): de verdwijntruuk voor je infrastructuur
In een DevOps-aanpak, waarbij ontwikkelaars en gebruikers al van in het begin samenwerken aan software of aan een applicatie, houdt de architectuur vanaf het begin rekening met niet-functionele eisen zoals beveiliging, schaal en uitbreidbaarheid. De functionele kant gaan we steeds vaker opdelen in aparte blokken, of zelfs individuele ‘functies’. Containers, als recente infrastructuurtrend, ondersteunen het opdelen van een toepassing in vele kleinere delen of microservices. Zo kun je per onderdeel zelf de performance gaan optimaliseren. En FaaS, Function-as-a-service, gaat nog een stap verder, zodat je je niets meer hoeft aan te trekken van de infrastructuur.
Bekijk managed container services bij Combell
Van microservices naar ‘serverless’
Voor elk onderdeel van je software-toepassing in detail de infrastructuur-parameters aanpassen? Het klinkt interessant. In een oefening rond performance-optimalisatie en het voorbereiden op toekomstige groei is het schitterend om je infrastructuur voortdurend te kunnen bijschalen. Dankzij de evolutie van hardware-hosting naar virtuele servers en naar containers, is het ook realistisch om dit op grote schaal te doen. Je schaalt je infrastructuur right-size. Niet teveel en niet te weinig.
Wanneer je toepassingen ontwikkelt voor het cloud-tijdperk, stap je in een nieuw denkkader. De klassieke aanpak was ooit een ICT-toepassing in één geheel, met allerlei afhankelijkheden binnen de eigen programmatuur en met alle lagen van het onderliggende besturingssysteem. Elke versie-upgrade betekende een nieuwe uitrol van de hele ‘stack’. Schaalvergroting was vooral een kwestie van hardware bijplaatsen. En wanneer het aantal gebruikers plots vier-, tien- of honderdvoudig gaat groeien, waren de grenzen snel bereikt.
Fast-forward naar vandaag. In een microservices-architectuur is het veel eenvoudiger om onderdelen van de toepassing onafhankelijk van elkaar te laten evolueren. Libraries, PHP-versies, zelfs de programmeertaal achter de verschillende services mogen verschillen. Om bottlenecks te vermijden kun je zeer gericht gaan bijschalen. Zet je onder elke microservice ook een cluster met meerdere nodes of pods, dan valt de impact bij problemen een stuk kleiner uit. Je herstart de foutieve node, terwijl de andere het even overnemen.
Niets dan voordelen? Ten eerste vraagt het werken met containers en orkestratie om heel wat expertise. Ten tweede is het maar de vraag of je bij de ontwikkeling van je toepassing ook wil nadenken over alle details van je infrastructuur. Hoewel het om erg recente technologie gaat, staan specialisten van Combell klaar om je te begeleiden bij deze vraagstukken. En met ‘Function-as-a-Service’ ligt nog een extra mogelijkheid op tafel. Elk functioneel onderdeel van je toepassing kan dan apart draaien, al of niet gekoppeld aan een Database-as-a-Service.
FaaS is een vervolg op ons IaaS-aanbod (infrastructure as a service) en CaaS-aanbod (containers as a service). Meer over de andere mogelijke as a Service vormen lees je in ons vorig artikel ‘Wat is cloud computing’.
De kracht van het netwerk
Containers en serverless computing zijn gelijkaardige manieren om code uit te rollen voor onderdelen van je toepassing. Containers zijn eenvoudig te dupliceren en op te schalen, terwijl je bij serverless computing de notie ‘server’ zelfs helemaal verliest. Je roept enkel een API (Application Programming Interface) op, om een functie uit te voeren, ergens op het internet. Vandaar de nieuwe vorm Function-as-a-Service. Dit kan een gestandaardiseerde functie zijn, die je zelf hebt geschreven, of die je gebruikt van een andere provider binnen de ‘API-economie’.
Volgens sommigen is FaaS een manier om de performance van je toepassingen nog te verhogen, door de verwerking uit te splitsen in meerdere functionele onderdelen, die dan volledig parallel worden verwerkt. Voor elk onderdeel is er dan genoeg rekenkracht voorhanden dankzij autoscaling. Sommigen zien FaaS ook als een manier om snelle toegangstijden te garanderen door de verwerking naar datacenters dichter bij de eindgebruiker te brengen. Tot slot laat FaaS toe om functies enkel op te roepen wanneer nodig in specifieke gevallen, als onderdeel van een event-driven-architectuur.
Met FaaS is de cirkel eigenlijk rond. Van monolithische software-ontwikkeling waarbij de code, de onderliggende hardware en alles daartussen nauw verbonden zijn, ging het via virtualisatie en containers naar Function-as-a-Service – code die je via een API oproept. Van programmeren voor specifieke hardware, ging het naar infrastructuur die zich aanpast aan de noden van de toepassing, en die uiteindelijk onzichtbaar wordt.
Tip: Combineer met Database-as-a-Service bij Combell, waarbij je een SLA-garantie krijgt op je database en wij de veiligheid en stabiliteit voor onze rekening nemen.
Enkele voordelen van Function-as-a-Service
Broncode uploaden en klaar. Dat is wel heel eenvoudig gesteld, de manier van werken met serverless. De aanpak kreeg voor het eerst vorm bij grote cloud-providers als Amazon en Google. Vandaag is FaaS inzetbaar via meerdere cloud-providers waaronder Combell, op bijvoorbeeld managed servers of managed Kubernetes. Waarom is dit interessant?
- Focus op ontwikkeling: Met FaaS of ‘serverless’ laat je het denkwerk over je infrastructuur volledig aan je cloud provider over. Specialisten bij Combell staan voor je klaar om je te adviseren over je keuze.
- Elastische schaal: Met serverless computing zorgt je cloud-provider ervoor dat je probleemloos en automatisch kunt opschalen, uiteraard binnen de grenzen van de totale cloud-infrastructuur. Je kunt zo op korte termijn héél veel requests verwerken, denk aan een ticketverkoop of online veiling. Omgekeerd kun je schaalgrootte krimpen naar nul (scale to zero) wanneer je de functie een tijdje niet gebruikt.
- Veiligheid: Je cloud-provider zorgt voor de beveiliging van je FaaS-component. Een kwalitatieve provider zoals Combell doet dat volgens de betere veiligheidsstandaarden. Houd er wel rekening mee dat alle onderdelen van je applicatie goed beveiligd moeten zijn (bv. authenticatie, schrijfbeveiliging, systeemrechten), dus ook degene die je eventueel zelf beheert. In het algemeen zijn toepassingen die uit meer verschillende functies of services bestaan, complexer om goed te beveiligen.
Tip: Bij Combell voeg je FaaS gratis toe aan je managed servers of managed Kubernetes omgeving.
Zijn er ook beperkingen? Het gaat om zeer recente technologie die om de juiste kennis vraagt. Je kunt populaire programmmeertalen als Java, Node.JS, C#, Python, Ruby en Golang gebruiken, maar sommige mogelijkheden zijn wat minder uitgebreid. Terwijl je in een container vaak een volledige microservice kwijt kunt, is FaaS-code beperkt tot één functie.
Less is more. Als je met deze filosofie aan software-ontwikkeling doet, kan FaaS je helpen om voluit te kiezen voor eenvoud. Combell vult het plaatje graag aan met betrouwbare service en advies. Kom er gerust eens over praten met onze specialisten.