Kubernetes Serverless Frameworks

Kubernetes Serverless Frameworks

Slides of a presentation given at:
* Cloud Native Computing Switzerland meetup, Zurich, May 9th 2019
* Swisscom OpenShift TechTalk Bern, September 18th, 2019
* Swisscom OpenShift TechTalk Zurich, October 23rd, 2019
* Swisscom OpenShift TechTalk Zurich, November 6th, 2019

53619e4417778923cc65a51683e850a0?s=128

Adrian Kosmaczewski

October 23, 2019
Tweet

Transcript

  1. 3.

    Martin Fowler — martinfowler.com/articles/serverless.html FaaS is about running backend code

    without managing your own server systems or your own long-lived server applications.
  2. 4.
  3. 6.

    Bernd Erk @gethash How #serverless actually works. #devopsdays 236 1:35

    PM - Oct 29, 2019 94 people are talking about this
  4. 7.

    AGENDA AGENDA 1. OpenFaaS 2. Fn Project 3. Fission 4.

    OpenWhisk 5. Kubeless 6. TriggerMesh
  5. 8.

    AGENDA AGENDA 1. Project details 2. Demos (three, on minikube)

    3. Available triggers 4. Supported programming languages
  6. 10.

    OPENFAAS OPENFAAS Written in Go ~16000 stars ~120 contributors Latest

    version 0.18.2 (October 15th, 2019) Independent project through donations (Patreon, OpenCollective, PayPal) www.openfaas.com @openfaas github.com/openfaas/faas
  7. 11.

    OPENFAAS CHARACTERISTICS OPENFAAS CHARACTERISTICS Based on Docker Functions packaged in

    containers Requires Docker in the local machine Manages Docker les on behalf of developer Template "store" CLI: faas-cli API with Swagger Serverless Framework plugin
  8. 12.

    1 provider: 2 name: openfaas 3 gateway: http://192.168.99.100:31112 4 functions:

    5 hello: 6 lang: python3 7 handler: ./hello 8 image: hello:latest - 149 UU-: hello.yml
  9. 13.
  10. 14.
  11. 15.

    OPENFAAS LANGUAGES OPENFAAS LANGUAGES C#, F== (.NET Core) Go JavaScript

    (Node.js) Java (JVM) 8 & 12 PHP 7 Python / Python 3 Ruby github.com/openfaas/templates
  12. 17.

    FN PROJECT FN PROJECT Written in Go ~4300 stars ~80

    contributors Latest version 0.3.739 (October 18th, 2019) Funded by Oracle (Oracle Functions is a fork) fnproject.io @fnproject github.com/fnproject/fn
  13. 20.

    FN PROJECT LANGUAGES FN PROJECT LANGUAGES Go JavaScript (Node.js) Java

    (JVM) Python Ruby C== (community supported) "Supports all languages"
  14. 22.

    FISSION FISSION Written in Go ~4700 stars ~90 contributors Latest

    version 1.6.0 (October 10th, 2019) Maintained by ssion.io @ ssionio github.com/ ssion/ ssion Platform9
  15. 23.

    FISSION CHARACTERISTICS FISSION CHARACTERISTICS Functions are injected into "Environments" Pool

    of containers with language runtimes Functions loaded and launched on demand CLI: fission Serverless Framework plugin
  16. 24.

    asciinema $ cat samples/fission.js module.exports = async function(context) { return

    { status: 200, body: "Hello VSHN from Fission!\n" }; } asciinema $ fission env create --name nodejs --image fission/node-env environment 'nodejs' created asciinema $ fission function create --name vshn --env nodejs --code samples/fission.js Package 'fission-js-i0nl' created function 'vshn' created asciinema $ fission function test 00:00
  17. 28.

    OPENWHISK OPENWHISK Written in Scala ~4300 stars ~160 contributors Latest

    version 0.9.0 (October 31st, 2018) Started by IBM, maintained by the Apache Foundation openwhisk.apache.org @openwhisk github.com/apache/openwhisk
  18. 29.

    OPENWHISK OPENWHISK CHARACTERISTICS CHARACTERISTICS Very "corporate" in design and functionality

    Secure by default Forked by Adobe and other big corporations CLI: wsk Serverless Framework plugin
  19. 30.
  20. 31.

    OPENWHISK LANGUAGES OPENWHISK LANGUAGES C#, F== (.NET Core) JavaScript (Node.js)

    Swift Java, Scala (JVM) Go Python, PHP, Ruby Ballerina Through Docker Actions: Rust, Haskell…
  21. 33.

    KUBELESS KUBELESS Written in Go ~5100 stars ~80 contributors Latest

    version 1.0.5 (October 16th, 2019) Maintained by kubeless.io github.com/kubeless/kubeless Bitnami
  22. 34.

    KUBELESS CHARACTERISTICS KUBELESS CHARACTERISTICS Simplest to install and use Aims

    to similarity with AWS Lambda CLI compliant with AWS Lambda CLI Prometheus monitoring of functions calls and latency CLI: kubeless Serverless Framework plugin
  23. 35.

    asciinema $ cat kubeless.py def hello(event, context): print event return

    "Hello CNC from " + event['data'] asciinema $ kubeless function deploy hello --runtime python2.7 --from-file kubeless.py --handler kubeless.hello INFO[0000] Deploying function... INFO[0000] Function hello submitted for deployment INFO[0000] Check the deployment status executing 'kubeless function ls hello' asciinema $ kubectl get functions NAME AGE hello 6s asciinema $ 00:00
  24. 36.
  25. 38.

    KUBELESS LANGUAGES KUBELESS LANGUAGES Go Python JavaScript (Node.js) Java (JVM)

    Ruby C#, F== (.NET Core) Ballerina Custom runtimes possible
  26. 41.

    TRIGGERMESH TRIGGERMESH CHARACTERISTICS CHARACTERISTICS Based on Kubernetes & Knative CLI:

    tm Not yet open source "Early Access Program" TriggerMesh Operator for OpenShift 4.0 CI/CD of functions
  27. 42.
  28. 43.

    TRIGGERMESH TRIGGERS TRIGGERMESH TRIGGERS Cross-cloud triggers from AWS & Azure

    to functions on Knative Code Commit Cognito DynamoDB Kinesis S3 SNS SQS…
  29. 45.

    COMPARISON COMPARISON Local Local Docker Docker Image Image Repo Repo

    Base Base Image Image OpenFaaS OpenFaaS Required Required Required Fn Project Fn Project Required Required Required Fission Fission None None Required OpenWhisk OpenWhisk None None None Kubeless Kubeless None None None
  30. 46.

    OTHER PLAYERS OTHER PLAYERS More: , , , , ,

    … Amazon Firecracker AppScale Azure Functions on Kubernetes Dispatch Gestalt Dapr IronFunctions LunchBadger Nuclio OpenLambda Ri
  31. 48.
  32. 49.
  33. 50.
  34. 51.