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?

Made with Slides.com