In this paper we try to conciliate both worlds,
promising to obtain the same versatility and platform
independence as IaaS solutions, and reaching au-
tomation levels very similar to the PaaS counterparts.
To this end, we devise a new approach that merges
the best characteristics of both solutions, and assists
the developer with graphical models, inspired by the
Model Driven Engineering (MDE) principle. Besides
helping in the specification steps, our methodology
will be able to automatize application deployment and
to build scalable self-administering(i.e., autonomous)
applications.
The rest of the paper is organized as follows: sec-
tion 2 presents our model driven approach and intro-
duces an overview of the overall methodology. Sec-
tion 3 discusses a key element in this methodology,
the language used for modeling scalable applications.
We list some of its most important characteristics and
we show a preview of a platform-independent lan-
guage which may meet such characteristics. Section 4
suggests some issues which should be solved in order
to use such language in a concrete environment. Sec-
tion 5 outlines the most important features that a plat-
form should provide in order to support the presented
methodology. Finally, conclusions of this work are
presented in section 6.
2 MODEL DRIVEN APPROACH
As it is known, a software product can become a
very complex creature, so much so that thousands
of developers may be involved in the construction
of a single prototype. To address such a hard job
we need very powerful tools and well defined pro-
cedures. The Software Engineering discipline (De-
Marco, 1979) emerged to give solution to these prob-
lems. It defines a set of best practices and speci-
fies a concrete sequence of steps that any application
development process should go through in order to
guarantee a minimum quality level. This process can
be roughly broken into the conceptualization phase
and the implementation phase. The first stage in-
volves modeling any aspect of the application, includ-
ing static and dynamic characteristics, so that the de-
signer can define with great detail the entire applica-
tion in advance, before initiating the implementation
tasks. To this end the designer needs a strong model-
ing language, capable of capturing any software prop-
erty. Most of the times, the chosen language is the
Object Management Group’s Unified Modeling Lan-
guage (UML) (UML, 2011), (Booch et al., 2005).
Nowadays any serious software project begins
with a robust requirements specification and a com-
plete collection of models describing in detail the
structure and behavior of the software. The latest
software development methodologies take advantage
of this approach, taking as input the software mod-
els and trying to automatize the next part of the pro-
cess, that is to say, the software construction. This
methodology is coined as Model Driven Engineering
(Kent, 2002), (Schmidt, 2006) and the Object Man-
agement Group’s Model Driven Architecture (MDA)
(MDA, 2011), (Kleppe et al., 2003) is one of the
best known initiatives in this field. In MDA the de-
signer defines a Platform Independent Model (PIM)
by using UML, which describes the architecture and
functionality of the software, including action seman-
tics. This model is not bound to any specific plat-
form, rather it describes in an abstract way all aspects
of the modeled software. Then the PIM is translated
into one or more Platform Specific Models (PSMs),
which are models targeted to specific technological
platforms. PSMs are finally translated into executable
code. Translations between models are considered as
model transformations, and a language called Query,
Views, Transformations (QVT) (QVT, 2011) is pro-
vided for defining such mappings.
Working with abstract models has a number of ad-
vantages: (1) models allow engineers to reason about
the relevant application properties, ignoring minor de-
tails usually linked to specific platforms, (2) they in-
crease productivity, since developers work with high
level languages and concepts they are comfortable
with, avoiding low level and error-prone details, and
making easy communication between engineers, and
(3) they provide platform-independence, portability
and cross-platforminteroperability,due to the abstract
nature of the model, which avoids any binding with a
particular platform, and increases the lifespan of the
solution.
Our aim is to follow the presented model driven
approach for designing and deploying scalable ar-
chitectures on a cloud platform. The user captures
every aspect of the application architecture in the
model, specially the scalability features. The plat-
form is responsible for everything else, including dis-
tribution, deployment, execution, monitorizing, on-
demand scaling, etc. The application just works. In
this sense, the application model is some sort of ex-
ecutable specification. To the best of our knowledge,
today no cloud platform requires the specification of
an abstract model in order to deploy a complete solu-
tion, or at least not in the sense we are proposing in
this paper.
In Figure 1 we illustrate this methodology. The
software architect defines the application model along
with the application bits. Both elements may be pack-
TOWARDS THE NEXT GENERATION OF MODEL DRIVEN CLOUD PLATFORMS
495