Deploying and Benchmarking Open Source Serverless Frameworks
Since the advent of AWS Lambda in 2014, the function-as-a-service programming paradigm has gained a lot of traction in the cloud community. At first, only large cloud providers such as AWS Lambda, Google Cloud Functions or Azure Functions provided such services with a pay-per-invocation model, but since then interest has increased for developers and entreprises to build their own solutions on an open source model.
The rise of container orchestrators such as Kubernetes, Docker Swarm or DC/OS has made this process even easier, resulting in a number of competing frameworks in this space. We have identified at least 9 differents frameworks*. In this study, we focus on the following six: OpenFaaS, nuclio, Gestalt, Riff, Fn, OpenWhisk.
These frameworks vary a lot in feature set, but all have the feature we come know to expect from a FaaS offering in the style of AWS Lambda:
- The ability to create and modify language-specific scripts with a simple interface in either "inline" (within browser) or packaged form.
- The ability to invoke functions through an HTTP API.
Finally, all of these frameworks can easily be deploying using Kubernetes.
In this project, we provide so far guides on how to deploy these open source serverless frameworks on kubernetes distributions, starting with Docker EE.
We wish to develop this repository into a benchmarking tool in collaboration with the various serverless frameworks maintainers and communities in the context of the CNCF Serverless Working Group.
*: in addition to the six frameworks above, we have also identified funktion, kubeless, fission.io
Deploying Kubernetes Clusters
In order to make benchmarking reproduceable and verifiable, we provide instructions on deploying clusters on AWS in the deploy-cluster folder. Clusters are configured to have:
- 1 kubernetes manager using an M4.Xlarge instance
- 2 kubernetes workers using a T2.large instance
- Each machine runs the ubuntu-16.04 operating system
The instructions may vary according to kubernetes distribution. The only instructions currently available are for Docker EE.
Deploying Serverless Frameworks
In the deploy-framework folder, we provide instructions to deploy each framework for a specific kubernetes distribution. The only instructions available are for Docker EE:
- Deploy OpenFaaS on Docker EE
- Deploy Fn on Docker EE
- Deploy Riff on Docker EE
- Deploy Gestalt on Docker EE
- Deploy OpenWhisk on Docker EE
- Deploy Nuclio on Docker EE
Benchmarking Serverless Frameworks
Open Source Serverless Frameworks
Here is the list of the supported open source serverless frameworks.
For now, the only vendor that is suppported is Docker Entreprise Edition.
- The benchmarking component of this repository has not been released yet.