A decentralized framework for the distribution of lambda functions, in a Function-as-a-Service (FaaS) model, to multiple serverless platforms.

The reference system is depicted in the figure below.

The components communicate with one another via Google's gRPC. An alternative, there is experimental support of QUIC using Facebook's proxygen and mvfst.

Components

For each of the components there are different versions, illustrated below.

Broker

Serverless platform

Client

Integration with ETSI MEC

ETSI MEC is a set of specifications, under definition in the Industry Study Group MEC of the European Telecommunications Standards Institute, aimed at defining a reference architecture and open APIs for the deployment and lifecycle management of vendor-neutral applications in edge networks of telecom operators.

We have implemented a partial integration of our Serverless on Edge framework with the ETSI MEC, specifically with the Mx2 interface. More information can be found in the dedicated GitHub repository, which is added as a sub-module to this one.

This project is listed as one of the MEC Solutions in the ETSI MEC ecosystem wiki page.

Integration with Apache OpenWhisk

Apache OpenWhisk is a distributed serverless platforms that realizes the FaaS model by executing functions in response to events of different types, called actions, triggers, and feeds.

We have integrated partially our Serverless on Edge framework by means of two components, called edgecomputerwsk and wskproxy, which allow actions issued by clients to be executed on OpenWhisk platforms.

If interested check out more details and instructions here.

Building

See building instructions.

Examples

Step-by-step execution of examples:

Performance evaluation

The ServerlessOnEdge framework has been evaluated extensively in an emulated environment using mininet.

The scenarios used, together with the scripts for setting up the environment and post-processing the results, are available, see the experiments page.

Code quality

The source code is written in C++-17. The master branch is subject to a continuous integration process supervised by a Jenkins service running in the Ubiquitous Internet research group infrastructure, which verifies zero-warning compilation with GNU gcc 7.5.0 and LLVM clang 10.0.0, as well as the absence of warnings by cppcheck v2.3. The source code is formatted automatically with clang-format-10 using the .clang-format schema shipped in this repository. Unit tests with GoogleTest are provided for all the core components, though we do not aim at full coverage. Despite all our efforts, it is possible that the software contains bugs, has performance issues, and exposes security flaws: this code is intended for experimentation purposes only and it should never be used in a production system.

StateSim

The repository also includes a stand-alone simulator of the execution/network latency of chain of stateful invocations in an edge network, check the StateSim page for more details.

Credits