blob: 5253be90178a91557b0d9d44c9d5c3192595770d [file] [log] [blame]
---
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 &amp; 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>