components in a cloud platform we should be able
to address the above questions as follows: i) through
message correlation and temporal analysis of message
exchanges we should be able to derive message se-
quences and identify the patterns of communication
across all messages in the system; ii) by analyzing and
comparing message contents across different releases
of a platform we should be able to track changes in
message exchange patterns and project on evolutions
at the level of system components; iii) by corrupting
or interfering with the pattern of message exchanges
we should be able to assess the resiliency of the plat-
form from one release to another; and iv) by collect-
ing a long enough history of message exchanges we
should be able to detect anomalies and irregularities
in the behaviour of the system by comparing the ex-
pected patterns of message exchange with the newly
observed message exchange patterns.
In this paper we discuss how using an instrumen-
tation technique we managed to extract sequences of
message exchanges for CloudFoundry, analyze mes-
sage context, and generate valuable information on
the behavior of the system to be shared with the com-
munity of CloudFoundry developers. We also provide
preliminary results of two releases of our framework
to CF developers and users inside IBM as well as to
the CF community at large. Finally, we discuss our
plans to utilize the current technique to provide auto-
mated approaches for software testing and validation.
2 BACKGROUND
2.1 Instrumentation and Profiling
Analyzing system behaviour is done either through
black-box profiling techniques or white box instru-
mentation strategies. In an instrumentation strategy,
code snippets are injected into the original source
code of the system under study in order to collect in-
formation on flow of control or data flow. In a pro-
filing process however, the behaviour of the system
is inferred through collecting footprints of system in-
teractions with the underlying framework, the current
platform, or the operating system which is used. The
collected data then is analyzed or interpreted to form
a view of the system’s behavior (Beschastnikh et al.,
2011). While data collected through black-box profil-
ing is usually insufficient in effectively tracking and
monitoring the behavior of a distributed system, in-
strumentation is also no panacea as it is typically hin-
dered by limited accessibility and comprehension of
system source code. Magpie (Barham et al., 2003),
MANTICORE (Kaviani et al., 2012), and ARM instru-
mentation (arm, ) are examples of systems that allow
tracing of code and data through instrumentation. At
the other end, Baset et al. (Baset et al., 2013), Aguil-
era et al. (Aguilera and et al., 2003), and Anandkumar
et al. (Anandkumar et al., 2008) provide solutions on
doing black-box tracking of software systems.
2.2 Aspect-oriented Programming
Aspect-Oriented Programming (AOP) (Kiczales
et al., 2001) provides an abstraction of program
execution with techniques that allow to change flow
of control or data in order to separate crosscutting
concerns spread across multiple abstraction layers in
the system from the functional requirements at each
abstraction layer. AOP is often conceptualized into
the three concepts of joinpoints, pointcuts, and ad-
vice. A joinpoint is a metaprogram event identifying
a distinguished point of interest in the program; a
pointcut defines a query on selecting a certain set
of joinpoints in the program; and an advice is a
function associated with a pointcut to be executed at
a matching joinpoint (Kiczales et al., 2001). AOP has
been widely used to analyze and monitor the behavior
of distributed systems by injecting monitoring and
analysis code into components of a system. The
works by Wohlstadter and Devanbu (Wohlstadter
and Devanbu, 2006) and Whittle et al. (Al Abed and
Kienzle, 2011) are examples of the efforts in utilizing
AOP instrumentation in software development and
modelling.
2.3 CloudFoundry Architecture
CloudFoundry v1.0 consists of the following major
components: the cloud controller manages the over-
all behaviour of the system and instructs the inter-
nal components of CloudFoundry on their roles; The
health manager monitors the well-being of the com-
ponents; the User Authorization and Authentication
(UAA) unit performs authorizations; the stager pre-
pares deployments; the Deployment Agent (DEA) de-
ploys the application and monitors its execution; and
the router directs traffic from outside CloudFoundry
into the deployed applications. Communication be-
tween CF components happens in two ways: a) asyn-
chronously through messages sent to the pub/sub mid-
dleware called the NATS server (nat, ) or b) syn-
chronously by exchanging HTTP messages. A typi-
cal workflow in CF starts by a client interface send-
ing a request to the CF controller through the router.
The cloud controller captures the incoming message
and initiates a series of message exchanges with other
components in the system to deliver on the received
CLOSER2015-5thInternationalConferenceonCloudComputingandServicesScience
382