Wat is serverless?
Serverless computing stelt je in staat om je applicatie te draaien zonder dat je daarvoor een server nodig hebt en zonder verder omkijken naar de onderliggende infrastructuur. Serverless computing is bezig aan een snelle opmars. De mogelijkheden waren er al, maar door de versnippering van het serverless landschap met onder andere AWS Lambda, Googles App Engine en Azure Cloud Functions, was er niet één standaard en waren veel ontwikkelaars huiverig voor een Cloud-lock in. Met de lancering van Knative halverwege 2018, lijkt een standaard te ontstaan en komt de adoptie van serverless in een stroomversnelling. Knative maakt het mogelijk om applicatiecode platform-onafhankelijk te draaien, waardoor je niet langer bent gebonden aan één Cloud aanbieder.
Dankzij Knative komt serverless binnen handbereik van een groter publiek. Doordat je met Knative niet gebonden bent aan één aanbieder met eigen werkwijzen en eigenaardigheden, is Knative in korte tijd al door veel partijen omarmd. Google, IBM, SAP, Red Hat en Pivotal dragen bij aan de ontwikkeling en GitLab kondigde in december 2018 aan ondersteuning te bieden voor serverless deployments met Knative.
Mede-initiatiefnemer Pivotal omschrijft Knative als volgt:
“A simpler way for developers to deploy and run serverless apps and functions atop Kubernetes and Istio (Pivotal)”
Wij verwachten dat serverless computing in 2019 vaste voet aan de grond zal krijgen en dat Knative zich als standaard zal bewijzen. Er zijn namelijk veel use cases waarbij serverless computing bedraagt aan een hogere efficiency en een betere omgang met resources.
Hoe is serverless anders dan containers?
Knative is middleware voor Kubernetes. Het breidt de functionaliteit uit en voegt een laag toe tussen je applicatie en Kubernetes. Wetende dat je in een handomdraai een container bouwt en uitrolt op Kubernetes, kan je je afvragen wat de toegevoegde waarde van serverless computing is. Zeker als je weet dat serverless applicaties op de achtergrond ook gewoon containers zijn. Hoe serverless verschilt van container orchestration, wordt snel duidelijk zodra je de basisconcepten van beiden kent.
Bij container orchestration met Kubernetes ben je zelf verantwoordelijk voor (in ieder geval een deel van) de inrichting van de infrastructuur. Je dient er bijvoorbeeld voor te zorgen dat je van buitenaf de applicatie bereikbaar is, automatisch opschaalt, herstart bij problemen en dat container upgrades op de juiste manier uitgevoerd worden.
In het geval van serverless computing heb je geen omkijken meer naar dat infrastructurele deel. Knative heeft dat voor je geregeld en introduceert drie nieuwe concepten waarmee je zelf alle noodzakelijke flexibiliteit en controle hebt om je applicatie te draaien. Deze concepten in vogelvlucht:
- Building
- Met een ingebouwde functionaliteit is het mogelijk om realtime Docker-images te genereren van een Github repository. Met behulp van de buildpacks van Cloud Foundry maak je automatisch een image om vervolgens uit te rollen.
- Serving
- Een request driven platform waarmee containers gestart, geschaald en naar de juiste revisie van je applicatie gerouteerd worden. Knative zorgt voor voldoende replica’s van je applicatie om de workload te verwerken. Bij inactiviteit stopt je applicatie. Het systeem werkt request driven, dus je applicatie start automatisch en snel weer op zodra dat nodig is.
- Eventing
- Onmisbaar voor multi-Cloud, IOT en veel andere workloads zijn messaging brokers. Ieder gewenst event kan je applicatie triggeren om te starten of een functie uit te voeren.
Met bovenstaande concepten biedt Knative een innovatieve oplossing waarmee je schaalbare workloads Cloud-onafhankelijk kunt draaien. Het is in het bijzonder geschikt voor het uitvoeren van functions of microservices, d.w.z. kleine applicaties met één taak. Om die reden worden platformen als Knative, AWS Lambda en Google App Engine ook wel FaaS (Functions-as-a-Service) genoemd. Het grote voordeel ten opzichte van andere FaaS-oplossingen is dat ieder Kubernetes cluster kan worden uitgebreid met Knative, waardoor je niet langer aan één leverancier bent gebonden.
Voor wie is serverless / knative interessant?
Er zijn een aantal duidelijke situaties waarin Knative voordeel biedt. De meest voordehandliggende situaties waarin de inzet van serverless computing de moeite waard is:
- Als je workloads draait die periodiek worden uitgevoerd. Na een periode van inactiviteit wordt de applicatie naar 0 teruggeschaald. Als je applicatie niet permanent online hoeft te zijn, dan is het zonde om altijd servercapaciteit bezet te houden. Zodra de route van je applicatie aangeroepen wordt, zal je applicatie weer opstarten en indien nodig opschalen naar meerdere replica’s. Door dit gedrag is de responsiveness laag na een periode van inactiviteit. Serverless is daarom niet interessant voor bijvoorbeeld webapplicaties die altijd een goede performance moeten hebben, maar is wel bijzonder interessant voor applicaties of functies die periodiek aangeroepen worden.
- Serverless computing is interessant voor microservices die pas na een HTTP-request of event uit een broker actief hoeven te worden. Knative ondersteunt een verscheidenheid aan event sources, waaronder Googles Pub/Sub, Apache Kafka, RabbitMQ, Github webhooks en diverse databases.
- Knative kan op ieder Kubernetes cluster geïnstalleerd worden. Daarmee is het mogelijk om je eigen serverless platform neer te zetten zonder extra investering.
Aan de slag met Serverless?
Met Knative wordt het mogelijk om zelf je Serverless platform op te zetten. Knative kan geimplementeerd worden op ieder Kubernetes-cluster, zowel on premise als bij een willekeurige Cloud-aanbieder. Dat maakt het heel interessant voor use cases waarbij serverless applicaties in een private cloud moeten draaien, bijvoorbeeld vanwege strenge veiligheidseisen of wetgeving.
Benieuwd wat serverless computing voor jouw situatie kan betekenen? Laat je contactgegevens achter in onderstaande formulier voor een gratis adviesgesprek!