Serverless computing: functie zonder rompslomp

Een van de meest populaire cloudtechnologieën van de afgelopen jaren is serverless computing. Alle grote cloudaanbieders bieden dit soort diensten aan, die de gebruiker in staat stellen om code uit te voeren zonder de noodzaak om servers op te zetten of te onderhouden.

Illustration of cloud computing

Wat is serverless computing?

De term serverless kan suggereren dat er geen servers worden gebruikt voor de verwerking van data, maar dat is niet het geval. In plaats daarvan betekent het dat de gebruiker, meestal een software-ontwikkelaar, geen servers (virtueel of fysiek) hoeft op te zetten en zich geen zorgen hoeft te maken over onderhoud, upgrades of back-ups.

Serverloze diensten zijn er grofweg in 2 smaken:

  1. Databaseservices (al dan niet relationeel) worden vaak serverloos genoemd wanneer een cloudaanbieder ontwikkelaars een dienst aanbiedt die altijd online is, geen onderhoud nodig heeft, automatisch schaalt en een tariefmodel heeft waarbij je betaalt voor het gebruik.
  2. Function as a Service (FaaS) is het meest interessante aspect van serverless computing. Deze frameworks stellen ontwikkelaars in staat om kleine functies te schrijven in verschillende programmeertalen. De cloudaanbieder zorgt ervoor dat de functies worden uitgevoerd wanneer dat nodig is. Deze functies zijn meestal van korte duur en worden geactiveerd door een gebeurtenis, zoals het uploaden van een bestand, bezoek aan een website of een signaal van een apparaat. De functie wordt automatisch ingezet en indien nodig opgeschaald door de cloudaanbieder. De ontwikkelaar hoeft geen servers op te zetten voor het uitvoeren van software en zich geen zorgen te maken over het uitvoeren van grootschalige implementaties. Dit alles wordt afgehandeld door het serverloze platform.

Kostenvoordeel

Commerciële serverloze diensten worden tegen betaling per gebruik aangeboden. Je betaalt alleen voor de tijd die nodig is voor het activeren en uitvoeren van de functies. Denk bijvoorbeeld aan een webserver die een website host. Traditioneel draait een webserver op een (virtuele) server en wacht op inkomend verkeer. Deze draaiende server brengt kosten met zich mee. Een stationaire serverloze website bestaat daarentegen alleen als bestand op een opslagdienst. Er worden geen kosten gemaakt als er geen verkeer is. Zodra gebruikers de site willen bezoeken, worden de functies geactiveerd en komt de website tot leven. Als miljoenen gebruikers tegelijkertijd de website willen zien, schaalt de cloudaanbieder de uitvoering van de functies moeiteloos. Veel bedrijven hebben de kosten voor het hosten van hun websites verlaagd door ze serverloos te maken.

Open source

Naast het serverloze aanbod van cloudaanbieders zijn er een aantal open source FaaS-projecten. Bij SURF hebben we vooral gekeken naar OpenFAAS en Kubeless, maar er zijn er nog veel meer. OpenFaaS wordt momenteel gebruikt in ons streaming dataplatform (dat wordt gebruikt door The Green Village) om inkomende datastromen om te zetten naar een vriendelijker formaat voor verdere verwerking. Het voordeel is dat de berekening alleen plaatsvindt als er gegevens binnenkomen en dat de schaling automatisch gebeurt. Wanneer er geen gegevens zijn, worden er geen resources gebruikt. Bij veel data worden de functies parallel uitgevoerd.

Experiment met grootschalige dataverwerking

Vanwege de schaalbaarheid is het verleidelijk om te kijken of serverloze functies kunnen worden gebruikt voor grootschalige gedistribueerde berekeningen. Bij SURF hebben we dit samen met onderzoekers van de Universiteit van Wageningen geprobeerd. Het doel was om genoomgegevens te analyseren; de analyse van een bestand zou moeten beginnen zodra het naar de iRODS-databank bij SURF werd geüpload.

Deze use-case gaf enig inzicht in de mogelijkheden, maar ook de beperkingen van serverless computing voor grootschalige dataverwerking. Het uploaden van een bestand kan worden gezien als een trigger voor de analyse - dit deel werkte. We vonden echter 3 belangrijke beperkingen:

  • Serverloze functies zijn ontworpen om van korte duur te zijn (minuten) en beperkte capaciteit te gebruiken. In ons experiment duurde de analyse van een enkel bestand veel langer dan een typische serverloze functie: uren of zelfs dagen.
  • Er is weinig ondersteuning voor foutherstel wanneer een deel van de analyse mislukt.
  • Serverloze functies moeten worden geschreven in een taal die door het platform wordt ondersteund. In dit geval hebben we de analysesoftware beschikbaar gesteld in een container met bestaande softwaretools.

Onze oplossing was om containers te orkestreren op een manier die erg lijkt op serverloze functies. Met behulp van de orkestratietool Kubernetes werden containers met de analysesoftware pas bij het uploaden van een bestand ingezet. Op deze manier werd de software niet beperkt in de tijd of in het gebruik van de resources. Bovendien kan alle software in een container op deze manier worden uitgevoerd, niet alleen de functies die in een ondersteunde programmeertaal zijn geschreven. Het voordeel voor de onderzoekers is dat ze slechts een container moeten voorzien van de juiste software voor het analyseren van een bestand. De uitvoering en schaalvergroting van de analyse worden verzorgd door het platform. Wageningen Universiteit blijft deze oplossing gebruiken en momenteel denken we na over soortgelijke oplossingen voor andere gebruikers.

Veelbelovende technologie

Serverloze technologie is veelbelovend. Het stelt ontwikkelaars in staat om zich te concentreren op code, in plaats van randvoorwaarden zoals het inzetten en onderhouden van servers. Het kan veel goedkoper zijn dan traditionele oplossingen. Serverloze platformen zorgen voor schaalvergroting en zijn als zodanig interessant voor gedistribueerde applicaties. Door hun gebeurtenisgedreven karakter zijn ze zeer geschikt voor gebruik in domeinen zoals internet of things en geautomatiseerde workflows. Bij SURF blijven we nieuwe ontwikkelingen op het gebied van serverloze technologie volgen.

Geïnteresseerd?

We horen graag van mensen die geïnteresseerd zijn in het gebruik van deze technologie voor hun onderzoeksproject. Neem contact op met Machiel Jansen: machiel.jansen@surf.nl of tel. 020-8001300.

Headerillustratie: gstudioimagen - www.freepik.com