Upload
daniel-krook
View
156
Download
1
Embed Size (px)
Citation preview
Build a cloud native app with OpenWhisk
@DanielKrook • Senior Software Engineer • IBM Cloud
OpenWhisk.org
@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
Serverless architectures are drawing
interest due to a combination of
compelling technical and business factors
@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
@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)
@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
@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.
@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
@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
The OpenWhiskprogramming model
@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
@DanielKrookOpenWhisk.org
Triggers
A class of events that can occurT
Social events
Data changes
Device readings Location updates
User input
@DanielKrookOpenWhisk.org
Actions
Code that runs in response to an event(that is, an event handler)
A
@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 };
};
@DanielKrookOpenWhisk.org
Actions
Or any other language by packaging with DockerA
@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
@DanielKrookOpenWhisk.org
Rules
An association of a trigger to an action in a many to many mapping.
R
R := T A
@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
OpenWhiskin action
@DanielKrookOpenWhisk.org
The OpenWhisk execution model
Pool of actions
Swift DockerJS
Trigger
1
Runningaction
Runningaction
Runningaction
3
OpenWhiskEngine
2 A
T
AAA
@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
@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
@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
@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
@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
Summary
@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)
@DanielKrookOpenWhisk.org
Try OpenWhisk in hosted on IBM Bluemix
bluemix.net
@DanielKrookOpenWhisk.org
Join us to build a cloud native platform for the future!
OpenWhisk.org