The Fission Functions-as-a-Service (FaaS) framework, launched by Platform9, enables the easy deployment of serverless functions on any Kubernetes cluster. Functions execute logically discrete, short-life tasks and can currently be used to deploy simple applications. Developing more complex applications leveraging the serverless paradigm requires orchestration of interacting serverless functions. This packaging has typically been a complex and time consuming process. Fission Workflows, a functions orchestration engine recently launched by Platform9, enables orchestration of a sequence of serverless functions to create an application and significantly accelerates the creation of applications using serverless functions.
Orchestrating Functions To Create Applications
There are potentially three ways to package functions. First, functions can be configured to directly call each other but there are disadvantages to this approach. The structure of the application becomes more complex and dependencies are not obvious (essentially, every function becomes an API). Also, since no persistent state exists, if a failure or exception occurs and a retry is desired, the whole application has to be run again.
Second, a set of functions can be interconnected using message queues. This allows the output of one function to be sent to a message topic that then triggers another function. While this helps with persistence and retries (because individual functions can be run again rather than the whole application), it does not help reduce the overall complexity of creating an application. For example, replication of dynamic control flows (e.g. “if” statement or a loop) become more difficult.
Workflows present a third and more elegant way for integrating and orchestrating serverless functions together by defining a sequence of tasks, decisions and loops. Functions can be orchestrated either in sequence or parallel. The output of a function can be sent to the inputs of another function, “if” statements, loops, and even functions that operate on other functions. The enclosed video provides a quick overview of how workflows can be used to orchestrate functions in a low complexity, repeatable fashion.
Fission Workflows In Action: Slack and Weather Integration
As demonstrated in the video enclosed below, a workflow was defined to integrate Fission with 3rd party (Slack and Weather) APIs. Fission is able to alert the user when the temperature exceeds a specified threshold.
In the above example, Fission Workflows allowed the creation of conditionals, loops and other control flow constructs for serverless applications running on Kubernetes. Without Workflows, configuring the interactions between functions would have been significantly more complex.
Want to learn more? Take a look at the Fission Workflows Webinar on NATS
Soam Vasani, Platform9 engineer and creator of the Fission Open Source Project, delivered a Workflows webinar focused webinar “Serverless for the Cloud Native Era – How Fission uses NATS and Kubernetes” on October 25th, 2017.
Please watch the Serverless in the Cloud Native Era webinar to learn more about how to accelerate application development using serverless functions .
Join the Community
Fission and Fission Workflows are open source projects included in the Github repository. Join the community on Slack.
- Fission: https://github.com/fission/fission
- Fission Workflows: https://github.com/fission/fission-workflow
- Fission Slack: http://slack.fission.io/