| --- |
| layout: default |
| --- |
| <!-- |
| # 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="{{ site.github.url }}/documentation.html#openwhisk_deployment">Create Your Local Playground</a> |
| </div> |
| <div class="image-wrapper"> |
| <img src="{{ site.github.url }}/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="{{ site.github.url }}/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="{{ site.github.url }}/documentation.html#nodejs">Create Your First Action</a> |
| </div> |
| <div class="image-wrapper"> |
| <img src="{{ site.github.url }}/images/illustrations/OW-Runtimes.png" alt="Node Runtime"/> |
| </div> |
| </main> |
| |
| <main> |
| <a class="indexable" id="openwhisk-packages"></a> |
| <div class="image-wrapper"> |
| <img src="{{ site.github.url }}/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="{{ site.github.url }}/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="{{ site.github.url }}/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="{{ site.github.url }}/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="{{ site.github.url }}/images/logo/SupportApache-small.png" |
| alt="The Apache OpenWhisk project needs the support of contributors in all areas."/></a> |
| </div> |
| </main> |
| </section> |