Repository used for the master thesis "A Benchmark Suite for Serverless Computing".

With this tool written in Node.js you can benchmark serverless platforms from the following cloud computing providers:
and in the following programming languages:
The basic idea is that you can deploy and run various tests and see how they perform on each cloud and/or programming language.
Info: All guides and scripts are targeted for Ubuntu but other operating systems follow a similar process.
For Ubuntu 18.04 you can do the following:
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
sudo apt-get update
sudo apt-get install docker-ce docker-compose
# add your user to the docker group if you don't want to run it always with sudo (requires logout and login)
sudo groupadd docker
sudo usermod -aG docker $USER
For each cloud provider you need to create an account and maybe setup some things:
You also need to create some docker volumes and login into the cloud CLIs, so they can be used in a docker container. In this case they will even be used from another docker container (so called docker in docker or DinD). For this you will need to do the following steps:
# create 5 volumes, 1 for app data and 4 for each clouds secrets
docker volume create serverless-data
docker volume create aws-secrets
docker volume create google-secrets
docker volume create ibm-secrets
docker volume create azure-secrets
# copy all data into the docker volume (IMPORTANT: run from the project root directory!)
docker run -v serverless-data:/data --name helper bschitter/alpine-with-zip:0.1
docker cp . helper:/data
docker rm helper
# mount the volumes and login with the cloud provider
docker run --rm -tiv aws-secrets:/root/.aws mikesir87/aws-cli:1.16.310 aws configure
docker run --rm -tiv azure-secrets:/root/.azure mcr.microsoft.com/azure-cli:2.0.78 az login
docker run --rm -tiv google-secrets:/root/.config/gcloud google/cloud-sdk:274.0.1-alpine gcloud init
docker run --rm -tiv ibm-secrets:/root/.bluemix ibmcom/ibm-cloud-developer-tools-amd64:0.20.0 ibmcloud login
# with ibm you also have to set the region -r, the API endpoint --cf-api, the organization -o and the space -s
docker run --rm -tiv ibm-secrets:/root/.bluemix ibmcom/ibm-cloud-developer-tools-amd64:0.20.0 ibmcloud target -r <YOUR_REGION> --cf-api https://api.<YOUR_REGION>.cf.cloud.ibm.com -o <YOUR_ORGANIZATION> -s <YOUR_SPACE>
To start the main application (in the folder main) run:
docker-compose up -d db grafana app
The application web interface will be exposed on port 3001 http://localhost:3001
Grafana will be exposed on port 3000 LINK http://localhost:3000
The following actions can be performed:
A user can deploy and delete tests. Following parameters exist:
The Deploy button will iniciate a deploy process and the Cleanup All button will clenaup everything. Status can be seen on the right.
IMPORTANT: The cleanup process will delete all API gateways and Lambda functions on AWS, all resource groups containing the name of a test on Azure, all functions in the configured project for Google and all IBM functions and gateways. Use with caution!
Run a comparison test. Following parameters exist:
The test can be startet with the Run button and stopped with the Stop button. Results will be viewable in Grafana.
Run a load test for deployed functions. Following parameters exist:
The application will benchmark the deployed functions with wrk2. Results will be viewable in Grafana.
Calculate hypothetical prices by providing following parameters:
The button Calculate / Update will do the calculation and they will be shown on the right side.
Calculate prices regarding a specific test:
The button Calculate / Update will do the calculation and they will be shown on the right side.
To stop and remove containers run:
docker-compose down
To delete all images:
docker rmi $(docker images -q)
To delete all volumes:
docker volume rm $(docker volume ls -q)
Unable to create API: Request accepted, but processing not completed yet. but the function will most likely be deployed correctly.Content type
Image
Digest
Size
3 MB
Last updated
almost 7 years ago
docker pull bschitter/alpine-with-zip