H2020 PHYSICS is developing a novel FaaS (Function-as-a-Service) infrastructure for Serverless computing, which aims at unleashing the powerful of developers in implementing and deploying
end-to-end FaaS workflows across multi-cloud environments. In this direction, PHYSICS built upon existing FaaS infrastructures and toolkits. The project has recently completed an in-depth state of the art analysis and market analysis, including a review of the most prominent FaaS and serverless computing toolkits. In following paragraphs, we briefly introduce Openwhisk and OpenFaaS. In subsequent blogs we will also write about others such as Fission, Kubeless, Knative, and Nuclio.
OpenWhisk is an open source, distributed Serverless platform. It provides the means for executing functions in response to events and in a scalable fashion. It manages the infrastructure, servers and scaling using Docker containers. As such it is a scalable, reliable and robust serverless platform.
From a developer’s perspective, OpenWhisk is based on three main constructs:
- Actions: These are standalone functions, which are characterized by autonomy and independence from the event sources. They are invoked upon the pass of a specific event. Their invocation must be accompanied by the supply of proper parameters for their operation.
- Triggers: These are endpoints that are invoked by event sources (e.g., databases, file systems, stream data systems). Actions exist independent of Triggers. Whenever an event source fires a Trigger, OpenWhisk invokes any Actions associated with Trigger (if any). However, these Triggers are not known beforehand. Rather the set of Actions that are associated with Trigger are discovered and executed on the fly, at runtime.
- Rule: Rules associate and connect Triggers with Actions in a loosely coupled manner. In this way, the same Action can be invoked by multiple different Triggers.
OpenWhisk provides a REST API-based Command Line Interface (CLI). It also offers tools that support packaging, catalog management and container deployment options.
OpenFaaS makes it easy to deploy both functions and existing code to Kubernetes. It is a cloud native FaaS framework that can be deployed over different cloud platforms and bare-metal servers. It is installed on Kubernetes and Docker swarms. OpenFaaS enables developers to create functions out of code written in a variety of languages, such as Go, Java, Python, C#, Ruby – Express.js, Django, and ASP.NET. The OpenFaaS ecosystem offers:
- A Functions Store i.e., an environment/space for sharing, reusing and collaborating on functions.
- A Templating system, that reduces boilerplate codes and accelerates application development.
- A pool of Functions or Microservices that enables the deployment of existing microservices using Express.js, Sinatra, and ASP.NET Core.
The framework comes with an API Gateway, a asynchronous queue worker, and a functions monitoring infrastructure. It offers portability as it can run on existing hardware or any public/private cloud. Moreover, it offers a CLI with support for YAML towards templating and defining functions. Finally, it OpenFaaS is a scalable infrastructure: It auto-scales as demand increases.
Keep in touch with us at Twitter and Linked In to learn more about how PHYSICS will leverage existing Open Source FaaS frameworks and toolkits.