Brownout: Building More Robust Cloud Applications

Author(s): C. Klein, M. Maggio, K. E. Årzén, F. Hernández-Rodriguez
Venue: ICSE
Date: 2014

Type of Experiement: Controlled Experiment
Sample Size: 3
Class/Experience Level: Professional
Data Collection Method: Observation


Cloud applications are becoming more and more popular as companies and developers try to outsource their systems, and make their applications more robust. As part of making applications more robust, developers try to design their applications to handle sudden, large influxes of users. However, in many cases, handling large spikes of users requires costly hardware over-provisioning. The authors look at the performance and feasibility of a "brownout", where certain parts of the application "dynamically deactivate" when allocated physical hardware resources are exhausted.

There are several steps to create a brownout application. First, developers must identify an area that can be deactivated. Second, developers must provide a method of controlling the computational power required by the optional area. Third, developers must create a controller that changes the computational power required by the optional area based on user load.

Using two cloud benchmark applications, RUBiS and RUBBoS, and modified with the three steps, the authors ran several experiments to determine whether the user experience would deteriorate or improve using their method. The experiments demonstrated the importance of adapting the controller frequently, based on the user load. If the controller allowed the optional code to remain at high computational power during a large spike of users, performance would suffer. The controller must reevaluate the load frequently enough to detect user load change. However, the authors demonstrated that their method did in fact improve user access times when there was a large spike of users.