| <!-- |
| # Licensed to the Apache Software Foundation (ASF) under one or more contributor |
| # license agreements; and to You under the Apache License, Version 2.0. |
| --> |
| |
| |
| <!DOCTYPE html> |
| |
| <html> |
| <head> |
| <meta charset="utf-8"> |
| <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1"> |
| |
| <link rel="apple-touch-icon" sizes="180x180" href="/images/favicon/apple-touch-icon.png"> |
| <link rel="icon" type="image/png" href="/images/favicon/favicon-32x32.png" sizes="32x32"> |
| <link rel="icon" type="image/png" href="/images/favicon/favicon-16x16.png" sizes="16x16"> |
| <link rel="manifest" href="/images/favicon/manifest.json"> |
| <link rel="mask-icon" href="/images/favicon/safari-pinned-tab.svg"> |
| <link rel="shortcut icon" href="/images/favicon/favicon.ico"> |
| <meta name="msapplication-config" content="/images/favicon/browserconfig.xml"> |
| <meta name="theme-color" content="#ffffff"> |
| |
| <title>Apache OpenWhisk is a serverless, open source cloud platform</title> |
| <link href="https://fonts.googleapis.com/css?family=Roboto:100,100i,300,300i,400,400i,500,500i,700,700i,900,900i" rel="stylesheet"> |
| <link rel="stylesheet" href="/css/main-v1.css?v=1.13"> |
| <!-- Load Index, Menu & collapsible support --> |
| <script type="text/javascript"> |
| |
| function applyCollapsible() { |
| addListenersToIndex(); |
| addListenersToSections(); |
| } |
| |
| function toggleReferencedSection( parentId, expand ) |
| { |
| console.log( "toggleReferencedSection(): parentId=" + parentId + " expand=" + expand); |
| if (parentId !== ""){ |
| sectionName = parentId.replace("index", "section"); |
| //console.log( "toggleReferencedSection(): sectionName=" + sectionName); |
| sectionHeader = document.getElementById(sectionName); |
| section = sectionHeader.nextElementSibling; |
| if(expand){ |
| sectionHeader.style.backgroundImage = "url('../images/elements/circle-minus.png')"; |
| section.style.display = "block"; |
| } |
| else{ |
| sectionHeader.style.backgroundImage = "url('../images/elements/circle-plus.png')"; |
| section.style.display = "none"; |
| } |
| } |
| } |
| |
| function addListenersToIndex() |
| { |
| var coll = document.getElementsByClassName("index-menu-toggle"); |
| var i; |
| |
| // Apply expandable (arrows) to all menuitems with a sibling |
| for (i = 0; i < coll.length; i++) { |
| var sibling = coll[i].nextElementSibling; |
| |
| if(sibling!==null){ |
| coll[i].style.listStyleImage = "url('../images/elements/arrow-right-12px.png')"; |
| // make room on left for image/icon (top right bottom left) |
| sibling.style.padding = "0px 0px 0px 20px"; |
| |
| if(sibling.classList.contains('index-menu-start-open')){ |
| coll[i].style.listStyleImage = "url('../images/elements/arrow-down-12px.png')"; |
| sibling.style.display = "block"; |
| } |
| } |
| |
| // Set "click" event listener on all menuitems |
| coll[i].addEventListener("click", function() { |
| var sibling = this.nextElementSibling; |
| // toggle menu open/close states |
| if(sibling!==null){ |
| if (sibling.style.display === "block") { |
| this.style.listStyleImage = "url('../images/elements/arrow-right-12px.png')"; |
| sibling.style.display = "none"; |
| |
| if (this.id !== ""){ |
| toggleReferencedSection(this.id, false ) |
| } |
| } else { |
| this.style.listStyleImage = "url('../images/elements/arrow-down-12px.png')"; |
| sibling.style.display = "block"; |
| |
| if (this.id !== ""){ |
| toggleReferencedSection(this.id, true ) |
| } |
| } |
| } |
| |
| }); |
| } |
| } |
| |
| function addListenersToSections() |
| { |
| var coll = document.getElementsByClassName("section-toggle"); |
| var i; |
| |
| // Apply exapandable (arrows) to all menuitems with a sibling |
| for (i = 0; i < coll.length; i++) { |
| var sibling = coll[i].nextElementSibling; |
| |
| if(sibling!==null){ |
| if(sibling.classList.contains("section-toggle-start-open")){ |
| coll[i].style.backgroundImage = "url('../images/elements/circle-minus.png')"; |
| sibling.style.display = "block"; |
| } else if (sibling.classList.contains("section-toggle-start-closed")){ |
| coll[i].style.backgroundImage = "url('../images/elements/circle-plus.png')"; |
| sibling.style.display = "none"; |
| } else { |
| //console.log( "addListenersToSections(): No Toggle style found; default to open"); |
| coll[i].style.backgroundImage = "url('../images/elements/circle-minus.png')"; |
| sibling.style.display = "block"; |
| } |
| } |
| |
| // Set "click" event listener on all menuitems |
| coll[i].addEventListener("click", function() { |
| var sibling = this.nextElementSibling; |
| // toggle menu open/close states |
| if(sibling!==null){ |
| //console.log("sibling.style.display: ["+sibling.style.display+"]"); |
| if (sibling.style.display !== "none") { |
| //console.log("collapsing"); |
| sibling.style.display = "none"; |
| this.style.backgroundImage = "url('../images/elements/circle-plus.png')"; |
| } else { |
| //console.log("expanding"); |
| sibling.style.display = "block"; |
| this.style.backgroundImage = "url('../images/elements/circle-minus.png')"; |
| } |
| } |
| |
| }); |
| } |
| } |
| |
| /* |
| * Debug: |
| */ |
| // Use: console.log(dumpCSSText(this)); |
| // function dumpCSSText(element){ |
| // var s = ''; |
| // var o = getComputedStyle(element); |
| // for(var i = 0; i < o.length; i++){ |
| // s+= ">> " + o[i] + ':' + o.getPropertyValue(o[i])+';\n'; |
| // } |
| // return s; |
| // } |
| |
| </script> |
| </head> |
| <!-- Once all page elements are included, register event hooks --> |
| <body onload="applyCollapsible()"> |
| <script src="js/main.min.js"></script> |
| <div class="header"> |
| |
| <a class="header-section-logo" href="/"> |
| </a> |
| <div class="header-section-text-links"> |
| <div class="header-row-text-links"> |
| <a class="header-text-link" href="/documentation.html">Documentation</a> |
| <a class="header-text-link" href="/community.html">Community</a> |
| <a class="header-text-link" href="/downloads.html">Downloads</a> |
| </div> |
| </div> |
| <div class="header-section-social-icons"> |
| <div class="header-row-social-icons"> |
| <a class="header-button-icon" style="order: 7;" href="https://github.com/apache?q=openwhisk" title="Apache OpenWhisk project repositories on GitHub"> |
| <img class="header-icon-image" alt="GitHub" src="/images/icons/icon-github-white.svg"> |
| </a> |
| <a class="header-button-icon" style="order: 6;" href="slack.html" title="Apache OpenWhisk on Slack"> |
| <img class="header-icon-image" alt="Slack" src="/images/icons/icon-slack-white.svg"> |
| </a> |
| <a class="header-button-icon" style="order: 5;" href="https://twitter.com/search?q=openwhisk" title="Apache OpenWhisk on Twitter"> |
| <img class="header-icon-image" alt="Twitter" src="/images/icons/icon-twitter-white.svg"> |
| </a> |
| <a class="header-button-icon" style="order: 4;" href="https://medium.com/openwhisk" title="Apache OpenWhisk on Medium"> |
| <img class="header-icon-image" alt="Medium" src="/images/icons/icon-medium-white.svg"> |
| </a> |
| <a class="header-button-icon" style="order: 3;" href="https://www.youtube.com/channel/UCbzgShnQk8F43NKsvEYA1SA" title="Apache OpenWhisk on YouTube"> |
| <img class="header-icon-image" alt="YouTube" src="/images/icons/icon-youtube-white.svg"> |
| </a> |
| <a class="header-button-icon" style="order: 2;" href="http://stackoverflow.com/questions/tagged/openwhisk" title="Apache OpenWhisk on Stack Overflow"> |
| <img class="header-icon-image" alt="Overflow" src="/images/icons/icon-stack-overflow-white.svg"> |
| </a> |
| <a class="header-button-icon" style="order: 1;" href="http://www.slideshare.net/OpenWhisk" title="Apache OpenWhisk on SlideShare"> |
| <img class="header-icon-image" alt="SlideShare" src="/images/icons/icon-slideshare-white.svg"> |
| </a> |
| </div> |
| </div> |
| </div> |
| |
| <!-- |
| # Licensed to the Apache Software Foundation (ASF) under one or more contributor |
| # license agreements; and to You under the Apache License, Version 2.0. |
| --> |
| <section id="whiskHeader" class="light-text bot-bar"> |
| <main> |
| <div> |
| <h1>Open Source Serverless Cloud Platform</h1> |
| <h5>Executes functions in response to events at any scale</h5> |
| </div> |
| </main> |
| </section> |
| |
| <section id="whiskNodes"> |
| <main> |
| <a class="indexable" id="what-is-openwhisk"></a> |
| <div class="content"> |
| <h4>What is Apache OpenWhisk?</h4> |
| <p> |
| Apache OpenWhisk is an open source, distributed |
| <a href="https://en.wikipedia.org/wiki/Serverless_computing">Serverless</a> |
| platform that executes functions |
| (<span style="font-family:Times New Roman,Georgia,Serif">fx</span>) |
| in response to events at any scale. OpenWhisk manages the |
| infrastructure, servers and scaling using Docker containers |
| so you can focus on building amazing and efficient |
| applications. |
| </p> |
| <p> |
| The OpenWhisk platform supports a programming model in which |
| developers write functional logic (called |
| <a href="https://github.com/apache/openwhisk/blob/master/docs/actions.md#openwhisk-actions">Actions</a>), |
| in any supported programming language, that can be dynamically |
| scheduled and run in response to associated events (via |
| <a href="https://github.com/apache/openwhisk/blob/master/docs/triggers_rules.md#creating-triggers-and-rules">Triggers</a>) from external sources (<a href="https://github.com/apache/openwhisk/blob/master/docs/feeds.md#implementing-feeds">Feeds</a>) |
| or from HTTP requests. The project includes a REST API-based |
| Command Line Interface (CLI) along with other tooling to |
| support packaging, catalog services and many popular container |
| deployment options. |
| </p> |
| <a class="button" href="/documentation.html#openwhisk_deployment">Create Your Local Playground</a> |
| </div> |
| <div class="image-wrapper"> |
| <img src="/images/illustrations/OW-Abstract Architecture Diagram.png" alt="Events trigger the Apache OpenWhisk platform to run Actions or functions in various supported languages."/> |
| </div> |
| </main> |
| |
| <main> |
| <a class="indexable" id="openwhisk-deployments"></a> |
| <div class="image-wrapper"> |
| <img src="/images/illustrations/OW-Deployments.png" alt="Apache OpenWhisk can deploy on your favorite Cloud container framework."/> |
| </div> |
| <div class="content"> |
| <h4>Deploys anywhere</h4> |
| <p> |
| Since Apache OpenWhisk builds its components using containers |
| it easily supports many deployment options both locally and |
| within Cloud infrastructures. Options include many of today's |
| popular Container frameworks such as |
| <a href="https://github.com/apache/openwhisk-deploy-kube/blob/master/README.md">Kubernetes and OpenShift</a>, and |
| <a href="https://github.com/apache/openwhisk-devtools/blob/master/docker-compose/README.md">Compose</a>. |
| In general, the community endorses deployment on Kubernetes |
| using |
| <a href="https://helm.sh/Helm">Helm</a> |
| charts since it provides many easy and convenient |
| implementations for both Devlopers and Operators alike. |
| </p> |
| </div> |
| </main> |
| |
| <main> |
| <a class="indexable" id="openwhisk-languages"></a> |
| <div class="content"> |
| <h4>Write functions in any language</h4> |
| <!-- Possible text addition: "bundle larger or complex dependencies, and tailor the runtime environment to suite your needs."" --> |
| <p> |
| Work with what you know and love. OpenWhisk supports a |
| growing list of your favorite languages such as |
| <a href="https://github.com/apache/openwhisk-runtime-go">Go</a>, |
| <a href="https://github.com/apache/openwhisk-runtime-java">Java</a>, |
| <a href="https://github.com/apache/openwhisk-runtime-nodejs">NodeJS</a>, |
| <a href="https://github.com/apache/openwhisk-runtime-dotnet">.NET</a>, |
| <a href="https://github.com/apache/openwhisk-runtime-php">PHP</a>, |
| <a href="https://github.com/apache/openwhisk-runtime-python">Python</a>, |
| <a href="https://github.com/apache/openwhisk-runtime-ruby">Ruby</a>, |
| <a href="https://github.com/apache/openwhisk-runtime-rust">Rust</a>, |
| <a href="https://github.com/apache/openwhisk-runtime-java">Scala</a>, |
| <a href="https://github.com/apache/openwhisk-runtime-swift">Swift</a>. |
| There is also an experimental runtime for <a href="https://github.com/apache/openwhisk-runtime-deno">Deno</a> in-development. |
| </p> |
| <p> |
| If you need languages or libraries the current |
| "out-of-the-box" runtimes do not support, you can create |
| and customize your own executables as Zip Actions which |
| run on the |
| <a href="https://github.com/apache/openwhisk-runtime-docker/blob/master/README.md">Docker</a> |
| runtime by using the |
| <a href="https://github.com/apache/openwhisk-runtime-docker/blob/master/sdk/docker/README.md">Docker SDK</a>. |
| Some examples of how to support other languages using |
| Docker Actions include a tutorial for |
| <a href="https://medium.com/openwhisk/openwhisk-and-rust-lang-24025734a834">Rust</a> |
| and a completed project for |
| <a href="https://github.com/rainbyte/openwhisk-wrapper">Haskell</a>. |
| </p> |
| <p> |
| Once you have your function written, use the |
| <a href="documentation.html#using-openwhisk">wsk CLI</a>, to |
| target your Apache OpenWhisk instance, and run your first action in seconds. |
| </p> |
| <a class="button" href="/documentation.html#nodejs">Create Your First Action</a> |
| </div> |
| <div class="image-wrapper"> |
| <img src="/images/illustrations/OW-Runtimes.png" alt="Node Runtime"/> |
| </div> |
| </main> |
| |
| <main> |
| <a class="indexable" id="openwhisk-packages"></a> |
| <div class="image-wrapper"> |
| <img src="/images/illustrations/OW-Integrations.png" alt="OpenWhisk's out-of-box packages easily integrate with our own services"/> |
| </div> |
| <div class="content"> |
| <h4>Integrate easily with many popular services</h4> |
| <p> |
| OpenWhisk makes it simple for developers to integrate their |
| Actions with many popular services using |
| <a href="https://github.com/apache/openwhisk/blob/master/docs/packages.md">Packages</a> |
| that are provided either as independently developed |
| projects under the OpenWhisk family or as part of |
| our default |
| <a href="https://github.com/apache/openwhisk-catalog">Catalog</a>. |
| </p> |
| <p> |
| Packages offer integrations with general services such as |
| <a href="https://github.com/apache/openwhisk-package-kafka">Kafka</a> |
| message queues, |
| databases including <a href="https://github.com/apache/openwhisk-package-cloudant">Cloudant</a>, |
| <a href="https://github.com/apache/openwhisk-package-pushnotifications">Push Notifications</a> |
| from mobile applications, |
| <a href="https://github.com/apache/openwhisk-catalog/tree/master/packages/slack">Slack</a> |
| messaging, |
| and <a href="https://github.com/apache/openwhisk-package-rss">RSS</a> |
| feeds. |
| Development pipelines can take advantage of integrations with |
| <a href="https://github.com/apache/openwhisk-catalog/tree/master/packages/github">GitHub</a>, |
| <a href="https://github.com/apache/openwhisk-package-jira">JIRA</a>, |
| or easily connect with custom data services. |
| </p> |
| <p> |
| You can even use the <a href="https://github.com/apache/openwhisk-package-alarms">Alarms</a> |
| package to schedule times or recurring intervals to run your Actions. |
| </p> |
| </div> |
| </main> |
| |
| <main> |
| <a class="indexable" id="openwhisk-compositions"></a> |
| <div class="content"> |
| <h4>Combine your functions into rich compositions</h4> |
| <p> |
| Code in different languages like JavaScript/NodeJS, Swift, Python, |
| Java or run custom logic by packaging code with Docker. |
| Invoke your code synchronously, asynchronously, or on a schedule. |
| Use higher-level programming constructs like sequences to declaratively |
| chain together multiple actions. |
| Use parameter binding to avoid hardcoding service credentials in your code. |
| And also, debug your code in realtime using variety of |
| <a href="documentation.html#development_tools">Development Tools</a>. |
| </p> |
| </div> |
| <div class="image-wrapper"> |
| <img src="/images/illustrations/OW-Runtime-Compositions.png" alt="OpenWhiks allows you to create compositions from Actions in any supported language."/> |
| </div> |
| </main> |
| |
| <main> |
| <a class="indexable" id="openwhisk-benefits"></a> |
| <div class="image-wrapper"> |
| <img src="/images/illustrations/OW-Utilization-Scaling.png" alt="Apache OpenWhisk automatically scales and maximizes and server utilization as events trigger action functions."> |
| </div> |
| <div class="content"> |
| <h4>Scaling Per-Request & Optimal Utilization</h4> |
| <p> |
| Run your action ten thousand times in a fraction of a second, or once |
| a week. Action instances scale to meet demand as needed, then disappear. |
| Enjoy optimal utilization where you don't pay for idle resources. |
| </p> |
| </div> |
| </main> |
| |
| <main> |
| <a class="indexable" id="openwhisk-community"></a> |
| <div class="content"> |
| <h4>Join a vibrant open source community</h4> |
| <p> |
| Play a critical part in building game-changing cloud technology. |
| Share your actions and triggers with the community, add your |
| Runtimes, Package integrations and plug-ins to the Apache |
| OpenWhisk ecosystem, or join our community of developers to |
| make Apache OpenWhisk the best open source Serverless platform. |
| </p> |
| <a class="button" href="/community.html">Join the OpenWhisk Community</a> |
| </div> |
| <div class="image-wrapper"> |
| <a href="http://www.apache.org/foundation/sponsorship.html"> |
| <img style="max-height=174px; max-width:174px;" src="/images/logo/SupportApache-small.png" |
| alt="The Apache OpenWhisk project needs the support of contributors in all areas."/></a> |
| </div> |
| </main> |
| </section> |
| |
| <!-- |
| /* |
| * Required ASF website links (scanned) |
| * |
| * Name: Regex: URL |
| * ==== ===== === |
| * Foundation: apache|asf|foundation: http://www.apache.org/ |
| * Events: ^https?://.*apache.org/events/current-event: See: https://www.apache.org/events/README.txt |
| * License: ^https?://.*apache.org/licenses/$: http://www.apache.org/licenses/ |
| * Thanks: ^https?://.*apache.org/foundation/thanks: http://www.apache.org/foundation/thanks.html |
| * Security: ^https?://.*apache.org/.*[Ss]ecurity: http://www.apache.org/security/ |
| * Sponsorship: ^https?://.*apache.org/foundation/sponsorship http://www.apache.org/foundation/sponsorship.html |
| * Trademarks: \btrademarks\b All project or product homepages must feature a prominent trademark attribution of all applicable Apache trademarks. |
| * Copyright: ((Copyright|©).*apache|apache.*(Copyright|©)): All website content SHOULD include a copyright notice for the ASF. |
| * Image: . Projects SHOULD include a 212px wide copy of their logo in https://www.apache.org/img/ to be included in ASF homepage. |
| * See: https://www.apache.org/img/ |
| */ |
| --> |
| |
| <footer class="footer light-text"> |
| <main class="footer-row"> |
| <div> |
| <div class="footer-row-text-links"> |
| <a class="" href="https://www.apache.org/">Apache Software Foundation</a> |
| <a class="" href="https://apache.org/events/current-event">Events</a> |
| <a class="" href="https://www.apache.org/licenses/">License</a> |
| <a class="" href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy</a> |
| <a class="" href="security.html">Security</a> |
| <a class="" href="https://www.apache.org/foundation/thanks.html">Thanks</a> |
| <a class="" href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a> |
| </div> |
| </div> |
| </main> |
| <main class="footer-row"> |
| <div> |
| Apache OpenWhisk, OpenWhisk, Apache, the Apache feather logo, and |
| the Apache OpenWhisk project logo are either |
| <a href="trademarks.html">registered trademarks</a> or |
| <a href="trademarks.html">trademarks</a> |
| of The Apache Software Foundation in the United States and other countries. |
| See <a href="trademarks.html">guidance</a> on use of Apache OpenWhisk trademarks. |
| All other marks mentioned may be trademarks or registered trademarks |
| of their respective owners. |
| </div> |
| </main> |
| <main class="footer-row"> |
| Copyright © 2016-present The Apache Software Foundation, |
| Licensed under the Apache License, Version 2.0. |
| </main> |
| </footer> |
| |
| </body> |
| </html> |