=Paper= {{Paper |id=Vol-1554/PD_MoDELS_2015_paper_3 |storemode=property |title=Consolas: A Model-Based Tool for Automatic Configuration and Deployment of Cloud Applications |pdfUrl=https://ceur-ws.org/Vol-1554/PD_MoDELS_2015_paper_3.pdf |volume=Vol-1554 |authors=Hui Song,Franck Chauvel,Franck Fleurey,Nicolas Ferry,Arnor Solberg |dblpUrl=https://dblp.org/rec/conf/models/SongCFFS15 }} ==Consolas: A Model-Based Tool for Automatic Configuration and Deployment of Cloud Applications== https://ceur-ws.org/Vol-1554/PD_MoDELS_2015_paper_3.pdf
           C ONSOLAS: A Model-Based Tool for Automatic
         Configuration and Deployment of Cloud Applications
                        Hui Song, Franck Chauvel, Franck Fleurey, Nicolas Ferry, Arnor Solberg
                                    SINTEF ICT, Oslo, Norway. Email: {first.last}@sintef.no



   Abstract—This paper demonstrates C ONSOLAS, an automatic          cloud resources, as well as the constraints and best patterns
tool for the configuration and deployment of software applica-       to configure their applications. Using the specifications as a
tions in cloud. We provide Domain-Specific Modelling Languages       reference, C ONSOLAS helps operators to configure and deploy
for application developers to specify the components in the
application and the possible cloud resources to host them, as        the application iteratively: In each iteration, the operators give
well as the constraints between them. Based on the specifications,   simple hints on what configuration they expect or make small
C ONSOLAS assists application operators in configuring and           changes on the existing configuration, and C ONSOLAS returns
deploying the application automatically. Operators only need to      a complete and valid configuration for the next iteration. The
provide simple hints on how they want to configure the applica-      configurations are in the form of architectural models, which
tion, and the tool generates a complete and valid configuration
and deploys it. C ONSOLAS also supports operators in refining the    are intuitive for operators to understand and will be deployed
configuration both before and after the deployment: Operators        fully automatically into the mainstream cloud platforms by
make small and partial changes on an existing configuration,         C ONSOLAS. The technical basis of the tool is our research on
and the tool automatically completes the changes and performs        multi-cloud modelling, language engineering, and constraint
incremental deployment. We demo the tool with a sample case,         solving on software architectures.
and a video can be found at https://youtu.be/V9WWeFi1ZD8 .
                                                                        In the rest of this paper, we use a sample cloud applica-
                      I. I NTRODUCTION                               tion (introduced in Section II) to show how developers use
   Many people choose to run software applications in a cloud        C ONSOLAS to specify their applications (in Section IV), and
environment. They obtain applications from public reposito-          how operators use it to automatically configure and deploy
ries such as GitHub, configure them according to their own           the applications (in Section V). A demonstration video on the
requirements, and deploy them on the virtual machines (VMs)          same case can be found at https://youtu.be/V9WWeFi1ZD8 .
that they provision from a private or a public cloud. In this
way, these application operators provide their own services to                             II. S AMPLE C ASE
customers based on the existing applications.                           S MART GH [1] is a route planning application developed
   Configuration and deployment of cloud applications is chal-       by Trinity College Dublin. It searches routes on a city scale
lenging. Unlike traditional desktop applications or the modern       taking into consideration the sensor data such as pollution and
mobile Apps that can be downloaded in a monolithic way               noise. Figure 1 summarises its main components: Sensors
and launched with simple set-ups, a cloud application usually        collect data from city sensors or public data sources and
consists of multiple components that can be hosted by different      populate them into a Redis database. Hoppers link the
VMs. Moreover, for performance or security purpose, the same         sensor readings to OpenStreetMap maps to plan smart routes.
component may have multiple instances scattered in different         Webs receive routing requests and display the results from
VMs. Each component may have its own parameters and                  Hoppers. An adaptable Load-Balancer forwards re-
depend on several other components. To configure a cloud             quests to the user-preferred Web. For the sake of diversity,
application, operators need to decide how many instances to          developers provide different Hoppers specialized for foot
create for each component type, set the parameters for each          routing, fast car routing (FCHopper), etc., and also different
instance, link them together, and assign them to proper VMs.         types of Sensors. Each component is wrapped as a docker
These decision points are sophisticatedly related, because of        image, which can be obtained at hub.docker.com/u/songhui/.
the many constraints existing in the application or the cloud           Third-party operators can configure and deploy S MART GH
environment, and therefore, it is difficult and tedious to reach     on their own IaaS (Infrastructure as a Service) environments,
a globally valid configuration. A configuration is also hard to      providing a diverse of smart routing services. Figure 2 shows
refine and adjust - even a small change may require a lot of         a sample configuration, where three Hoppers and their Webs
subsequent revisions on different parts of the configuration to      are hosted by two virtual machines. One Hopper utilizes the
make it globally valid.                                              data from a PollutionSensor, via a Redis database. The
   In this paper, we present the C ONSOLAS (CONstraint               essential part of this configuration, as is highlighted by greyed
SOLving for Architecture Setup) tool for model-based, auto-          boxes in Figure 2, is to decide what types of hopper and
matic configuration and deployment of cloud applications. We         sensors to provide, and how many instances to create for each
provide domain specific modelling languages (DSMLs) for ap-          type. This part is interested to the operator, because it defines
plication developers to specify the components and their target      the features provided by his/her routing service. However, the
       Lb                       Deployable
                                                deploy          Vm                                                                                    CloudML
                                                                                                               Specify applications
                           rmem : Integer




                                                                                                   developer
                                                          vmem : Integer                                         and resources                       type model
                           port: Integer
      Web
                                                                                                                                                             consolas
                                           LocalRedis              Sensor                                      Specify constraints /                     generate constraint
               hp
                       Hopper                                                                                    patterns / cost                         satisfaction problem
                                          "rmem=2"

                                     db                      sdb          OpenStackLarge
  FootHopper        CarHopper                  Redis                      "vmem = 4"                            configuration hints
                                                                                                                                                           solve complete
                                                                                                               (partial configuration/
                                                                           OpenStackHuge                                                                    architecture
                                                                                                                  small changes)
                                                NoiseSensor




                                                                                                   operators
     FastCH            NormalCH                                           "vmem = 8"
                                                                                                                                                      CloudML
    "rmem=4"          "rmem=2"                PollutionSensor
                                                                                                                                                      topology
                         Fig. 1. S MART GH components                                                                                                  model
                                                                                                                            no satisfied
                                                                                                                                         ?
      w1:Web             w2:Web                 w3:Web                   lb:LoadBalancer                                                     yes              Automatic
                                                               lb                                                                                          provisioning and
     port: 81           port: 82               port: 83                  port: 80                                   yes
     mem:1              mem:1                  mem:1                     mem:0                                                                               deployment
                                                                                                                       need
            hp                                                                                                        change
                                                                   db
                                                                            LocalRedis                                                             running system
     h1:FastCH        h2:FootHopper          h3:FootHopper
    rmem: 4           rmem: 1                rmem: 1
                                                                         rmem: 2                                    Fig. 3. C ONSOLAS process overview
                                                                         port:6397
    port:8080         port:8081              port:8080
                                                                                     sdb
   deploy                                 deploy
                                                                        s1:PollutionSensor
    v1:OpenStackHuge                 v2:OpenStackLarge                                       make the changes that they cares, and the tool completes the
                                                                        rmem: 1
    vmem: 8                          vmem: 4                            port:0
                                                                                             required co-changes automatically, and deploys all the changes
                         Fig. 2. S MART GH components
                                                                                             to the system incrementally.

                                                                                                                          III. T OOL OVERVIEW
operator has additional tedious jobs to do to reach a proper                                    Figure 3 summarises the process of using C ONSOLAS to
S MART GH configuration, such as to arrange the component                                    configure and deploy a cloud application. The shadowed part
instances into proper VMs, add auxiliary components (i.e.,                                   of the flowchart is the internal process of the tool, and the
web, load balancers, database), link the components, assign                                  rest is the activities and artefacts required by tool users. We
port numbers, etc. These additional jobs are difficult because                               identify two different roles of tool users, i.e., the developers
there are many constraints that the operator must obey. For                                  and the operators, and divide the process into two parts, each
example, a VM cannot host so many components that the                                        for a different user role.
total memory consumption of these components exceeds the                                        Developers specify the types of components and resources.
VM’s capacity; two components on the same VM should                                          After that, they specify the constraints that a proper con-
have different port numbers; every Hopper needs its own                                      figuration should follow. The artefacts produced by the two
Web; a Hopper and its database (if there is one) should                                      activities are a type model specified in C LOUD ML (a DSML
better be hosted by the same VM, etc. An ideal situation                                     for cloud specification developed by SINTEF) and a set of
would be that that operators only suggest the essential part                                 First-Order Logic constraints (specified by a python-based
of the configuration, and all the tedious part is automatically                              DSL, implemented for C ONSOLAS). Details and samples of
generated according to the constraints and patterns. This is                                 the specifications can be found in Section IV.
the automatic configuration supported by C ONSOLAS. It also                                     The specifications are machine-readable to C ONSOLAS,
deploys the configuration automatically into the IaaS platform.                              which helps operators configure their own services from the
   Application configuration is not a once-for-all task, and                                 application. The process starts from the operators’ providing a
operators may need to adjust their S MART GH configurations                                  partial configuration as a hint. C ONSOLAS then automatically
either before they are deployed, or after they have been running                             generates a valid configuration, and visualize it to the operator.
for a while, to optimise the service or to meet new user                                     If the operators are not satisfied with the configuration, they
requirements. For example, when there are more user requests                                 can make changes on it and ask C ONSOLAS to complete the
for walking routes, the operator may want to add a new                                       changes. This loop continues until a satisfying configuration
FootHopper into the configuration in Figure 2. For such ad-                                  is obtained, and C ONSOLAS will automatically deploy the
justment, a small change may require complicated co-changes                                  configuration. Finally, after the application is already running,
to reach a valid configuration again. For the sample scenario,                               operators can still change the configuration. Their changes,
the co-changes will be to add a Web for the new hopper,                                      along with the necessary subsequent changes suggested by
migrate a component from v1 to v2 to save space for the new                                  C ONSOLAS, will be deployed into the system in an in-
components, linking it to the database, etc.. C ONSOLAS also                                 cremental way. Details about how operators provide partial
supports such agile and incremental reconfiguration: Operators                               configuration and modify it can be found in Section V.
 1    deployment model SmartGHDiv                                   1    g_forall((x, Hopper),
 2    provider openstack_nova : ...                                 2      g_exists((y, Web), hp(y)==x)))
 3    types{                                                        3    g_forall([(x, Hopper)],
 4      vm OpenStackLarge{                                          4      soft(50, Implies(alive(db(x)),
 5        provider : openstack_nova                                 5        deploy(x)==deploy(db(y)))))
 6        ram : 4096, core : 1,                                     6    g_forall([(x, VM)],
 7        os : "ubuntu", os64,                                      7      soft(mem(x)*10, Not(alive(x))))
 8        provided host ubuntuPrv
 9        ...}                                                                   Fig. 5. Sample constraints for S MART GH
10      internal component FootHopper{
11        required host ubuntuReq
12        provided communication hopperPrv                         needs a database, then the two components should better be
13        required communication redisReq                          deployed on the same VM. This is a soft constraint with a
14        resource DockerImage{
                                                                   priority as 50 (in the middle between 0 and 100). Finally, the
15          download: "sudo docker pull..."
16          start: "cd ˜; sudo docker run..."                      last constraint sets up a cost to use any VM instance, which is
17            }                                                    correlated to the memory size of the VM. This soft constraints
18       communication hp                                          prevents C ONSOLAS from using up too much cloud resources.
19         from hopperReq to hopperPrv...
20    }                                                                 V. AUTOMATIC C ONFIGURATION AND D EPLOYMENT
21    instances{\\left empty for auto config}                        C ONSOLAS helps operators automatically configure and
22    }
                                                                   deploy a cloud application in their own ways. In this section,
        Fig. 4. Excerpt of C LOUD ML specification for S MART GH   we first use a simple scenario to illustrate the configuration and
                                                                   deployment process, and then briefly introduce the research
                                                                   approaches that enable this automatic process.
     IV. S PECIFICATION OF R ESOURCE AND A PPLICATION
                                                                   A. A configuration and deployment scenario
   C ONSOLAS needs application developers to specify the             As a sample scenario, We show how an operator uses C ON -
component and resources types, and the constraints on them.        SOLAS to achieve the S MART GH configuration as described
The specification is similar to the “INSTALL” manuals of           in Section II and Figure 2, and deploy it on a private cloud.
traditional software applications, but are machine-readable to        Before configuration, the operator needs to have the applica-
the C ONSOLAS tool. We provide two languages to support the        tion and resource specification as described in Section IV, and
specifications.                                                    an account from a cloud provider (in this case, it is SINTEF’s
   C ONSOLAS integrates an existing language named                 private cloud on OpenStack).
C LOUD ML for the specification of applications and cloud             In the first iteration, the operator gives no input to C ON -
resources. Figure 4 shows an excerpt of the C LOUD ML              SOLAS (i.e., an empty hint), and C ONSOLAS returns an initial
model for S MART GH. In the types section, the S MART GH           configuration, with only a BasicHopper and a Web hosted
developers define the resource and component types, ı.e.,          by one VM. This is obviously one of the smallest valid
the boxes in Figure 1. For a resource type, such as the            configuration of S MART GH, and C ONSOLAS does not add
VM OpenStackLarge, they specify the cloud provider,                any additional component because it has a cost to do so (i.e.,
some common arguments across all the instances of this             breaking the software constraints like Line 6 of Figure 5).
type (such as 4096MB of RAM, 64bit Ubuntu OS, etc.), and              The initial configuration does not satisfy the operator, who
the hosting service they can provide. The developers also          expects two instances of FootHoppers, one instance of
define a component type FootHopper: It requires a hosting          FastHopper, and a PollutionSensor. The operator
service (not surprisingly the same as the one provided by          inputs this requirement into C ONSOLAS as the following
OpenStackLarge) and a communication service from a                 configuration hints.
database. The component can be downloaded and started using        typeof(h1)==FastCH !
the specified docker commands. Finally, a communication            typeof(h2)==FootHopper !
relation connects the communication services provided by           typeof(h3)==FootHopper !
Hoppers to the service required by Web. The instances              And(db(h3)==sdb(s1),typeof(s1)==PollutionSensor)!
section of this model is left empty, which will be filled with        The hints are essentially simple constraints on the config-
the automatically generated configuration.                         uration, and are written in the same C ONSOLAS constraint
   C ONSOLAS provides another domain-specific language for         language as in Section IV. The first three hints require three
developers to specify constraints on top of the type specifica-    hoppers to be of specific types, and “!” means that the hints
tions. We design and implement the language as an embedded         apply to all the iterations afterwards. The last hint requires
one on the basis of Python. Figure 5 shows three sample            that h3 connects to a PollutionSensor via a database.
constraints specified by the C ONSOLAS constraint language.        The names of component instances (e.g., h2, s1) are syntax
The first constraint specifies that for any Hopper, there must     sugars for operators to avoid the length expressions such as
be a Web for it. The second one specifies that if a Hopper         ”there exists three Hoppers, they are different, and their types
are...” Receiving these hints, C ONSOLAS automatically returns     framework [3]. It first instantiates the required VMs, and then
the configuration that has been shown in Figure 2. Only the        logs-in to the VMs to execute the download, configure
greyed component instances are directly required by the hints,     and start commands specified with each component.
but all the rest in the configuration is automatically generated
by C ONSOLAS. For example, it generates two Webs for the                                    VI. R ELATED W ORK
two new Hoppers, according to the constraint at Line 1 of             Chef [4] and Puppet [5] are the state-of-the-art cloud
Figure 5, enlarges v1 into an OpenStackHuge VM in order            management tools, and both of them support the configuration
to be able to host all the Webs and two Hoppers. Then it           of cloud applications based on scripting languages. Scripts
instantiates a LoadBalancer because there are more than            are useful when defining command sequences to configure
one Webs. Finally, according to the last hints, it creates a       and deploy individual components, and these tools provide
PollutionSensor s1 and a LocalRedis between s1                     mechanisms to reuse scripts for existing components. Yet
and h1. According to the constraints in Figure 5 Line 3, h3        operators still need to manually design what components and
and r1 are deployed to the same v2.                                resources to use and how to link them together. From this point
   Now the operator is satisfied with the configuration, and she   of view, C ONSOLAS’s automatic architecture configuration is
provides C ONSOLAS the endpoint and the account credential         an ideal complement to these tools.
of her target cloud platform and launches the deploy command.         The automatic configuration in C ONSOLAS shares the sim-
C ONSOLAS will automatically create two VMs, and instan-           ilar idea with the research on auto-completion and auto cor-
tiates 9 docker containers and link them together according        rection of modelling tools, such as Egyed’s work for UML [6]
to the configuration. After the automatic deployment process,      and Xiong et al.’s work on Feature Model [7]. However,
the operator can get the IP address of v1 (where the load          model editors suggest completions based on general-purpose
balancer is deployed) from the deployment log, and use port        rules or constraints, whereas C ONSOLAS allows developers to
80 to access the routing services.                                 define application-specific constraints. Moreover, as a tool for
   After the system is running, the operator can still modify      automatic deployment, C ONSOLAS always looks for complete
the configuration. For example, for performance purpose, she       configurations rather than scattered completion suggestions.
can require w3 and h3 to be hosted in the same VM:
   deploy(w3)==deploy(hp(w3))                                                                VII. C ONCLUSION
Due the resource limitation, C ONSOLAS will create a new VM           This paper introduces the C ONSOLAS tool for automatic
in OpenStackHuge, migrate all the components on v2, as             configuration and deployment of cloud applications. Based
well as w3 to the new VM, and finally terminate v2.                on developers’ specification on the application, resource and
                                                                   constraints, C ONSOLAS generates configurations of the ap-
B. Research behind the tool
                                                                   plication and deploys them automatically to the cloud en-
   The automatic configuration and deployment of C ONSOLAS         vironment. Future work will be focused on improving the
are based on our research of constraint-driven architecture        usability, such as providing a web-based GUI and a set of
configuration and C LOUD ML, respectively. C LOUD ML is a          template for application and constraint specification. We will
language for the modelling of cloud resources and topology.        also investigate how to infer the user preference from their
C ONSOLAS translate the C LOUD ML model together with the          refinement iterations.
constraints into a Satisfactory Modulo Theory (SMT) problem:
Component instances are represented by enumeration items.                                  ACKNOWLEDGEMENT
Types, attributes, and connection between components are             This work is supported by the EU FP7-ICT-2011-9 No.
represented by uninterpreted functions. The constraints are        600654 DIVERSIFY project
translated into First Order Logic assertions on these functions,
and can be either hard or soft. During the configuration                                         R EFERENCES
process, C ONSOLAS first transform the operators’ hints into       [1] V. Nallur, A. Elgammal, and S. Clarke, “Smart Route Planning
constraints and integrate them into the SMT problem. After              Using Open Data and Participatory Sensing,” in Open Source Systems:
that, it launches an constraint solving process to search for           Adoption and Impact. Springer, 2015, pp. 91–100. [Online]. Available:
                                                                        https://github.com/DIVERSIFY-project/SMART-GH
a solution to the SMT problem, i.e., giving an interpretation      [2] H. Song, X. Zhang, N. Ferry, F. Chauvel, A. Solberg, and G. Huang,
to each of the functions. The solution satisfies all the hard           “Modelling adaptation policies as domain-specific constraints,” in Model-
constraints and minimize the total costs of violated soft con-          Driven Engineering Languages and Systems, 2014, pp. 269–285.
                                                                   [3] N. Ferry, H. Song, A. Rossini, F. Chauvel, and A. Solberg, “Cloud
straints. For incremental configuration, C ONSOLAS will also            MF: Applying MDE to Tame the Complexity of Managing Multi-cloud
generate a set of additional soft constraints according to the          Applications,” in Proceedings of the 2014 IEEE/ACM 7th International
previous configuration, so that the new configuration will have         Conference on Utility and Cloud Computing, 2014, pp. 269–277.
                                                                   [4] Cloud Management Chef, https://www.chef.io.
as little deviation as possible from the previous one. Due to      [5] The Puppet Lab, https://puppetlabs.com/.
the space limitation, we will not go into the details of the SMT   [6] A. Egyed, “Fixing inconsistencies in uml design models,” in Software
problem and the transformation. Interested readers can refer            Engineering, 2007. ICSE 2007. 29th International Conference on. IEEE,
                                                                        2007, pp. 292–301.
to our previous publication [2]. C ONSOLAS transforms the          [7] Y. Xiong, A. Hubaux, S. She, and K. Czarnecki, “Generating range fixes
solution back into a C LOUD ML instance model for automatic             for software configuration,” in Software Engineering (ICSE), 2012 34th
deployment. The deployment is done by the C LOUD ML                International Conference on. IEEE, 2012, pp. 58–68.