Serverless, game changer in cloud computing

 Door: Jeroen Jacobs & Edwin van Nuil  

Cloud computing heeft de afgelopen jaren al menig (IT) organisatie aanzienlijke verbeteringen gebracht als het gaat om wendbaarheid, efficiency, innovatie en daarmee concurrentievoordeel voor de organisatie. Applicatieservers die initieel in gehuurde en gemanagede datacenters draaien, worden massaal verschoven naar public platformen als Amazon Web Services, Google Cloud Platform en Microsoft Azure. Hoewel deze shift vaak nog vooral gericht is op rehosten van servers, zijn de resultaten in zin van efficiency, flexibiliteit en wendbaarheid, alsook innovatie, al enorm. De volgende shift in cloud computing gaat echter niet meer over servers, maar is “Serverless”.

Als we de afgelopen twee decennia terug in de tijd kijken, zien we eigenlijk een continue run om dezelfde applicatiefunctionaliteit op steeds minder fysieke hardware te kunnen laten draaien. Deze trend ontstond begin jaren 2000 met de opkomst van virtualisatietechnologie gedreven door VMware. Door meer servers op één fysieke server te draaien werd enorm veel efficiency behaald en dat evolueerde zo jaren door.

De volgende grote stap was de start van public cloud computing. In 2006 lanceerde Amazon Web Services hun public cloud computing platform, in de begin jaren veelal gericht op Infrastructure as a Service diensten. In plaats van servers gevirtualiseerd op een eigen infrastructuur draaien, al dan niet in eigen of gehuurd datacenter, werd ingezet op grotere schaalvoordelen met hogere efficiency en wendbaarheid tot gevolg. Langzamerhand verschoof de focus breder van Infrastructure as a Service naar Platform as a service. Softwareontwikkelaars en applicatiearchitecten gingen daarop cloud-native denken, designen en implementeren. Ook de CIO binnen de enterprise ging serieus nadenken over een cloudstrategie.

Het cloud-native denken groeide door naar applicatiearchitectuur op basis van microservices waarbij in plaats van één grote monolithische applicatie, de functionaliteit werd opgeknipt in kleinere applicatie services die een samenhang hebben met elkaar. Deze kleinere functies kunnen vervolgens zelfstandig draaien, schalen en ontwikkeld worden. De populariteit van microservices ging hand in hand met containerization (Docker) waarbij deelfunctionaliteiten van een applicatie in containers gingen draaien. De laatste stap in deze evolutie is gezet met de lancering van Amazon Web Services Lambda. AWS Lambda is de grondlegger van de event based serverless computing wat we vandaag de dag “serverless” noemen.

De ontwikkeling van fysieke servers naar serverless

De ontwikkeling van fysieke servers naar serverless

Over Serverless

Serverless lijkt wellicht een vreemde benaming, want een cloudservice provider gebruikt uiteraard nog steeds servers, echter is er voor de afnemer van de serverless dienst geen zorg meer voor het inrichten en managen van de onderliggende servers. Eigenlijk is dit net zo als bij Platform as a Service diensten als bijvoorbeeld managed databases. Waar het bij serverless om draait is het verwerken/draaien van applicatiecode in programeertalen als bijvoorbeeld Ruby, Python of PHP. Bijkomend is, dat het verwerken van de applicatiecode gebeurt op basis van een trigger. Wat een trigger kan zijn is zeer breed variërend van het ontvangen van een upload van een file, het ontvangen van een email, scheduled event tot een API Request of trigger vanaf een andere serverless functie.

Vertaald naar applicatiearchitectuur is het gedachtengoed van serverless om net zoals bij microservices, applicaties op te bouwen uit businesslogic. De businesslogic definieer je in events en functies. Een event triggert een functie en een functie is simpel weg een stukje applicatiecode wat door het onderliggende cloudplatform wordt uitgevoerd.

Serverless georiënteerde applicaties zijn meestal niet uitsluitend gebouwd uit serverless diensten als bijvoorbeeld AWS Lambda. Naast applicatiecode draaien hebben meeste applicaties ook  behoefte aan bijvoorbeeld een stukje storage wat in gevuld kan worden met object storage als AWS S3 of NoSQL database storage met AWS DynomoDB en komen triggers ook vanaf extern waardoor de AWS API Gateway een oplossing kan zijn.  

Serverless is de game changer in cloud computing

Serverless cloud computing is absoluut de game changer in softwareontwikkeling en cloud computing. Doordat er geen servers meer nodig zijn voor het uitvoeren van applicatiecode vervallen veel van de nadelen die nog steeds bij cloud computing gelden. Software developers zijn hierdoor in staat om nog sneller te kunnen ontwikkelen en vooral ook hun tijd te kunnen besteden aan business requested features. Op de gebieden pay per use, beheer en schaalbaarheid worden de grootste voordelen behaald.

Ultime pay per use belofte ingelost

Ondanks dat Infrastructure as a Service diensten worden geleverd met een pay per use belofte,  betalen we in de praktijk eigenlijk nog steeds vaak teveel doordat servers veel idle time hebben. Ondanks dat zelfs tot op seconde kan worden afgenomen, blijft er altijd idle time. De regie om te schalen ligt namelijk bij de applicatie-developer, inframan of in het mooiste geval geautomatiseerd in de applicatie, maar schalen gaat nog steeds in eenheden van steeds een hele server. Daarentegen, wordt bij serversless eigenlijk alleen aangerekend naar de troughput die wordt verwerkt tot op honderden milliseconden nauwkeurig. U kunt zich voorstellen hoe veel efficiënter applicaties kunnen werken dan wanneer dit op een server of meerdere servers zou moeten draaien. 

