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.

OpenWhisk - Serverless Architecture


Published on

Serverless architectures are one of the hottest trends in cloud computing this year, and for good reason. There are several technical capabilities and business factors coming together to make this approach compelling from both an application development and deployment cost perspective. The new OpenWhisk project provides an open source platform to enable these cloud-native, event-driven applications.

This talk will lay out the technical and business drivers behind the rise of serverless architectures, provide an introduction to the OpenWhisk open source project (and describe how it differs from other services like AWS Lambda), and give a demonstration showing how to start developing with this new cloud computing model using the OpenWhisk implementation available on IBM Bluemix.

Lightning talk and lab presented by IBM Cloud Software Engineer, Andrew Bodine.

Published in: Technology
  • Login to see the comments

OpenWhisk - Serverless Architecture

  1. 1. Serverless apps with OpenWhisk Cloud native • Event driven • Microservices Andrew Bodine • Software Engineer • IBM Cloud • @bodine_andrew
  2. 2. What you will learn today • How cloud has evolved to enable developers to write cloud native applications better, faster, and cheaper using serverless technology. • How OpenWhisk provides an open source platform to enable cloud native, serverless, event driven applications. • How to get started developing with OpenWhisk on Bluemix, or find out more about the underlying open source serverless platform.
  3. 3. @DanielKrook What makes serverless, event driven computing so compelling?
  4. 4. Cloud evolution means developers can write apps better, faster, and cheaper Bare metal Virtual machines Containers Functions Decreasing concern (and control) over stack implementation Increasingfocusonbusinesslogic
  5. 5. Newer workloads are a better fit for event driven programming Execute app logic in response to database triggers Execute app logic in response to sensor data Execute app logic in response to cognitive trends Execute app logic in response to scheduled tasks Provide easy server-side backend for mobile app
  6. 6. Problem: It’s expensive to scale microservices Explosion in number of container / processes: 1. Increase of infrastructure cos footprint 2. Increase of operational management cost and complexity Region BRegion A Break-down into microservices Make each micro service HA Protect against regional outages Monolithic application
  7. 7. Serverless can handle many cloud native app 12 Factors I Codebase Handled by developer (Manage versioning of functions on their own) 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 are immutable and internally versioned) VI Processes Handled by platform (Single stateless containers often used) VII Port binding Handled by platform (Actions or functions are automatically discovered) VIII Concurrency Handled by platform (Process model is hidden and scales in response to demand) IX Disposability Handled by platform (Lifecycle is hidden from the user, fast startup and elastic scale is prioritized) X Dev/prod parity Handled by developer (The developer is the deployer. Scope of what differs is narrower) XI Logs Handled by platform (Developer writes to console.log, platform handles log streaming) XII Admin processes Handled by developer (No distinction between one off processes and long running)
  8. 8. Problem: Programming and pricing models aren’t ideal Continuous polling needed in the absence of an event driven programming model Charged for resources, even when idle Worries persist about capacity management Swift Application Container VMCF 2 Polling 1b Request 1a
  9. 9. Cost model offers a better match between app and resources Applications charged by compute time (millisecond) rather than reserved memory (GB/hour). While many applications must still be deployed in a daemon model, serverless provides an alternative that can mean substantial cost savings for a variety of event driven workloads. Greater linkage between cloud resources used and business operations executed.
  10. 10. Technological and business factors make serverless compelling Serverless platforms and frameworks 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
  11. 11. @DanielKrook Introducing OpenWhisk
  12. 12. OpenWhisk in a nutshell OpenWhisk is a cloud platform that executes code in response to events OpenWhisk
  13. 13. OpenWhisk is different than other hosted services Serverless deployment and operations model Optimized utilization, fine grained metering at any scale Flexible programming model with powerful tooling Open source and open ecosystem (moving to Apache) Ability to run in public, private, and hybrid models OpenWhisk
  14. 14. OpenWhisk supports many growing workloads OpenWhisk can help power various mobile, web and IoT app use cases by simplifying the programming model of orchestrating various services using events without a dedicated backend. Digital app workloads Big Data/Analytics pipeline Complex data pipelines for Big Data/Analytics tasks can be scripted using changes in data services or streams for near real-time analytics and feedback. DevOps and infrastructure as code OpenWhisk can be used to automate DevOps pipelines based on events triggered from successful builds, or completed staging, or a go-live event. Microservices builder OpenWhisk can be used to easily build microservices given the footprint and programming model desired by microservices
  15. 15. @DanielKrook The OpenWhisk programming model
  16. 16. Triggers, actions, rules (and packages) Data sources define the events they emit as triggers. Developers associate actions to handle the events via rules. T A R
  17. 17. Triggers A class of events that can occurT Social events Data changes Device readings Location updates User input
  18. 18. Actions Code that runs in response to an event (that is, an event handler) A
  19. 19. Actions Can be written in a variety of languages, such as JavaScript, Python, Java, and Swift A function main(params) { return { message: 'Hello, ' + + ' from ' + }; };
  20. 20. Actions Or any other language by packaging with DockerA
  21. 21. 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
  22. 22. Rules An association of a trigger to an action in a many to many mapping. R R := T A
  23. 23. 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
  24. 24. @DanielKrook OpenWhisk in action
  25. 25. The OpenWhisk execution model Pool of actions Swift DockerJS Trigger 1 Running action Running action Running action 3 OpenWhisk Engine 2 A T AAA
  26. 26. @DanielKrook Demo 1: Create a timer triggered action
  27. 27. Demo 1: Timer triggered action Trigger 1 Running action 2 T A Cron syntax alarm 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
  28. 28. 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
  29. 29. OpenWhisk can implement REST microservices Send HTTP request HTTP GET 1 Invoke OpenWhisk action get-customers Browser Mobile App Web App 2 JS Swift Docker … OpenWhisk API Proxy
  30. 30. @DanielKrook Demo 2: Create a Slack bot
  31. 31. Demo 2: Create a Slack bot GET /register POST /command POST /event Register action Event action Command action 2 OpenWhisk Engine 1 AAA API Proxy Register the bot Respond to direct messages Respond to slash commands
  32. 32. @DanielKrook OpenWhisk high level implementation architecture
  33. 33. OpenWhisk design principles 1. Provide an open interface for event providers 2. Offer polyglot support and simple extensibility for new runtimes 3. Support higher level constructs as appropriate (e.g. action sequences) 4. Scale dynamically on a per request basis 5. Enable sharing of actions and event providers 6. Leverage best of breed open source software (Docker, Kafka, Consul, …) 7. Use the Apache 2 License
  34. 34. @DanielKrook OpenWhisk under the hood: A deeper look 1. Entering the system: nginx 2. Really entering the system: Controller 3. Authentication and Authorization: CouchDB 4. Getting the action: CouchDB… again 5. Who’s there to invoke the action: Consul 6. Please form a line: Kafka 7. Actually invoking the code already: Invoker 8. Storing the results: Yes… CouchDB again
  35. 35. @DanielKrook Summary
  36. 36. 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)
  37. 37. Experiment with OpenWhisk on Bluemix
  38. 38. @DanielKrook Backup
  39. 39. Join us to build a cloud native platform for the future! #openwhisk
  40. 40. Watson IOT OpenWhisk Customer registry Shipping system SendGrid Service reports actions IBM Cloud LOB, SoR systems & databases Need a new filter Email: Filter on its way!
  41. 41. analyze reading OpenWhisk create order alert customer alarm changes changes service order appliance feed Watson IoT A A AT T T T P P P