IBM OpenWhisk presentation and demo for developerWorks TV on December 14, 2016.
https://developer.ibm.com/tv/build-a-cloud-native-app-with-apache-openwhisk/
New cloud programming models enabled by serverless architectures are emerging, allowing developers to focus more sharply on creating their applications and less on managing their infrastructure. The OpenWhisk project started by IBM provides an open source platform to enable these cloud native, event driven applications.
At this live coding event, Daniel Krook provide an overview of serverless architectures, introduce the OpenWhisk programming model, and then deploy an OpenWhisk application on IBM Bluemix, while you watch, step-by-step.
Daniel Krook, Senior Software Engineer, IBM
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
Build a cloud native app with OpenWhisk
1. Build a cloud native
app with OpenWhisk
@DanielKrook • Senior Software Engineer • IBM Cloud
OpenWhisk.org
2. @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 Bluemix
based on two hands on coding demos
4. @DanielKrookOpenWhisk.org
With serverless developers focus more on code, less on infrastructure
Bare
metal
Virtual
machines
Containers
Functions
Decreasing concern (and control) over stack implementation
Increasingfocusonbusinesslogic
5. @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)
6. @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
7. @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.
8. @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
9. @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 platform
that executes code
in response to events
11. @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
14. @DanielKrookOpenWhisk.org
Actions
Can be written in a variety of languages, such as
JavaScript, Python, Java, and Swift
A
function main(params) {
return { message: 'Hello, ' + params.name + ' from ' + params.place };
};
22. @DanielKrookOpenWhisk.org
OpenWhisk enables event driven applications
Event
Providers
Cloudant
GitHub
Weather
…
Which triggers execution of
associated OpenWhisk action
2
Slack
JS Swift Docker …
An event occurs, for example
• Commit pushed to GitHub repository
• Data changed in Cloudant
1
OpenWhisk
23. @DanielKrookOpenWhisk.org
OpenWhisk can implement REST microservices
Send HTTP request
HTTP GET
app.com/customers
1
Invoke OpenWhisk
action get-customers
Browser
Mobile App
Web App
2
JS Swift Docker …
OpenWhisk
API
Proxy
24. @DanielKrookOpenWhisk.org
Demo 2: Polyglot applications with data triggers
github.com/krook/dw-openwhisk-demo-2
Trigger
2
JavaScript
action
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
1
2. Trigger fired in OpenWhisk
4. Docker action parses image with OCR
5. Extracted info stored back to Cloudant
OpenWhisk
25. @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
27. @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)