De opkomst van mobiele en IoT toepassingen stimuleert de groei van serverless computing platformen. Deze nieuwe technologie is gebaseerd op de microservices architectuur, die voor een revolutie in de ontwikkeling van software en de implementatie ervan heeft gezorgd. Maar wat is het? Wat zijn de voordelen ervan? En hoever zijn we er mee?
De definitie
Eerst maar eens proberen om dit nieuwe fenomeen helder te krijgen. Op de eerste plaats is het begrip op zichzelf al tegenstrijdig. Hoe wil je immers ‘computen’ zonder dat daar op zijn minst een server bij komt kijken? Er liggen dus wel degelijk servers ten grondslag aan deze service. Waar het op neerkomt, is dat er op een abstract niveau functionaliteit ter beschikking komt ten behoeve van de ontwikkelaars. Zij hebben daardoor geen omkijken meer naar infrastructurele en operationele issues. Daardoor kunnen zij zich volledig richten op hun core competentie: het schrijven van code.
Conceptueel gezien zou je kunnen zeggen dat er door de inzet van serverless een drietal extra lagen worden toegevoegd. Behalve compute resources, storage en netwerk zijn er nu ook ‘fabric’, ‘framework’ en functies.
De ‘fabric’ verwijdert alle operationele functionaliteit waardoor een ontwikkelaar als het ware te maken heeft met een black box. Het ‘framework’ faciliteert de creatie van code op basis van een ‘event’ gedreven programmeermodel. In de wereld van IoT waar er sprake is van veel in- en output is dat ideaal, omdat de betreffende applicatie zich snel aan moet kunnen passen aan veranderde omstandigheden. De functielaag tot slot, biedt alle mogelijke pakketten en een referentie-architectuur om de betreffende applicatie daadwerkelijk te bouwen. Hier bevindt zich de logica en de intelligentie om tot de gewenste output te komen.
De aanbieders
Google Cloud Platform biedt serverless computing aan onder de naam Cloud Functions. Zijn definitie: een lichtgewicht, event gebaseerde, asynchrone compute oplossing die ontwikkelaars in staat stelt om kleine, enkelvoudige functies te creëren die reageren op cloud events zonder dat daarvoor een server- of runtime-omgeving beheerd hoeft te worden. Meer weten? Check: https://cloud.google.com/functions/
AWS zet deze service in onder de noemer Lambda. Code uitvoeren zonder provisioning of het beheer van servers. Je betaalt alleen voor het daadwerkelijke verbruik. Als je de code niet gebruikt, zijn er geen kosten. Met Lambda, kun je code uitvoeren voor vrijwel elk type applicatie of backend service – allemaal zonder enige vorm van administratie. Upload enkel de code en Lambda zorgt voor alles wat nodig is om de app te laten functioneren; van up- en down scaling tot en met het verzorgen van een hoge beschikbaarheid. Meer weten? Check: https://aws.amazon.com/lambda/
Azure Functions is het antwoord van Microsoft op deze ontwikkeling. Zijn omschrijving is kort en bondig: een event gebaseerde ‘serverless compute experience’ om softwareontwikkeling te versnellen. Het schaalt op basis van de vraag en er wordt alleen betaalt voor de resources die worden verbruikt. Meer weten? Check: https://azure.microsoft.com/en-us/services/functions/
Uiteraard hebben ook de andere grote spelers hun propositie op het vlak van serverless computing. IBM doet dat met IBM Bluemix OpenWhisk. Check voor meer informatie: http://www.ibm.com/cloud-computing/bluemix/openwhisk/
Een partij die als niche speler is te benoemen is Iron.io. Check: https://www.iron.io/platform/
En als we het dan toch over niche spelers hebben. Ook de start-up Serverless is de moeite waard om te beschouwen. Zij leveren een ontwikkel-framework waarmee op relatief eenvoudige wijze gebouwd kan worden op de infrastructuur van AWS Lambda. Check: https://serverless.com/
De voordelen van serverless computing
Schaalbaarheid: door het ontbreken van servers (vanuit het perspectief van de ontwikkelaar) zal het schalen van de applicatie, als gevolg van de load, automatisch door het onderliggende platform geregeld worden. Het daadwerkelijke aantal gebruikers maakt niet uit. Als gevolg hiervan hoeft een ontwikkelaar zich geen zorgen te maken over provisioning.
Kostenvoordelen: in een conventioneel model zijn er processen die constant actief zijn. De onderliggende infrastructuur wordt daardoor belast en kosten lopen door. Serverless computing zal uiteindelijk leiden tot een lagere TCO, omdat het ‘pay-per-use’ model ten volle wordt benut.
De status
Serverless computing is nog niet voor ieder bedrijf weg gelegd, laat staan voor iedere ontwikkelaar. Veel belangrijker bij het beoordelen van deze technologie is het feit dat het gross van de applicaties gewoonweg niet geschikt is voor deze manier van distribueren. Er zal op zijn minst sprake moeten zijn van een ‘cloud native’ applicatie.
Vooralsnog hoeven we dus niet te rekenen op een massale gang naar de serverless compute platformen. Met name op het vlak van IoT gerelateerde apps zijn er duidelijk voordelen te benoemen en aangezien dit doorgaans apps zijn die vanuit een ‘greenfield‘ ontwikkeld worden zullen daar de eerste initiatieven te zien zijn. Keep you posted.
Leuk artikel Robèr, toevallig deze week ook een artikel op Computable geplaatst waarin ik in ga op Serverless.
Om even een Ewoutje / Rezaatje te doen : https://www.computable.nl/artikel/opinie/cloud-computing/5910497/1509029/serverless-ai-is-megatrend-in-2017.html
Overigens zie ik serverless nog veel breder dan alleen functies. Diensten zoals AWS S3, AWS RDS, AWS Step Functions, maar zelfs Polly, AWS Lex, SES, etc. zijn voorbeelden van Serverless.
En zelfs Office 365 / Google G Suite / SOHO etc zijn en SaaS in het algemeen is een vorm van Serverless.
Andere voordelen van Serverless is security en flexibiliteit.
Waarom zou je nog ijzer willen hebben? Of virtuele servers?
Ik geloof dus wel degelijk naar een massale gang naar serverless, alleen zal dit nog dit jaar niet zichtbaar zijn, al kan het ineens heel hard gaan.
Eigenlijk weer een cyclische beweging terug naar de fat client. Alle uitzonderingen moeten namelijk in de programmatuur van de client ingebouwd worden, die een grotere loggere footprint krijgt.
Artikel geeft wel een fascinerende kijk op de opties, maar het onderbelicht de “wanneer niet” situaties.
Robèr, mooie visie op een mogelijke toekomst. Ik denk echter dat een deel van de toekomst een stuk dichterbij is als wij allemaal denken. Serverless Computing is wat een hoop mensen ook WebScale Computing noemen. Het maakt niet uit waar het draait, de basis is vanuit de definitie aanwezig. Docker en Cloud Foundry zijn ook al producten die veel worden ingezet voor serverless computing.
Bij één van de grotere 🙂 zoek machines start er een docker container op voor iedere zoek actie. Maar zoals jij al beschrijft zijn er ook meerdere cloud aanbieders die Serverless Compute bieden. NTT Communications heeft Cloud Foundry ook al beschikbaar op zijn cloud platform. Hier huur je dan geen CPU meer, maar een resource pool die per minuut wordt afgerekend. Eigenlijk zou je hier naar een nog fijnmaziger afreken model willen, maar daar is de techniek nog niet helemaal klaar voor om het op een industriële schaal in te zetten.
Een andere benadering is er vanuit IoT, waarbij processing steeds meer aan de rand van het netwerk wordt uitgevoerd. Denk aan een eenvoudige camera die alleen uitzend bij beweging (oke, simpel voorbeeldje) of bij de LHC in Genève, waar ook al veel, heel veel data aan de edge wordt verwerkt.
Of je deze twee voorbeelden Serverless Computing kan noemen, discussie.