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?
Serverless - Beyond PaaS
By Tusa Viktor
Serverless - Beyond PaaS
- 1,423