{"id":14768,"date":"2016-06-30T22:50:47","date_gmt":"2016-06-30T19:50:47","guid":{"rendered":"http:\/\/www.altoros.com\/blog\/?p=14768"},"modified":"2019-05-07T18:40:05","modified_gmt":"2019-05-07T15:40:05","slug":"building-event-driven-architectures-with-openwhisk","status":"publish","type":"post","link":"https:\/\/www.altoros.com\/blog\/building-event-driven-architectures-with-openwhisk\/","title":{"rendered":"Building Event-Driven Architectures with OpenWhisk"},"content":{"rendered":"<div id=\"attachment_14085\" style=\"width: 160px\" class=\"wp-caption alignright\"><img decoding=\"async\" aria-describedby=\"caption-attachment-14085\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/05\/JP-Genovese-300x300.jpg\" alt=\"JP Genovese, Senior Cloud Foundry Field Engineer, Altoros\" width=\"150\" class=\"size-medium wp-image-14085\" \/><p id=\"caption-attachment-14085\" class=\"wp-caption-text\"><small>JP Genovese, Altoros<\/small><\/p><\/div>\n<p>Previously, we provided <a href=\"https:\/\/www.altoros.com\/blog\/introduction-to-ibm-bluemix-openwhisk\/\">an introduction to OpenWhisk<\/a>\u2014a distributed service for managing microservices. It allows developers to upload event handlers to a cloud service, then registers those handlers to respond to events. At the Austin meetup, Juan Pablo (JP) Genovese of Altoros provided a deeper insight into this platform and event-driven architectures in general.<\/p>\n<p><em>To paraphrase a popular saying, OpenWhisk is old whiskey in new bottles, er, containers.<\/em><\/p>\n<p>That attempt at poetic metaphor having failed, as <a href=\"https:\/\/www.ibm.com\/cloud\/openwhisk\" target=\"_blank\" rel=\"noopener noreferrer\">OpenWhisk<\/a> is indeed a profoundly new way within IBM&#8217;s Cloud Foundry-based Bluemix environment to handle <strong>event-driven microservices<\/strong>.<\/p>\n<p>&nbsp;<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_79_2 counter-hierarchy ez-toc-counter ez-toc-transparent ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.altoros.com\/blog\/building-event-driven-architectures-with-openwhisk\/#What_is_it\" >What is it?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.altoros.com\/blog\/building-event-driven-architectures-with-openwhisk\/#Time_to_code\" >Time to code!<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.altoros.com\/blog\/building-event-driven-architectures-with-openwhisk\/#Yes_it_supports_Docker\" >Yes, it supports Docker<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.altoros.com\/blog\/building-event-driven-architectures-with-openwhisk\/#Want_details_Watch_the_video\" >Want details? Watch the video!<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.altoros.com\/blog\/building-event-driven-architectures-with-openwhisk\/#Further_reading\" >Further reading:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.altoros.com\/blog\/building-event-driven-architectures-with-openwhisk\/#About_the_expert\" >About the expert<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"What_is_it\"><\/span>What is it?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>During his talk, JP noted that the wider concept of event-driven architectures (EDAs) has been around for decades, and has seen an evolution from the use of remote-procedure calls (RPCs) to the establishment of entire Service-Oriented Architectures (SOAs), stopped to REST, and are now used to launch modern-day microservices.<\/p>\n<p>In what&#8217;s termed an \u201cextreme loose coupling model,\u201d JP showed how EDAs can be represented generally by the following graphic:<\/p>\n<p><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/06\/OpenWhisk-History-Of-EDA.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/06\/OpenWhisk-History-Of-EDA.jpg\" alt=\"OpenWhisk-History-Of-EDA\" width=\"640\" class=\"aligncenter size-full wp-image-14797\" \/><\/a><\/p>\n<p>JP provided some background, mentioning Amazon Lambda and Google Cloud Functions as two early methods of spinning up serverless applications. Yet neither is open source and \u201cyou can&#8217;t really experiment with (them) and you can&#8217;t really understand how (they) work internally,\u201d he noted. OpenWhisk, in contrast, is <a href=\"https:\/\/github.com\/apache\/openwhisk\" target=\"_blank\" rel=\"noopener noreferrer\">community-driven<\/a>.<\/p>\n<p>He then presented a diagram familiar to members of the OpenWhisk community that shows Bluemix (and other parts of a potential service ecosystem) at the end of process deployments triggered by feeds:<\/p>\n<p><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/06\/OpenWhisk-Familiar.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/06\/OpenWhisk-Familiar.jpg\" alt=\"OpenWhisk-Familiar\" width=\"640\" class=\"aligncenter size-full wp-image-14798\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Time_to_code\"><\/span>Time to code!<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The actual code is pretty simple, he said, taking attendees through a few slides that are self-explanatory each step of the way.<\/p>\n<p>First, a couple of slides about the concepts involved here:<\/p>\n<p><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/06\/OpenWhisk-1.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/06\/OpenWhisk-1.jpg\" alt=\"OpenWhisk-1\" width=\"640\" class=\"aligncenter size-full wp-image-14799\" \/><\/a><\/p>\n<p><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/06\/OpenWhisk-2.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/06\/OpenWhisk-2.jpg\" alt=\"OpenWhisk-2\" width=\"640\" class=\"aligncenter size-full wp-image-14800\" \/><\/a><\/p>\n<p>Then, time to get it to run locally on your machine:<\/p>\n<p><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/06\/OpenWhisk-3.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/06\/OpenWhisk-3.jpg\" alt=\"OpenWhisk-3\" width=\"640\" class=\"aligncenter size-full wp-image-14801\" \/><\/a><\/p>\n<p>Time to install the database (OpenWhisk runs on Cloudant, and on CouchDB as shown in this example):<\/p>\n<blockquote><p><em>JP provided a lighthearted moment while discussing what to do after installing the database: \u201cI do love whiskey, so I named my admin user after lagavulin\u2014my favorite whiskey, from the island of Islay, and which is absolutely awesome\u2014and the password \u2018singlemalt\u2019.\u201d<\/em><\/p><\/blockquote>\n<p>Duly noted:<\/p>\n<p><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/06\/OpenWhisk-4.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/06\/OpenWhisk-4.jpg\" alt=\"OpenWhisk-4\" width=\"640\" class=\"aligncenter size-full wp-image-14802\" \/><\/a><\/p>\n<p>Time to deploy! (He noted that even with this simplicity, one should expect 20 to 30 minutes for it to run, as it installs all the packages needed for it to run.)<\/p>\n<p><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/06\/OpenWhisk-5.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/06\/OpenWhisk-5.jpg\" alt=\"OpenWhisk-5\" width=\"640\" class=\"aligncenter size-full wp-image-14803\" \/><\/a><\/p>\n<p>JP then showed the code for basic usage, for asynchronous calling (a key aspect, of course, when dealing with events), and setting a parameter.<\/p>\n<p><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/06\/OpenWhisk-6.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/06\/OpenWhisk-6.jpg\" alt=\"OpenWhisk-6\" width=\"640\" class=\"aligncenter size-full wp-image-14804\" \/><\/a><\/p>\n<p><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/06\/OpenWhisk-7.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/06\/OpenWhisk-7.jpg\" alt=\"OpenWhisk-7\" width=\"640\" class=\"aligncenter size-full wp-image-14809\" \/><\/a><\/p>\n<p><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/06\/OpenWhisk-8.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/06\/OpenWhisk-8.jpg\" alt=\"OpenWhisk-8\" width=\"640\" class=\"aligncenter size-full wp-image-14806\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Yes_it_supports_Docker\"><\/span>Yes, it supports Docker<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Juan Pablo concluded by noting that yes, OpenWhisk does support Docker, something that can be invoked easily.<\/p>\n<p>Additionally, for organizations working within IBM&#8217;s Watson environment, \u201ctriggers are fired by a dictionary of key-value elements,\u201d JP noted. \u201cWhen an element satisfies a condition, the trigger fires. When you want an execution after the trigger fires, you define a rule. All this then creates an event.\u201d<\/p>\n<p>For more, check out the <a href=\"https:\/\/github.com\/apache\/openwhisk\" target=\"_blank\" rel=\"noopener noreferrer\">OpenWhisk GitHub repo<\/a>. The product is outlined in many nice presentations\u2014<a href=\"https:\/\/www.slideshare.net\/AnimeshSingh\/introducing-openwhisk-cloud-native-event-driven-serverless-micrsoservices-framework?qid=f50203ce-42d6-4376-8ca6-342a8a76c965&#038;v=&#038;b=&#038;from_search=1\" target=\"_blank\" rel=\"noopener noreferrer\">here&#8217;s one<\/a> from prominent IBM Bluemix Lead Architect <a href=\"https:\/\/www.linkedin.com\/in\/animeshsingh1\">Animesh Singh<\/a>.<\/p>\n<p>Asynchronous. Event-Driven. Open. Cloud Foundry. OpenWhisk. Follow JP&#8217;s teaching, and it will be time to enjoy a wee dram. \ud83d\ude09<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Want_details_Watch_the_video\"><\/span>Want details? Watch the video!<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<table width=\"100%\">\n<tbody>\n<tr>\n<td>\n<div style=\"float: right; width: 45%; padding-left: 15px; font-size: 14px;\">\n<p><strong>Table of contents<\/strong><\/p>\n<ol>\n<li style=\"margin-bottom: 6px;\">What is a reaction? (<a href=\"#wistia_4o2chjkss7?time=314\">5&#8217;14&#8221;<\/a>)<\/li>\n<li style=\"margin-bottom: 6px;\">What is OpenWhisk? (<a href=\"#wistia_4o2chjkss7?time=645\">10&#8217;45&#8221;<\/a>)<\/li>\n<li style=\"margin-bottom: 6px;\">Basic concepts with OpenWhisk (<a href=\"#wistia_4o2chjkss7?time=870\">14&#8217;30&#8221;<\/a>)<\/li>\n<li style=\"margin-bottom: 6px;\">How to run it locally (<a href=\"#wistia_4o2chjkss7?time=1140\">19&#8217;00&#8221;<\/a>)<\/li>\n<li style=\"margin-bottom: 6px;\">Why is CouchDB needed? (<a href=\"#wistia_4o2chjkss7?time=1245\">20&#8217;45&#8221;<\/a>)<\/li>\n<li style=\"margin-bottom: 6px;\">Deployment process (<a href=\"#wistia_4o2chjkss7?time=1350\">22&#8217;30&#8221;<\/a>)<\/li>\n<li style=\"margin-bottom: 6px;\">OpenWhisk basic usage (<a href=\"#wistia_4o2chjkss7?time=1395\">23&#8217;15&#8221;<\/a>)<\/li>\n<li style=\"margin-bottom: 6px;\">Working code parameters (<a href=\"#wistia_4o2chjkss7?time=1510\">25&#8217;10&#8221;<\/a>)<\/li>\n<li style=\"margin-bottom: 6px;\">How to add Docker (<a href=\"#wistia_4o2chjkss7?time=1550\">25&#8217;50&#8221;<\/a>)<\/li>\n<\/ol>\n<\/div>\n<p><script charset=\"ISO-8859-1\" src=\"\/\/fast.wistia.com\/assets\/external\/E-v1.js\" async><\/script><\/p>\n<div class=\"wistia_embed wistia_async_4o2chjkss7\" style=\"height:320px;width:440px\">&nbsp;<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<br \/>\n<small>See the full slide deck by Juan Pablo for OpenWhisk&#8217;s main concepts, the code for basic usage and running it locally, asynchronous calling, etc.<\/small><\/p>\n<p><center><iframe loading=\"lazy\" src=\"\/\/www.slideshare.net\/slideshow\/embed_code\/key\/Jwpb4ESFtvT89F\" width=\"595\" height=\"485\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" style=\"border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;\" allowfullscreen><\/iframe><\/center><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Further_reading\"><\/span>Further reading:<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/introduction-to-ibm-bluemix-openwhisk\/\">Introduction to IBM Bluemix OpenWhisk<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/ibm-bluemix-openwhisk-101-developing-a-microservice\/\">IBM Bluemix OpenWhisk 101: Developing a Microservice<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/how-to-use-openwhisk-docker-actions-in-ibm-bluemix\/\">How to Use OpenWhisk Docker Actions in IBM Bluemix<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"About_the_expert\"><\/span>About the expert<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div>\n<div style=\"float: right;\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/06\/JP-Genovese-Senior-Cloud-Foundry-Field-Engineer-Altoros-bio.png\" alt=\"JP Genovese, Senior Cloud Foundry Field Engineer, Altoros bio\" width=\"150\" height=\"150\" class=\"aligncenter size-full wp-image-14794\" \/>\n<\/div>\n<div style=\"width: 600px;\"><small><strong>Juan Pablo Genovese<\/strong> is a Field Cloud Foundry Engineer at Altoros. He has been developing software for 19 years, and as a Jack of All Trades, has also been into DevOps work. Juan Pablo is focused on training new DevOps at Altoros and identifying the needs of the community. His professional interests include high performance \/ high availability solutions with cloud technologies, as well as designing architectures that meet customer expectations.<\/small>\n<\/div>\n<\/div>\n<p>&nbsp;<\/p>\n<hr\/>\n<p><center><small>The post was written by Roger Strukhoff and edited by <a href=\"https:\/\/www.altoros.com\/blog\/author\/alex\/\">Alex Khizhniak<\/a>.<\/small><\/center><\/p>\n","protected":false},"excerpt":{"rendered":"<p id=\"caption-attachment-14085\" class=\"wp-caption-text\">JP Genovese, Altoros<\/p>\n<p>Previously, we provided an introduction to OpenWhisk\u2014a distributed service for managing microservices. It allows developers to upload event handlers to a cloud service, then registers those handlers to respond to events. At the Austin meetup, Juan Pablo (JP) Genovese of Altoros provided a deeper insight into [&#8230;]<\/p>\n","protected":false},"author":9,"featured_media":14807,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":"","_links_to":"","_links_to_target":""},"categories":[7],"tags":[873,187,117,146,750],"class_list":["post-14768","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news-and-opinion","tag-cloud-native","tag-ibm-bluemix","tag-iot","tag-microservices","tag-openwhisk"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Building Event-Driven Architectures with OpenWhisk | Altoros<\/title>\n<meta name=\"description\" content=\"Senior Cloud Foundry Field Engineer JP Genovese takes meetup attendees through a bit of history and a bit more of setup, build, deploy, and run.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.altoros.com\/blog\/building-event-driven-architectures-with-openwhisk\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Building Event-Driven Architectures with OpenWhisk | Altoros\" \/>\n<meta property=\"og:description\" content=\"Altoros Senior Cloud Foundry Field Engineer JP Genovese takes meetup attendees through a bit of history and a bit more of setup, build, deploy, and run.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.altoros.com\/blog\/building-event-driven-architectures-with-openwhisk\/\" \/>\n<meta property=\"og:site_name\" content=\"Altoros\" \/>\n<meta property=\"article:published_time\" content=\"2016-06-30T19:50:47+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-05-07T15:40:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/06\/OpenWhisk-featured.gif\" \/>\n\t<meta property=\"og:image:width\" content=\"640\" \/>\n\t<meta property=\"og:image:height\" content=\"360\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/gif\" \/>\n<meta name=\"author\" content=\"Roger Strukhoff\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Roger Strukhoff\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.altoros.com\/blog\/building-event-driven-architectures-with-openwhisk\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/building-event-driven-architectures-with-openwhisk\/\",\"name\":\"Building Event-Driven Architectures with OpenWhisk | Altoros\",\"isPartOf\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/building-event-driven-architectures-with-openwhisk\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/building-event-driven-architectures-with-openwhisk\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/06\/OpenWhisk-featured.gif\",\"datePublished\":\"2016-06-30T19:50:47+00:00\",\"dateModified\":\"2019-05-07T15:40:05+00:00\",\"author\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/56ea20d6f280f7a442e89e5884b06fd8\"},\"description\":\"Altoros Senior Cloud Foundry Field Engineer JP Genovese takes meetup attendees through a bit of history and a bit more of setup, build, deploy, and run.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/building-event-driven-architectures-with-openwhisk\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.altoros.com\/blog\/building-event-driven-architectures-with-openwhisk\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/building-event-driven-architectures-with-openwhisk\/#primaryimage\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/06\/OpenWhisk-featured.gif\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/06\/OpenWhisk-featured.gif\",\"width\":640,\"height\":360},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.altoros.com\/blog\/building-event-driven-architectures-with-openwhisk\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.altoros.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Building Event-Driven Architectures with OpenWhisk\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\",\"url\":\"https:\/\/www.altoros.com\/blog\/\",\"name\":\"Altoros\",\"description\":\"Insight\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.altoros.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/56ea20d6f280f7a442e89e5884b06fd8\",\"name\":\"Roger Strukhoff\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/roger_strukhoff_user_icon-150x150.jpg\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/roger_strukhoff_user_icon-150x150.jpg\",\"caption\":\"Roger Strukhoff\"},\"description\":\"Roger Strukhoff is Director of Research at Altoros. He also serves as Executive Director of the Tau Institute for Global ICT Research, Conference Chair of Cloud Expo and Things Expo, Co-Chair of the Big Data World Forum, and Open-Source Chair for the global DCD Converged conference series. He received his BA from Knox College, and conducted MBA studies at California State University\/East Bay. Previously in his career, he was VP of New Products at International Data Group and Director of Global Publications at TIBCO Software.\",\"url\":\"https:\/\/www.altoros.com\/blog\/author\/rstrukhoff\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Building Event-Driven Architectures with OpenWhisk | Altoros","description":"Senior Cloud Foundry Field Engineer JP Genovese takes meetup attendees through a bit of history and a bit more of setup, build, deploy, and run.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.altoros.com\/blog\/building-event-driven-architectures-with-openwhisk\/","og_locale":"en_US","og_type":"article","og_title":"Building Event-Driven Architectures with OpenWhisk | Altoros","og_description":"Altoros Senior Cloud Foundry Field Engineer JP Genovese takes meetup attendees through a bit of history and a bit more of setup, build, deploy, and run.","og_url":"https:\/\/www.altoros.com\/blog\/building-event-driven-architectures-with-openwhisk\/","og_site_name":"Altoros","article_published_time":"2016-06-30T19:50:47+00:00","article_modified_time":"2019-05-07T15:40:05+00:00","og_image":[{"width":640,"height":360,"url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/06\/OpenWhisk-featured.gif","type":"image\/gif"}],"author":"Roger Strukhoff","twitter_misc":{"Written by":"Roger Strukhoff","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.altoros.com\/blog\/building-event-driven-architectures-with-openwhisk\/","url":"https:\/\/www.altoros.com\/blog\/building-event-driven-architectures-with-openwhisk\/","name":"Building Event-Driven Architectures with OpenWhisk | Altoros","isPartOf":{"@id":"https:\/\/www.altoros.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.altoros.com\/blog\/building-event-driven-architectures-with-openwhisk\/#primaryimage"},"image":{"@id":"https:\/\/www.altoros.com\/blog\/building-event-driven-architectures-with-openwhisk\/#primaryimage"},"thumbnailUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/06\/OpenWhisk-featured.gif","datePublished":"2016-06-30T19:50:47+00:00","dateModified":"2019-05-07T15:40:05+00:00","author":{"@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/56ea20d6f280f7a442e89e5884b06fd8"},"description":"Altoros Senior Cloud Foundry Field Engineer JP Genovese takes meetup attendees through a bit of history and a bit more of setup, build, deploy, and run.","breadcrumb":{"@id":"https:\/\/www.altoros.com\/blog\/building-event-driven-architectures-with-openwhisk\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.altoros.com\/blog\/building-event-driven-architectures-with-openwhisk\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/building-event-driven-architectures-with-openwhisk\/#primaryimage","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/06\/OpenWhisk-featured.gif","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/06\/OpenWhisk-featured.gif","width":640,"height":360},{"@type":"BreadcrumbList","@id":"https:\/\/www.altoros.com\/blog\/building-event-driven-architectures-with-openwhisk\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.altoros.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Building Event-Driven Architectures with OpenWhisk"}]},{"@type":"WebSite","@id":"https:\/\/www.altoros.com\/blog\/#website","url":"https:\/\/www.altoros.com\/blog\/","name":"Altoros","description":"Insight","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.altoros.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/56ea20d6f280f7a442e89e5884b06fd8","name":"Roger Strukhoff","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/roger_strukhoff_user_icon-150x150.jpg","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/roger_strukhoff_user_icon-150x150.jpg","caption":"Roger Strukhoff"},"description":"Roger Strukhoff is Director of Research at Altoros. He also serves as Executive Director of the Tau Institute for Global ICT Research, Conference Chair of Cloud Expo and Things Expo, Co-Chair of the Big Data World Forum, and Open-Source Chair for the global DCD Converged conference series. He received his BA from Knox College, and conducted MBA studies at California State University\/East Bay. Previously in his career, he was VP of New Products at International Data Group and Director of Global Publications at TIBCO Software.","url":"https:\/\/www.altoros.com\/blog\/author\/rstrukhoff\/"}]}},"_links":{"self":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/14768","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/comments?post=14768"}],"version-history":[{"count":26,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/14768\/revisions"}],"predecessor-version":[{"id":42893,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/14768\/revisions\/42893"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media\/14807"}],"wp:attachment":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media?parent=14768"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/categories?post=14768"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/tags?post=14768"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}