Beheer(kosten)

Omdat we geen servers hebben, hoeven we geen medewerkers of derde partij meer te betalen om ze te provisionen, te onderhouden en te monitoren. Geen OS patching en hardening meer en ook geen gedoe met OS lifecycle managementprojecten. Buiten de besparing in effort, reduceert dit ook nog eens een aanzienlijk risico die alle changes en upgrades continue met zich meebrengen.  

Schaalbaarheid

Serversless computing wordt als hoog beschikbare dienst aangeboden. Er hoeft dus niet nagedacht te worden hoe de uitvoering van de applicatiecode op infrastructureel niveau hoog beschikbaar wordt gemaakt. Ook voor schaalbaarheid geldt dit mechanisme. De cloudprovider draagt continue zorg voor voldoende resources om de applicatiecode uit te kunnen voeren. Capaciteit is er gewoon en geen zorg meer van de developer.

Voorbeeld van de architectuur van een serverless applicatie

Voorbeeld van de architectuur van een serverless applicatie

Serverless in de praktijk

Sinds de lancering van Serverless met AWS Lambda, en later ook de equivalenten Azure Functions en Google Cloud Functions, groeit de toepassing van serverless enorm hard. Ook bij onze klanten zijn we eigenlijk direct al in 2014 gestart met het toepassen van serverless. We zagen al snel toepassing voor het bouwen van maatwerkfuncties binnen het AWS cloudplatform zelf. Het automatiseren van reguliere beheerscripts, controlefuncties en checks ‘serverless‘ oplossen is inmiddels dan ook een absolute standaard geworden bij onze cloud implementaties. Zo gebruiken we bijvoorbeeld AWS Lambda scripts om op basis van een gescheduled event backups van de Amazon EC2 IaaS dienst te maken en om virtuele EC2 servers buiten kantooruren af te sluiten om kosten te besparen.

Een andere recente case is een integratie tussen een HR systeem en een cloud identity platform. Het doel is om HR data gesynchroniseerd te krijgen naar het cloud identity platform. Dit sync proces loopt enkele keren per dag en leent zich daarom prima om serverless met python scripts op te lossen. De integratie kost de organisatie nauwelijks geld omdat het run proces qua resources zeer efficiënt is. Een laatste voorbeeld is een organisatie waarbij grote delen van de webapplicatie wordt vervangen door AWS Lambda functies. Technisch is het mogelijk de gehele applicatie zonder servers te laten draaien. Dat is ook voor deze applicatie de visie waar we naartoe werken. 

Niet alleen maar rozengeur en maneschijn

Het toepassen van serverless in het applicatielandschap is absoluut interessant, maar kent ook enkele nadelen. Het vereist nieuwe competenties binnen IT en een andere manier van applicaties architectuur. Bestaande applicaties moeten effectief omgebouwd worden om ze geschikt te maken voor serverless. Daarnaast is lock-in een belangrijk punt. Hoe meer gebruik wordt gemaakt van de bouwstenen van de cloudprovider, hoe meer de lock-in op het platform. Ditzelfde geldt voor het security vraagstuk. Door het runnen van code direct op het cloudplatform leggen we een belangrijk deel van de securitymaatregelen bij de cloudprovider. Tot slot performance, monitoring en debugging kan beperkter zijn. Serverless applicaties reageren anders en hebben een vorm van latency tussen functies. Qua monitoring en debugging zitten we met serverless ver boven het OS niveau en hebben we daarmee ook geen toegang tot OS level tooling en metrics. Ook hier zijn we aangewezen op wat de cloudprovider ons out of the box te bieden heeft. 

Toch een serverloze toekomst

Ondanks de nadelen leveren de voordelen veel meer op in termen van efficiency, wendbaarheid en innovatiesnelheid. ‘Serverless’ is naar onze visie eigenlijk geëvolueerd tot de eerste vraag bij het cloudnative migreren of bouwen van nieuwe cloudapplicaties. Vaak wordt serverless ingezet in een deel van de totale applicatieoplossing, aangevuld met diensten als API Gateways en PaaS diensten als databases, storage maar ook Docker en eventueel IaaS. De serverless trend en adoptie ontwikkelt zich naar verwachting de komende jaren hard door. Op zichzelf niet zo vreemd, want serverless is eigenlijk een veel betere en logischere manier om cloudresources te consumeren. Trends als Cloudnative, DevOps, Data analytics, Machinelearning en IoT zullen voor serverless, belangrijke drivers zijn en tot nieuwe innovatieve mogelijkheden en hoge efficiency leiden.

Over de auteurs

Jeroen Jacobs is Cloud Consultant & Projectleider bij Oblivion Cloud Control B.V. jeroen@oblcc.com; Edwin van Nuil is Managing Director bij Oblivion Cloud Control B.V. edwin@oblcc.com  

Oblivion Cloud Control B.V. richt zich op cloudvraagstukken en is één van de Amazon Web Services Nederlandse Consulting partners van het eerste uur. Naast Amazon Web Services tevens implemenatiepartner van complementaire platformen en diensten als onder meer Okta Identity en TrendMicro.

(Dit artikel is eerder gepubliceerd in CIO Magazine, Januari 2018)