Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Building serverless applications with Apache OpenWhisk

1,240 views

Published on

IBM presentation at the O'Reilly Open Source Convention in Austin, Texas on May 10, 2017.
https://conferences.oreilly.com/oscon/oscon-tx/public/schedule/detail/61295

Apache OpenWhisk on IBM Bluemix provides a powerful and flexible environment for deploying cloud-native applications driven by data, message, and API call events. Daniel Krook explains why serverless architectures are attractive for many emerging cloud workloads and when you should consider OpenWhisk for your next project. Daniel then shows you how to get started with OpenWhisk on Bluemix right away, using several samples on GitHub.

Daniel Krook, Software Architect, IBM

Published in: Software

Building serverless applications with Apache OpenWhisk

  1. 1. © 2017 IBM Corporation l Interconnect 2017 IBM Bluemix Apache OpenWhisk Building serverless applications with Apache OpenWhisk @DanielKrook Daniel Krook Software Architect, IBM
  2. 2. IBM Bluemix Apache OpenWhisk@DanielKrook Increasingfocusonbusinesslogic Decreasing concern (and control) over stack implementation Bare Metal VM VM VM Virtual machines Functions Containers Serverless developers focus more on code, less on infrastructure
  3. 3. IBM Bluemix Apache OpenWhisk@DanielKrook Monolithic Application Break-down into microservices Make each microservice HA Protect against regional outage Region A Region B Microservices can be hard to manage at scale
  4. 4. IBM Bluemix Apache OpenWhisk@DanielKrook Emerging workloads are a good fit for event-driven programming Execute logic in response to database change Perform analytics on sensor input messages Provide cognitive computing via chatbots Schedule tasks performed for a short time Invoke autoscaled APIs and mobile backends
  5. 5. IBM Bluemix Apache OpenWhisk@DanielKrook Memory allocated (MB) Time executing (milliseconds) Instances executing simultaneously (count) Cloud resource cost better matches business value gained Not a silver bullet, but this can result in substantial savings for many workloads New cost models more accurately charge for usage
  6. 6. IBM Bluemix Apache OpenWhisk@DanielKrook OpenWhisk is a cloud platform that executes code in response to events OpenWhisk enables these serverless, event-driven workloads Provides serverless deployment and operations model Runs code only on-demand on a per-request basis Optimized utilization, fine-grained metering at any scale Flexible, extensible, polyglot programming model Open source and open ecosystem (Apache Incubator) Ability to run in public, private, and hybrid models
  7. 7. IBM Bluemix Apache OpenWhisk@DanielKrook Results Developers work with packages, triggers, actions, and rules Package (feed) Packages provide integration with external event sources P Trigger (event) T Data sources define events they emit as Triggers Rule (map)R Action (function) A Developers map Actions to Triggers via Rules
  8. 8. IBM Bluemix Apache OpenWhisk@DanielKrook Apache Incubator OpenWhisk is built on solid open source foundations
  9. 9. IBM Bluemix Apache OpenWhisk@DanielKrook Bluemix provides management, tooling, and monitoring
  10. 10. IBM Bluemix Apache OpenWhisk@DanielKrook Bluemix provides management, tooling, and monitoring
  11. 11. IBM Bluemix Apache OpenWhisk@DanielKrook Bluemix provides management, tooling, and monitoring
  12. 12. IBM Bluemix Apache OpenWhisk@DanielKrook Sign up for an account at bluemix.net, then download CLI
  13. 13. © 2017 IBM Corporation l Interconnect 2017 IBM Bluemix Apache OpenWhisk programming model
  14. 14. IBM Bluemix Apache OpenWhisk@DanielKrook 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
  15. 15. IBM Bluemix Apache OpenWhisk@DanielKrook Triggers A class of events that can occurT Social events Data changes Device readings Location updates User input
  16. 16. IBM Bluemix Apache OpenWhisk@DanielKrook Actions Code that runs in response to an event (that is, an event handler) A
  17. 17. IBM Bluemix Apache OpenWhisk@DanielKrook 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 }; };
  18. 18. IBM Bluemix Apache OpenWhisk@DanielKrook Actions Or any other language by packaging with DockerA
  19. 19. IBM Bluemix Apache OpenWhisk@DanielKrook Actions Can be composed to create sequences that increase flexibility and foster reuse A AA := A1 + A2 + A3 AB := A2 + A1 + A3 AC := A3 + A1 + A2
  20. 20. IBM Bluemix Apache OpenWhisk@DanielKrook Rules An association of a trigger to an action in a many to many mapping. R R := T A
  21. 21. IBM Bluemix Apache OpenWhisk@DanielKrook Packages A shared collection of triggers and actionsP A A read write T changes A translate A forecast A post T topic Open Source A myAction T myFeed Yours T commit Third Party
  22. 22. © 2017 IBM Corporation l Interconnect 2017 IBM Bluemix Apache OpenWhisk in action
  23. 23. IBM Bluemix Apache OpenWhisk@DanielKrook The OpenWhisk execution model Pool of actions Swift DockerJS Trigger 1 Running action Running action Running action 3 OpenWhisk Engine 2 A T AAA
  24. 24. IBM Bluemix Apache OpenWhisk@DanielKrook Demo 1: Your first trigger, action, and rule $ wsk action create handler handler.js github.com/IBM/openwhisk-action-trigger-rule $ wsk action invoke --blocking handler $ wsk trigger create every-20-seconds --feed /whisk.system/alarms/alarm --param cron "*/20 * * * * *" --param maxTriggers 30 $ wsk action invoke --blocking handler $ wsk rule create invoke-periodically every-20-seconds handler Trigger 1 Running action 2 T A 1. Cron syntax alarm 2. Log the current time
  25. 25. IBM Bluemix Apache OpenWhisk@DanielKrook Demo 2: Database change triggered action github.com/IBM/openwhisk-cloudant-trigger
  26. 26. IBM Bluemix Apache OpenWhisk@DanielKrook Demo 3: HTTP API request triggered action github.com/IBM/openwhisk-rest-api-trigger
  27. 27. IBM Bluemix Apache OpenWhisk@DanielKrook Other sample applications github.com/openwhisk/awesome-openwhisk Project OpenFridge: Improving customer service with event driven IoT Project OpenChecks github.com/openwhisk/awesome-openwhisk
  28. 28. IBM Bluemix Apache OpenWhisk@DanielKrook Managed service on
 IBM Bluemix bluemix.net/openwhisk Delivered as
 Open source via Apache openwhisk.org Get started on Bluemix, or explore the open source project github.com/openwhisk slack.openwhisk.org twitter.com/openwhisk medium.com/openwhisk
  29. 29. IBM Bluemix Apache OpenWhisk@DanielKrook See more sample apps on GitHub github.com/ibm Reach out to us team developer.ibm.com/code/work-with-us Or, work with an IBM Code developer advocate

×