Serverless
Beyond PaaS
Introduction
Tusa Viktor @ Xively (LogMeIn)
Twitter: @talien
Github: talien
Recap
IaaS -> PaaS -> Serverless
Request handling(API Gateway) +
Business Logic (Lambda)
Frontend heavy, backend is third party (Backend-as-a-Service), or very lightweight (Function-as-a-Service)
What happened
in the last year?
Competitors (Azure, Google, IBM)
Frameworks (serverless.io)
API GW usage plans, more and
more languages
Common offerings
Pay what you use
Event-driven, IoT focused
Stateless execution context
No operational maintenance
Easy deployment
Azure Functions
Tries to group your functions into a logical app
Memory allocation is per-app not per-function
Two modes: "classic" and "dynamic"
Classic is like a PaaS ans billed the same way
Dynamic is billed like AWS Lambda.
Runs on top of Azure WebJobs.
C#, F#, Node.JS, PHP, Python
IBM OpenWhisk
Open Source runtime
Completely stateless, very similar to Lambda
Python, Node.js, Swift, Docker
Docker program should communicate through stdin and stdout in JSON.
Similar limits as Lambda, however Lambda is more flexible
Blocking and async invokation.
Google Cloud Functions
Still in Alpha
Only Node.js
Very simple, very lightweight
Similar to Lambda, less event trigger types, but no limit on execution duration
AWS Lambda
Python, NodeJS, Java8
Oldest, most integrated platform
Granular IAM policies - per-endpoint access control on cloud resources
API Gateway gives a full-fledged API frontend in front of Lambda.
"cold start"
Lambda + API GW changes
Python support (yay!)
Increase execution duration limit to 5 min
Scheduling
VPC support
Stage variables
Usage Plans
Throttling, quotas and usage metrics on API key level
Frameworks
Last year, lack of automation was the biggest problem
This year: two different approach
Cloud Management: cloudformation (AWS), terraform
Frameworks: Serverless, Zappa, Chalice, Apex, etc.
Environment management and deployment included in most of the frameworks
Serverless
Started as JAWS
Now the most mature framework over AWS Lambda + API Gateway
Plan for support Google Cloud Functions, Azure Functions and OpenWhisk
Extendable, large community
Serverless #2
Written in Node.js, supports Node and Python
1.x is a total reimplementation with API breaks (as usual in the Node community)
Highly dependent on CloudFormation.
Zappa
Only supports Python, targets AWS
Focuses on turning existing Django/Flask applications into serverless
Super simple to use, no deep AWS knowledge needed
Chalice
Focuses on Python
Created by AWS
Uses very similar syntax for routing like Flask, generates API GW resources from routing declaration during deployment.
IAM policy auto-generation
Apex
Node.js, Python, Java, Go only in AWS
Functionality is similar to serverless, Go support is a crude hack.
Uses Terraform instead of Cloudformation
Written in Go
Summary
Frameworks are still in early stage (except for serverless)
If we have a complex API, we need to deploy before we can try it out (losing the advantage of Docker).
Still a bit hard to debug.
But it still seems to be the future of Web and we are closing in.
Thank you!
Questions?
Resume presentation
Serverless Beyond PaaS
Made with Slides.com
BESbswy
BESbswy
BESbswy
BESbswy