Brownout is a software engineering paradigm to make cloud services more robust to capacity shortages. It requires the developer to mark a part of the response as optional and only serve it with a probability given by a dynamic parameter, called the dimmer. A controller monitors the response time of the service and adjusts the dimmer, so as to keep the application responsive. Details can be found in this article.
This repository contains the source code of the brownout version of RUBiS, an e-commerce website prototype, mimicking eBay. RUBiS is a popular benchmark choice in cloud computing research.
Each branch contains a tier (rubis-web-tier
, rubis-db-tier
, rubis-control-tier
). Ensure you have Docker installed on your system.
-
Checkout the repository with submodule:
git clone --depth=1 --recursive [email protected]:cloud-control/brownout-rubis.git
-
Run experiments
cd brownout-rubis ./start-experiment.sh
-
Test if everything works: Open this link; if you see the RUBiS logo and some items, then everything works fine.
-
Shutdown: The code is meant to be stateless, so kill with fire!
for tier in control web db; do docker rm -f rubis-$tier-tier-0 done
You may use the DOCKER_HOST
environment variable to deploy the whole experiment on a different machine.
For efficiency, the database tier's data is stored in a host folder, i.e., in /srv/brownout-rubis/data
. If something went wrong during installation or you want to fully remove Brownout RUBiS, type:
sudo rm -f /srv/brownout-rubis/data
For questions or comments, please contact Cristian Klein [email protected].