Slide 1

Slide 1 text

TAMING DRAGONS (AKA MULTI-PROVIDER SERVERLESS APPS) JAMES THOMAS (IBM) @THOMASJ

Slide 2

Slide 2 text

PROVIDERS

Slide 3

Slide 3 text

WHY SWITCH PROVIDERS?

Slide 4

Slide 4 text

PERFORMANCE RUNTIMES OPEN-SOURCE MULTI-CLOUD

Slide 5

Slide 5 text

HERE BE DRAGONS

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

# serverless.yml service: my_service provider: name: aws functions: hello: handler: handler.hello # handler.js runtime: nodejs memory: 512 events: - http: GET /api/hello

Slide 11

Slide 11 text

# serverless.yml service: my_service provider: name: openwhisk functions: hello: handler: handler.hello # handler.js runtime: nodejs memory: 512 events: - http: GET /api/hello

Slide 12

Slide 12 text

RELEASE THE DRAGONS PLATFORMS

Slide 13

Slide 13 text

HERE BE (MORE)
 DRAGONS

Slide 14

Slide 14 text

INTERFACES

Slide 15

Slide 15 text

// aws lambda exports.handler = function(event, context, callback) { callback(null, "some success message"); } // openwhisk exports.handler = function(params) { return {msg: "some success message"}; }; // azure functions module.exports = function(context, args...) { context.done(null, {msg: "some success message"}) }; // google cloud functions exports.handler = function(event, callback) { callback(null, "some success message"); };

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

INTERFACES RUNTIMES

Slide 18

Slide 18 text

https:// achieveme nt- images.tea v6.9.1 v6.10.0 v6.5.0 v6.9.1 v8 v8 ? ? v2.7 v3.6.1 v2.7 v3.6.0 v2.7 ?

Slide 19

Slide 19 text

supports and supports supports no other runtimes , and supports using dotnet (core)

Slide 20

Slide 20 text

INTERFACES RUNTIMES EVENTS

Slide 21

Slide 21 text

HTTP ✓ ✓ ✓ ✓ CRON ✓ ✓ ✓ ✗ QUEUE ✓ ✓ ✓ ✓ DB ✓ ✓ ✓ ✗

Slide 22

Slide 22 text

# aws lambda functions: hello: events: - http: GET /api/hello
 # azure functions functions: hello: events: - http: x-azure-settings: methods: - GET route: /api/hello # openwhisk functions: hello: events: - http: GET /api/hello # google cloud functions functions: hello: events: - http: /api/hello

Slide 23

Slide 23 text

supports six event sources supports fifteen event sources supports six event sources supports three event sources * - supports adding other event sources

Slide 24

Slide 24 text

INTERFACES RUNTIMES EVENTS SDKS

Slide 25

Slide 25 text

// aws lambda var aws = require('aws-sdk'); var lambda = new aws.Lambda(); var params = {FunctionName: 'id', Payload: JSONPayload}; lambda.invoke(params, function(error, data) { // do something }); // openwhisk var openwhisk = require('openwhisk'); var options = {apihost: 'openwhisk.ng.bluemix.net', api_key: '...'}; var ow = openwhisk(options); ow.actions.invoke({actionName: ‘...'}).then();

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

INTERFACES RUNTIMES EVENTS SDKS RESOURCES

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

REDIS ✓ ✓ ✓ ✓ ELASTIC SEARCH ✓ ✓ ✓ ✓ KAFKA ✓ ✓ ✓ ✓ MYSQL ✓ ✓ ✓ ✓

Slide 30

Slide 30 text

WATSON ✓ ✗ ✗ ✗ REDSHIFT ✗ ✓ ✗ ✗ COSMOS ✗ ✗ ✓ ✗ SPANNER ✗ ✗ ✗ ✓

Slide 31

Slide 31 text

INTERFACES RUNTIMES EVENTS SDKS RESOURCES

Slide 32

Slide 32 text

2016 + serverless =

Slide 33

Slide 33 text

HERE BE DRAGONS

Slide 34

Slide 34 text

SUMMON INNER KHALSEI (USE SERVERLESS FRAMEWORK) SUMMON INNER-KHALEESI

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

No content

Slide 37

Slide 37 text

QUESTIONS? @THOMASJ