gFaaS: Enabling Generic Functions in Serverless Computing
Mohak Chadha, Paul Wieland, Michael Gerndt
TL;DR
gFaaS tackles the portability and interoperability challenges of Function-as-a-Service by providing a TypeScript-based, cross-platform framework that enables platform-independent function development and unified management across OpenFaaS, Nuclio, Fission, and Knative. It uses YAML-based configuration for functions and platforms, a platform-agnostic core with a plugin-like FaaSService abstraction, and a Docker-based OCI container strategy, complemented by templates and adapters for migrating legacy code and supporting gRPC (via Knative). Experimental results show negligible overhead of gFaaS compared to native functions in cold and hot start scenarios, with some platform-template limitations influencing data presentation (e.g., image sizes for Java). The framework’s CLI, template-driven resource provisioning, and adapter-based legacy-migration workflow collectively enable multi-cloud serverless deployments and smoother cross-platform development, with future work extending support to additional commercial platforms and more triggers.
Abstract
With the advent of AWS Lambda in 2014, Serverless Computing, particularly Function-as-a-Service (FaaS), has witnessed growing popularity across various application domains. FaaS enables an application to be decomposed into fine-grained functions that are executed on a FaaS platform. It offers several advantages such as no infrastructure management, a pay-per-use billing policy, and on-demand fine-grained autoscaling. However, despite its advantages, developers today encounter various challenges while adopting FaaS solutions that reduce productivity. These include FaaS platform lock-in, support for diverse function deployment parameters, and diverse interfaces for interacting with FaaS platforms. To address these challenges, we present gFaaS, a novel framework that facilitates the holistic development and management of functions across diverse FaaS platforms. Our framework enables the development of generic functions in multiple programming languages that can be seamlessly deployed across different platforms without modifications. Results from our experiments demonstrate that gFaaS functions perform similarly to native platform-specific functions across various scenarios. A video demonstrating the functioning of gFaaS is available from https://youtu.be/STbb6ykJFf0.
