dfaas

Decentralized FaaS platform

View on GitHub

Operator

The Operator container executes the operator_entrypoint.sh script to deploy functions on specified DFaaS nodes and execute load tests exploiting Vegeta.

The operator can be configured editing the dfaasoperator.env, specifying the IP of the target nodes, the functions to deploy, and the configuration of each Vegeta attack.
When operator starts, it performs healthchecks on the target nodes, then deploys the selected functions. After that, it waits for a certain amount of time (specified in the configuration) allowing the nodes proxies to reconfigure with the new functions endpoints, then launches Vegeta attacks.
The operator can execute multiple parallel Vegeta attacks, specifying the amount of time to wait before starting each attack. For each attack is also necessary to specify duration, rate, and the HTTP request.
For single Vegeta attacks the operator generates some plots exploiting the plot-results.py script. When all the attacks are terminated, the operator merges all the results.json files generated by Vegeta, obtaining the merged-results.json file. This is used to generate other plots with the plot-results.py script, aggregating all attacks results.
If specified in the environment file, after load tests the operator deletes the deployed functions from target nodes.

Note: before deploying the operator it’s also necessary to configure the plot-results.py script to generate correct plots for merged results.