Tom Schenkenberg
18 april 2019
In ons online tijdperk is ook de tijd van serverless computing de afgelopen jaren aangebroken. Dat biedt grote voordelen voor het werken in de cloud. Zeker als de software voor jouw organisatie hiervoor is ontworpen en ontwikkeld. Voor nieuwe applicaties zou het ontwikkelen van cloud native software ook zeker een overweging moeten zijn. Ik leg je graag uit waarom.
Evolutie naar serverless computing
Laten we eerst vaststellen dat serverless computing een hele slechte naam is. Want ook in de cloud zijn voor deze service gewoon servers nodig. Maar de tijd dat een bedrijfsserver met alle software onder je bureau of in de kelder van je bedrijfspand stond te werken, is nu toch echt wel voorbij. Deze evolutie is ongeveer zo verlopen:
Organisaties hadden voor hun netwerk een eigen server met daarop hun besturingssysteem en applicatiesoftware. Daarna kwam de gehuurde ‘virtuele server’, waarvan je de hardware niet langer zelf hoefde te beheren. Toen ging ook de applicatiesoftware op een deel van de virtuele server draaien (containers). Toen hoefde je niet langer zelf het complete besturingssysteem te beheren. En toen gingen we serverless. Daardoor heb je helemaal geen omkijken meer naar het beheer van het besturingssysteem. Beheer draait dan uitsluitend nog om je applicatiesoftware.
Eten zonder zelf te koken
De serverless software draait nog altijd op een server. Maar die ‘verschijnt’ alleen even als dat nodig is voor een taak. Bijvoorbeeld als je een webpagina opvraagt of een formulier verzendt. Daarna ‘verdwijnt’ de server weer nadat de taak is uitgevoerd.
Vergelijk het met uit eten gaan als je geen zin hebt om te koken. Dat is eigenlijk ‘kookloos’ eten. Voor jouw maaltijd krijg je tijdelijk de beschikking over een gespecialiseerde kok met compleet ingerichte keuken, alle ingrediënten en skills. Zodra het eten op je bord ligt, ‘verdwijnt’ hij weer uit beeld om voor iemand anders wat lekkers te maken. Bij serverless computing gebeurt hetzelfde. Er verschijnt een compleet ingerichte server precies wanneer hij nodig is: geen milliseconde eerder of langer dan dat hij nodig is.
Vooral de opkomst van mobiele en Internet of Things (IoT) toepassingen stimuleren de groei van serverless computing platformen. De technologie is gebaseerd op een architectuur van microservices, die voor een revolutie heeft gezorgd in de ontwikkeling en implementatie van softwareapplicaties.
Waarom serverless computing?
De serverless aanpak biedt grote voordelen. Allereerst grote flexibiliteit door de extreme schaalbaarheid van webapplicaties. De kosten van een applicatie zijn grofweg te verdelen in de kosten van: de software, data en de infrastructuur waarin alles beschikbaar is voor gebruikers. De innovatie wordt gedreven door dat laatste. Want vooral dat bepaalt de beschikbaarheid, schaalbaarheid en snelheid.
Vroeger moest je met traditionele hosting vooraf inschatten hoe groot je database en dataverkeer ongeveer zouden worden. In het serverless model is dat compleet omgedraaid. Je betaalt achteraf op basis van je daadwerkelijke gebruik. En waar een traditionele dienst ‘omvalt’ bij een te hoge belasting omdat veel gebruikers dezelfde servers delen, krijgt bij serverless elke gebruiker even zijn eigen server. Eén bij één gebruiker en 5000 servers voor 5000 gelijktijdige gebruikers. Dat zorgt voor praktisch oneindige schaalbaarheid. Wel met één belangrijke kanttekening: je applicatie moet hiervoor wel ontworpen zijn! Dat vereist cloud native softwareontwikkeling.
Naast de schaalbaarheid is het afscheid nemen van serverbeheer een belangrijk voordeel. Het hele beheer van de hosting-infrastructuur plaats je buiten de deur. Je hoeft dus geen systeembeheerder in te huren of ‘managed hosting’ af te nemen. Wat je wel behoudt, is het management (DevOps) van je cloud dienstverlener (zoals Microsoft Azure, Amazon Web Services, Google Cloud of bijvoorbeeld OpenFaaS).
Cloud native softwareontwikkeling
Om serverless computing te benutten, moeten applicaties op een bepaalde manier ontworpen en ontwikkeld zijn. De mate waarin dat gebeurt, bepaalt ook de mate waarin je profijt hebt van dit model. De ideale situatie is dat je applicaties volledig cloud native zijn. Bestaande applicaties ombouwen is lastig en tijdrovend. En vaak helemaal niet mogelijk.
Bij nieuwe applicaties zou de ontwikkeling als cloud native applicatie wat mij betreft een serieuze overweging moet zijn. Want clouddiensten zijn een vast onderdeel geworden van vrijwel elke nieuwe applicatie. De winst zit in het optimaal benutten en omarmen van die technologie. Mijn advies: ontwikkel je nieuwe applicaties als cloud native applicatie.