29
Build a cloud native app with OpenWhisk @DanielKrook • Senior Software Engineer • IBM Cloud OpenWhisk.org

Build a cloud native app with OpenWhisk

Embed Size (px)

Citation preview

Page 1: Build a cloud native app with OpenWhisk

Build a cloud native app with OpenWhisk

@DanielKrook • Senior Software Engineer • IBM Cloud

OpenWhisk.org

Page 2: Build a cloud native app with OpenWhisk

@DanielKrookOpenWhisk.org

What you will learn today

• How serverless technology enables developers to write cloud native applications better, faster, and cheaper.

• How OpenWhisk provides an open source platform to enable these cloud native, event driven applications.

• How to get started developing with OpenWhisk on Bluemixbased on two hands on coding demos

Page 3: Build a cloud native app with OpenWhisk

Serverless architectures are drawing

interest due to a combination of

compelling technical and business factors

Page 4: Build a cloud native app with OpenWhisk

@DanielKrookOpenWhisk.org

With serverless developers focus more on code, less on infrastructure

Bare metal

Virtual machines

ContainersFunctions

Decreasing concern (and control) over stack implementation

Incr

easi

ng fo

cus

on b

usin

ess

logi

c

Page 5: Build a cloud native app with OpenWhisk

@DanielKrookOpenWhisk.org

Serverless platforms can address 12 Factors for developers

I Codebase Handled by developer (Manage versioning of functions themeselves)

II Dependencies Handled by developer, facilitated by serverless platform (Runtimes and packages)

III Config Handled by platform (Environment variables or injected event parameters)

IV Backing services Handled by platform (Connection information injected as event parameters)

V Build, release, run Handled by platform (Deployed resources immutable and internally versioned)

VI Processes Handled by platform (Single stateless containers used)

VII Port binding Handled by platform (Actions or functions automatically discovered)

VIII Concurrency Handled by platform (Process model hidden and scales in response to demand)

IX Disposability Handled by platform (Lifecycle hidden from user, fast startup and elastic scale prioritized)

X Dev/prod parity Handled by developer (Developer is deployer. Scope of what differs narrower)

XI Logs Handled by platform (Developer writes to console.log, platform streams logs)

XII Admin processes Handled by developer (No distinction between one off processes and long running)

Page 6: Build a cloud native app with OpenWhisk

@DanielKrookOpenWhisk.org

Emerging workloads are a good fit for event driven programming

Execute app logic in response to database change

Perform edge analytics in response to sensor input

Provide cognitive computing via a conversational bot

Schedule tasks according to a specific timetable

Invoke autoscaled mobile backend services

Page 7: Build a cloud native app with OpenWhisk

@DanielKrookOpenWhisk.org

New cost models can more accurately charge for compute time

Applications billed by compute

time (millisecond) rather than

reserved memory (GB/hour).

While many applications must still be deployed in an always on

model, serverless architectures provide an alternative that can result

in substantial cost savings for a variety of event driven workloads.

Means a greater linkage between

cloud resources used and

business operations executed.

Page 8: Build a cloud native app with OpenWhisk

@DanielKrookOpenWhisk.org

Technological and business factors make serverless compelling

Serverless architectures are gaining traction

Cost models getting more granular and efficient

Growth of event driven workloads that need automated scale

Platforms evolving to facilitate cloud native design for developers

Page 9: Build a cloud native app with OpenWhisk

@DanielKrookOpenWhisk.org

OpenWhisk enables these serverless, event-driven workloads

Serverless deployment and operations model

Optimized utilization, fine grained metering at any scale

Flexible, extensible, polyglot programming model

Open source and open ecosystem (Apache proposal)

Ability to run in public, private, and hybrid models

OpenWhisk

a cloud platformthat executes code

in response to events

Page 10: Build a cloud native app with OpenWhisk

The OpenWhiskprogramming model

Page 11: Build a cloud native app with OpenWhisk

@DanielKrookOpenWhisk.org

Developers work with triggers, actions, rules, and packages

Data sources define events they emit as Triggers.

Developers map Actions to Triggers via Rules.

Packages provide integration with external services.

T

A

P

R

Page 12: Build a cloud native app with OpenWhisk

@DanielKrookOpenWhisk.org

Triggers

A class of events that can occurT

Social events

Data changes

Device readings Location updates

User input

Page 13: Build a cloud native app with OpenWhisk

@DanielKrookOpenWhisk.org

Actions

Code that runs in response to an event(that is, an event handler)

A

