<reponame>UCSB-CS-RACELab/eager-appscale
SLA management on service-oriented systems and cloud systems has been 
studied in some depth previously.
Much of this existing work has focused on issues 
such as SLA monitoring~\cite{Michlmayr:2009:CQM:1657755.1657756,Tripathy:2011:MMS:1980822.1980832,Raimondi:2008:EOM:1453101.1453125,Bertolino:2007:SUS:1294904.1294914} and SLA modeling~\cite{Chau:2008:ASM:1463788.1463802,Stamou:2013:SGM:2516588.2516592,Skene:2004:PSL:998675.999422}. 
In our work, we automatically identify the SLAs that can be defined and
maintained 
for a given web API by using a combination of
static analysis, cloud platform monitoring and time series analysis.  
%In~\cite{cerebro-soccsub15}, we introduce Cerebro and its prediction methodology, and evaluate the
%accuracy and tightness of its response time predictions.

In PROSDIN~\cite{Mahbub:2011:PSN:2061042.2062022}, a proactive service discovery and negotiation
framework, the SLA negotiation occurs during the service discovery phase. This is similar to how
Cerebro establishes an initial SLA with an API consumer, when the consumer subscribes to an API. PROSDIN also
establishes a fixed SLA validity period upon negotiation, and triggers an SLA renegotiation when this time period has 
elapsed. Cerebro on the other hand continuously monitors the cloud platform,
and periodically re-evaluates the response time SLAs of web APIs 
to determine when a re-negotiation is needed.
%-- an idea that draws inspiration from existing SLA
%monitoring techniques. 
%Upon detecting an SLA violation, we prompt the API consumer, and renegotiate the SLA.
Similarly, researchers have investigated the notions of SLA brokering~\cite{6546098}, and the automatic SLA negotiation
between intelligent agents~\cite{Yaqub:2014:ONS:2680847.2681496}, ideas that can complement the
simple SLA negotiation model of Cerebro to make it more powerful and flexible.

Meryn~\cite{Dib:2013:MOS:2465823.2465825} is an SLA-driven PaaS system that attempts to maximize cloud
provider profit, while providing the best possible quality of service to the cloud users. It supports
SLA negotiation at application deployment, and SLA monitoring to detect
violations. However, it does not automatically determine what SLAs are
feasible or address SLA renegotiation, 
and employs a policy-based mechanism coupled
with a penalty cost charged against the cloud provider to
handle SLA violations. Also, Meryn formulates SLAs in terms of the computing resources (CPU, memory,
storage etc.) allocated to applications. It assumes a batch processing environment where the
execution time of an application is approximated based on a detailed description of the application provided
by the developer. In contrast, Cerebro handles SLAs for interactive web applications. It predicts
the response time of applications using static analysis, without any input from the application developer. 
Cerebro also supports automatic SLA renegotiation, with possible room for economic incentives.

Iosup et al showed via empirical analysis, that production cloud platforms like Google App Engine and AWS regularly
undergo performance variations, thus impacting the response time of the applications deployed in such
cloud platforms~\cite{5948601}. Some of these cloud platforms even exhibit temporal patterns 
in their performance variations (weekly, monthly, annual or seasonal). Cerebro and the associated API performance
forecasting model acknowledge this fact, and periodically re-evaluate the predicted response time upper bounds.
It detects when a previously predicted upper bound becomes invalid, and prompts the API clients to renegotiate their
SLAs accordingly. Indeed, one of Cerebro's strength's is its ability to detect change points in the input time series
data (periodically collected cloud SDK benchmark results), and generate up-to-date predictions that are not 
affected by old obsolete observations that were gathered prior to a change point.

There has also been prior work in the area of predicting 
SLA violations~\cite{Leitner10,6976585,Duan:2006:PIP:1142473.1142582}. 
These systems take an existing SLA and historical performance data of a service, and predict when the 
service might violate the given SLA in the future. 
Cerebro's notion of prediction validity period has some commonalities with this concept. In fact, Cerebro
can make use of such a method to determine the frequency at which it should re-evaluate the predicted
SLAs.
