Ron Rademaker
15.09.2020

We hebben onze servers de deur uit gedaan, zijn we nu serverless?

ian-battaglia-9drS5E_Rguc-unsplash

AWS Serverless Technology

Een paar maanden geleden was het na lange voorbereidingen en veel werk zo ver. De laatste servers werden uit het rack in het datacenter geschroeft en in de auto geladen. Vanaf dit moment heeft Connect Holland geen eigen fysieke servers meer. We gebruiken nu Amazon Web Services (AWS) om ruim 200 projecten te hosten. 

In de beginjaren van Connect Holland was het bewaren van onze data op fysieke servers in een datacenter de enige mogelijkheid. De afgelopen 15 jaar zijn de mogelijkheden echter enorm toegenomen. Met de introductie van EC2 in 2006 maakte AWS het mogelijk om binnen enkele klikken servers in de cloud op te starten. Dit maakte het voor ons mogelijk om in 2010 als enige Feyenoord website in de lucht te blijven na het 0-10 verlies tegen PSV. De eerste release van Docker in 2013 luidde de volgende belangrijke stap in. Docker maakt het met behulp van containers mogelijk om met weinig overhead meerdere virtuele servers op een fysieke server te draaien. Voor containers was dit alleen mogelijk met behulp van virtualisatie, waarbij de overhead op iedere virtuele server dusdanig groot was dat dit alleen haalbaar was op zeer krachtige hardware. Met containers hoef je je als ontwikkelaar alleen druk te maken over de operating system afhankelijkheden die jouw applicatie nodig heeft, zoals bijvoorbeeld een webserver als je een website in een container ontwikkelt.

De meeste projecten van Connect Holland draaien in Docker containers op EC2 in de AWS cloud. De cloud evolueert echter verder, en de komende jaren zal je de term serverless steeds vaker tegen gaan komen. In deze blog ga ik in op wat serverless inhoudt en zoom ik in op enkele AWS diensten die van essentieel belang zijn voor serverless applicaties.

Lambda & API gateway

Serverless is de volgende grote stap en maakt het mogelijk om je functie (je programmeercode) te uploaden naar de cloud zonder je zorgen te hoeven maken over servers of operating systems. Achter de schermen zijn er uiteraard nog wel servers, maar die worden volledig door AWS beheerd en hier merk je als ontwikkelaar niets van. Zo’n functie die naar de cloud is geupload wordt door de AWS Lambda dienst gebruikt. AWS Lambda voert deze in de cloud uit aan de hand van verschillende triggers, bijvoorbeeld naar aanleiding van een web request die bij API gateway uitkomt. Je betaalt per milliseconde dat je code draait en AWS Lambda schaalt automatisch. Als er plotseling duizenden requests per minuut zijn dan vangen API gateway en Lambda die volledig automatisch op, en daarna schaalt Lambda weer automatisch af. Serverless heeft daardoor een paar grote voordelen. 

  • Software ontwikkelen wordt voor ontwikkelaars een stuk eenvoudiger, omdat ze alleen over hun code na hoeven te denken en niet over servers, operating systems en netwerken. 
  • Applicaties schalen razendsnel volledig automatisch op en af waardoor je applicatie nooit overbelast is. 
  • Je betaalt per milliseconde en daarmee dus echt alleen voor wat je gebruikt.

Natuurlijk heeft serverless niet uitsluitend voordelen, maar zijn er ook nadelen. Omdat je je niet bezig hoeft te houden met servers, mag je je ook niet bezighouden met servers. Je kan er bijvoorbeeld niet vanuit gaan dat een bestand dat je wegschrijft naar de harddisk er bij een volgende request nog is. Dit zijn zaken waar je tijdens ontwikkeling altijd rekening mee moet houden.

Aurora serverless

Amazon Aurora is een database oplossing die ingezet kan worden ter vervanging van MySQL of PostgreSQL. Aurora heeft twee voordelen ten opzichte van MySQL of PostgreSQL: Aurora is 3 tot 5 keer sneller en het is mogelijk om Aurora ‘serverless’ in te zetten. Ik ga hier wat dieper in op het serverless gebruik van Aurora. Serverless oplossingen zijn, zoals gezegd, oplossingen waarbij je je als ontwikkelaar of klant niet druk hoeft te maken over servers. Je kan een serverless database zien als een database die automatisch opstart, afsluit en op- en afschaalt op basis van gebruik. Je betaalt per seconde voor het gebruik van de database. Hierdoor is een zeer kosten-effectieve oplossing voor toepassingen met onvoorspelbaar piekgebruik of juist lange periodes van weinig tot geen gebruik (bijvoorbeeld in de nacht). Wij hebben Aurora Serverless bijvoorbeeld ingezet voor de Nacht van de Vluchteling app, waar in de digitale versie van dit evenement ‘s nachts juist een stuk minder werd gewandeld dan overdag. 

Simple Queue Service

Simple Queue Service (SQS) was in 2004 de eerste dienst de AWS aanbood. SQS gebruiken we om verschillende componenten of services te ontkoppelen en (asynchroon) samen te laten werken. Met name als je veel serverless functies en componenten gebruikt moet je goed nadenken over hoe verschillende serverless componenten samenwerken. Je betaalt per milliseconde, dus als een serverless function een paar seconden moet wachten op antwoord van een ander systeem dan lopen de kosten snel op. SQS maakt het makkelijk om deze componenten asynchroon te verbinden, hiermee voorkom je dat het ene component op het andere moet wachten.

Zijn we nu serverless?

Connect Holland heeft geen fysieke servers meer, maar dat wil niet zeggen dat we nu serverless zijn. Wel zijn we veel bezig met serverless technologie, omdat we geloven dat dit grote voordelen biedt voor onze klanten. We worden dus steeds meer serverless.

 

IMG_9717

Meer blogs