Page 14: Build a cloud native app with OpenWhisk

@DanielKrookOpenWhisk.org

Actions

Can be written in a variety of languages, such asJavaScript, Python, Java, and Swift

A

function main(params) {return { message: 'Hello, ' + params.name + ' from ' + params.place };

};

Page 15: Build a cloud native app with OpenWhisk

@DanielKrookOpenWhisk.org

Actions

Or any other language by packaging with DockerA

Page 16: Build a cloud native app with OpenWhisk

@DanielKrookOpenWhisk.org

Actions

Can be composed to create sequencesthat increase flexibility and foster reuse

A

AA := A1 + A2 + A3

AB := A2 + A1 + A3

AC := A3 + A1 + A2

Page 17: Build a cloud native app with OpenWhisk

@DanielKrookOpenWhisk.org

Rules

An association of a trigger to an action in a many to many mapping.

R

R := T A

Page 18: Build a cloud native app with OpenWhisk

@DanielKrookOpenWhisk.org

Packages

A shared collection of triggers and actionsP

A

A readwrite

T changes A translate A forecast

A postT topic

OpenSource A myAction

T myFeed

Yours

T commit

ThirdParty

Page 19: Build a cloud native app with OpenWhisk

OpenWhiskin action

Page 20: Build a cloud native app with OpenWhisk

@DanielKrookOpenWhisk.org

The OpenWhisk execution model

Pool of actions

Swift DockerJS

Trigger

1

Runningaction

Runningaction

Runningaction

3

OpenWhiskEngine

2 A

T

AAA

Page 21: Build a cloud native app with OpenWhisk

@DanielKrookOpenWhisk.org

Demo 1: Timer triggered action

Trigger

1

Runningaction

2

T

A

1. Cron syntax alarm

2. Log the current time

$ wsk action create handler handler.js

$ wsk action invoke --blocking handler

$ wsk trigger create every-20-seconds \

--feed /whisk.system/alarms/alarm \

--param cron “*/20 * * * * *”

$ wsk rule create \

invoke-periodically \

every-20-seconds \

handler

$ wsk activation poll

github.com/krook/dw-openwhisk-demo-1

Page 22: Build a cloud native app with OpenWhisk

@DanielKrookOpenWhisk.org

OpenWhisk enables event driven applications

Event Providers

Cloudant

GitHub

Weather

Which triggers execution ofassociated OpenWhisk action

2

SlackJS Swift Docker …

An event occurs, for example• Commit pushed to GitHub repository• Data changed in Cloudant

1 OpenWhisk

Page 23: Build a cloud native app with OpenWhisk

@DanielKrookOpenWhisk.org

OpenWhisk can implement REST microservices

Send HTTP requestHTTP GET

app.com/customers

1

Invoke OpenWhiskaction get-customers

Browser

Mobile App

Web App

2

JS Swift Docker …

OpenWhisk

API Proxy

Page 24: Build a cloud native app with OpenWhisk

@DanielKrookOpenWhisk.org

Demo 2: Polyglot applications with data triggers

github.com/krook/dw-openwhisk-demo-2

Trigger

2

JavaScriptaction

3

T

A

1. Image uploaded to Cloudant

3. JavaScript action parses image metadata and transforms image

Docker action

4 A

incoming checks

processed checks

5

12. Trigger fired in OpenWhisk

4. Docker action parses image with OCR

5. Extracted info stored back to Cloudant

OpenWhisk

Page 25: Build a cloud native app with OpenWhisk

@DanielKrookOpenWhisk.org

More examples: Smart home IoT, mobile banking

github.com/openwhisk/awesome-openwhisk

Project OpenFridge: Improving customer service with event driven IoT

Project OpenChecks

Page 26: Build a cloud native app with OpenWhisk

Summary

Page 27: Build a cloud native app with OpenWhisk

@DanielKrookOpenWhisk.org

What you learned today

• We’re in the early days of an evolution that is empowering developers to write cloud native applications better, faster, and cheaper

• OpenWhisk provides an open source platform to enable cloud native, serverless, event driven applications

• Bluemix provides a hosted instance of OpenWhisk that you can use to get started (and offers integration with a catalog of services)

Page 28: Build a cloud native app with OpenWhisk

@DanielKrookOpenWhisk.org

Try OpenWhisk in hosted on IBM Bluemix

bluemix.net

Page 29: Build a cloud native app with OpenWhisk

@DanielKrookOpenWhisk.org

Join us to build a cloud native platform for the future!

OpenWhisk.org