gFaaS is a novel framework that facilitates the holistic development and management of functions across diverse FaaS platforms. It enables the development of generic functions in multiple programming languages that can be seamlessly deployed across different platforms without modifications.
To achieve its design goals and enable generic functions, gFaaS provides an abstraction layer for the function code, function configuration, and interaction with the FaaS plaforms as shown in the figure below.
gFaaS currently supports the following FaaS plaforms:
gFaaS currently supports the development of functions in Python, Node.js, C++, Go, and Java
. The different language templates can be found at this repository. More templates can be easily integerated into our framework.
gFaaS supports the development of functions with gRPC support for Knative. For instruction, please see here.
gFaaS utilizes the adapter pattern to enable the migration of legacy code to our framework without code modifcations. For details, please read the Adapter section in the provided templates.
For quickly using gFaaS, you can use our docker image as below:
docker pull kkyfury/gfaas-cli:v1
docker run --rm kkyfury/gfaas-cli:v1 --version
The detailed functionality provided by gFaaS can be found here.
We also provide Terraform and Ansible files that we used to automate the deployment and configuration of the individual FaaS platforms on OpenStack VMs. This can be found here and adapted for distinct setups.
To run gFaaS with the supported FaaS platforms, you need to provide a configuration file in YAML. An example can be found here.
To deploy and manage functions with gFaaS, you need to provide a function configuration file in YAML. An example can be found here.
The figure below shows the detailed system components within gFaaS and their interactions with external components to enable the holistic development and management of functions.
Our framework performs similar to platform-native functions and does not incur any significant overhead.
The cold start performance is only compared with Knative and Fission since scale-to-zero is not offered by the community editions of OpenFaaS and Nuclio. The different functions we used for testing can be found here.
If you use gFaaS in your work, please cite our paper:
@misc{chadha2024gfaas,
title={gFaaS: Enabling Generic Functions in Serverless Computing},
author={Mohak Chadha and Paul Wieland and Michael Gerndt},
year={2024},
eprint={2401.10367},
archivePrefix={arXiv},
primaryClass={cs.SE}
}