Serverless computing – Nästa paradigmskiftet i molnet

Det råder delade meningar om när servereless blev ett uttalat begrepp. Vissa säger redan 2008 med Google App Engine, andra säger genom Hook.io och deras FaaS-tjänst tidigt 2014 medan de flesta menar efter Amazon Web Services re:Invent 2014 då AWS Lambda lanserades. Nu kanske du tänker, vad är serverless computing och vad kan det göra för mig och mitt företag?

 

Amazon Web Services, AWS, är ledande inom området. Deras definition av servereless lyder:
”Serverless most often refers to serverless applications. Serverless applications are ones that don’t require you to provision or manage any servers. You can focus on your core product and business logic instead of responsibilities like operating system (OS) access control, OS patching, provisioning, right-sizing, scaling, and availability. By building your application on a serverless platform, the platform manages these responsibilities for you.”

Serverless computing är alltså en modell för att köra tjänster eller kod i molnet där leverantören dynamiskt allokerar resurser. Trots namnet används givetvis servrar fortfarande i bakgrunden men all hantering och resursplanering av dessa görs av molnleverantören. Utvecklaren behöver inte bry sig om att hålla reda på servrarna som kör koden, oavsett om det är när man utvecklar koden eller när den tas i drift. Som företag får man helt enkelt mer tid till sin produkt och kan fokusera på det som ger värde till kunden och användaren.

Förutom att man inte behöver allokera och administrera enskilda servrar, fysiska eller virtuella, är serverless computing även mer i linje med de flesta moderna tankar om systemutveckling där funktioner eller tjänster bryts ner till att vara fristående och skalbara. Termen microservices är den som vanligtvis används för att beskriva tanken bakom.

Fördelarna med serverless computing och dess arkitektur är många:

  • Det låter dig fokusera på det viktiga; din produkt eller tjänst. Dra nytta av en plattform utan att tänka på infrastruktur och förbättra utvecklarnas produktivitet. Få mer tid över till att fokusera på verksamhetsmål och skapa produkter som når marknaden snabbare.
  • Det är enkelt. Som utvecklare behöver man inte hantera servrar. Inte heller installera mjukvara som sedan ska underhållas och administreras. Ingen infrastruktur eller inställningar. Dessa är arbetsmoment som i många fall är tidskrävande.
  • Det är kostnadseffektivt och ger bättre kostnadskontroll. Som företag betalar man bara för de resurser som man använder. Databearbetning utan server är händelsedriven och resurser allokeras så fort de utlöses av en händelse. Du debiteras bara för den tid och de resurser som krävs för att köra koden – genom delsekundsdebitering.
  • Det sparar tid. Att arbeta serverless är också mycket mer tidseffektivt. Både för företaget och kunden. Det bidrar som jag sa tidigare också till att nya produkter kan komma snabbare ut på marknaden.
  • Det är flexibelt och skalbart. Din applikation skalas upp automatiskt. Det kan vara så att en viss funktion tar mer kraft, då ser plattformen till att just den får mer resurser. Med en mer traditionell arkitektur blir man tvungen att skala upp hela webbtjänsten. Det blir också mer sömlösa anslutningar mellan de olika funktionerna.
  • Det är pålitligt och säkert. Du får åtkomst till en robust, tillgänglig och säker IT-miljö vid behov.
  • Det är enkelt att bygga intelligenta lösningar. I serverless finns inbyggd Artificiell intelligens inom räckhåll för utvecklare. Ett exempel på det är Machine learning, som du kan läsa om i ett av mina tidigare blogginlägg Artificiell Intelligens

För att sammanfatta citerar jag AWS CTO Werner Vogels: “Serverless ökar produktivitet för utvecklare”. Som utvecklare kan man helt enkelt koncentrera sig på sin kod och sin affär så tar AWS hand om resten.

 

 

Plattformar och tjänster inom serverless computing

 

Det finns ett flertal olika implementationer av serverless computing. Det främsta exemplet idag är AWS Lambda med cirka 70 % marknadsandel men Microsoft har Azure Functions, Google har Cloud Functions och Apache/IBM har OpenWhisk. Lambda har stöd för många applikations- och backendvarianter och låter dig köra kod utan att behöva konfigurera eller hantera servrar. Språk som stöds i Lambda är bland andra Node.js, Java, C#, Go och Python. Som företag betalar ni bara för använda resurser och AWS mäter den datakraft du använder i steg av 100 millisekunder.

Genom att kombinera Lambda med andra serverless-tjänster från AWS som S3, DynamoDB, API Gateway, Kinesis, SNS och SQS kan du skapa en kraftfull lösning som har alla fördelar som vi tidigare tittat på. I Lambda finns även möjligheter att på ett enkelt sätt integrera intelligens i form av tjänster som Amazon Rekognition, Polly, Translate, Lex eller Transcribe i dina appar.

AWS Lambda och serverless används idag i alla typer av industrier och i alla typer av lösningar. AWS själva pekar gärna på exempel som iRobot med sina över 20 miljoner sålda robotar där bakomliggande plattform byggts på en serverless-arkitektur baserad på AWS Lambda och AWS IoT eller Thomson Reuters lösning för att hantera och analysera över 4 000 händelser per sekund genom bland annat Amazon Kinesis och AWS Lambda. Se fler case studies från AWS här.

Värt att notera är dock att det går att börja smått med serverless och växa in i det. Flytta enskilda funktioner från en traditionell plattform till AWS Lambda eller nyttja serverless-tjänster när nya funktioner behöver tas i bruk. Det viktigaste är att serverless computing från och med nu finns med som en plattform att använda på samma sätt som virtuella maskiner eller containers gjort tidigare.

Vill du veta mer om serverless computing eller Internet of Things?

Låter serverless computing intressant? Vi bokar gärna in ett förutsättningslöst möte där vi tillsammans ser på anpassningsbara lösningar för just er verksamhet och hur vi kan optimera dina resultat så mycket som möjligt.

Hälsningar

Gunnar Grosch

Cloud Evangelist – Opsio
gunnar.grosch@opsio.se