<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Summary: Architecture Design Evaluation of PaaS Cloud Applications using Generated Prototypes</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>David Gesvindr</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ondrej Gasior</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Barbora Buhnova</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Faculty of Informatics, Masaryk University</institution>
          ,
          <addr-line>Brno</addr-line>
          ,
          <country country="CZ">Czech Republic</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Platform as a Service (PaaS) cloud brings great benefits of an elastic platform with many prefabricated services. At the same time, however, it challenges software architects who need to navigate a rich set of PaaS services, variability of PaaS cloud environment and quality conflicts in existing design tactics, which makes it very hard to foresee the impact of architectural design decisions on the overall application quality. To support the architects in the design of PaaS cloud applications, we propose a design-time quality evaluation approach for PaaS cloud applications based on automatically generated prototypes, which are deployed to the cloud and evaluated in the context of multiple quality attributes and environment configurations. In this paper, we outline the approach and its implementation in a prototype generation and evaluation tool, referred to as PaaSArch Cloud Prototyper1.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Cloud Computing</kwd>
        <kwd>PaaS Cloud</kwd>
        <kwd>Software Architecture Design</kwd>
        <kwd>Prototype Generation</kwd>
        <kwd>Quality Evaluation</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        PaaS cloud has over time became a popular platform for hosting software applications, which
however need to be architected consciously to take advantage of the Paas cloud services [
        <xref ref-type="bibr" rid="ref2 ref3">2, 3</xref>
        ].
Unfortunately, existing architectural patterns and quality assessment methods used for
onpremise applications provide very little guidance to software architects during this endeavour.
The existing model-based quality assessment methods struggle in the PaaS cloud context namely
due to missing information about the inner architecture of the PaaS cloud services, which is in
majority of cases not published by the cloud provider. Moreover, most analytical tools work well
in an environment with known architecture and amount of available resources (CPU, memory,
I/O operations, network bandwidth) but experience problems in the PaaS cloud environment, as
these required inputs are not available. A tool capable of quality (e.g., performance) predictions
of modelled application in the PaaS cloud has to deal with the following challenges as described
in [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]: hidden complexity of the platform, multi-tenant environment and frequent updates of
the environment. These aspects that make it practically impossible to estimate PaaS cloud
application performance and other characteristics without its actual deployment to the cloud.
Thus, software architects are often relying on costly manual implementation of application
prototypes, profiled after deployed in the PaaS cloud target environment. That is however very
tedious and costly.
      </p>
      <p>To address this, we propose an approach and tool set, called PaaSArch Cloud Prototyper1,
supporting automated prototyping of PaaS cloud applications, enabling quick assessment of
various architectural options and integrating diferent PaaS cloud services. The tool receives a
model of the application architecture (together with some details about the inner behaviour of
the application and its usage of cloud services), and translates it via an automated process into
a source code of a fully functional application prototype, which is together with automatically
generated sample data deployed to the cloud and benchmarked.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Related Work</title>
      <p>
        Model-driven quality prediction approaches are a popular way to support quality-driven design
of software systems. To this end, the application is modeled with UML or other domain
specific modelling notation, e.g. Palladio Component Model (PCM) [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. Then, the model of
the architecture is automatically transformed into a predictive model (e.g. Markov Chain or
Layered Queuing Network) [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] and evaluated. On top of the model, other tools are sometimes
built, like SPACE4CLOUD [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] or SimuLizar [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. However, in Paas cloud, these approaches sufer
from the unpredictability of the PaaS cloud environment itself, as discussed above.
      </p>
      <p>
        Another way to assess the quality of the PaaS applications is to develop a simplified version
of the application, deploy the application and run a set of benchmarks. The benefit of this option
is that the system resources are closer to the final execution environment [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. The StressCloud
[
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] simplifies the process (of full application development) with the generation of synthetic
workload based on modeled CPU, memory and IO utilization using deployed agents in virtual
machines (IaaS). However, such support is not yet available for PaaS cloud.
      </p>
      <p>
        Instead of synthetic workload, a better option is to generate prototypes of the application
from its model. This strategy is used by ProtoCom [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], which generates prototypes of Java
applications. Initial attempts to support a variety of platforms [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] remained at conceptual
level [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. In this work, we complement the state of the art by proposing and implementing
prototype-generation solution for PaaS cloud.
      </p>
    </sec>
    <sec id="sec-3">
      <title>3. Our approach</title>
      <p>Our approach allows software architects to evaluate performance related quality metrics of a
proposed PaaS cloud application’s architecture in early design stages by leveraging automatically
generated prototypes of the application. In this way, the architects can evaluate diferent variants
of the proposed architecture with significantly lower efort than manual implementation of
prototypes. In efect, they have better continuous control over the quality of the application
and can prevent later costly reimplementation. As the software architecture of the application
evolves, the model can be updated and performance of newly generated prototype can be
compared with previous versions of the architecture.</p>
      <p>The individual steps of our approach (done by the software architect as well as the prototyping
tool) are depicted in Figure 1.</p>
      <p>1Project homepage:
https://lasaris.fi.muni.cz/research/software-architecture-optimization-in-paas-cloudapplications/paasarch-cloud-prototyper-tool</p>
      <p>1. Model creation
Manual process done by SW architect</p>
      <p>Output: Application Model</p>
      <sec id="sec-3-1">
        <title>2. Model analysis and validation</title>
        <p>Fully automated process
Output: Validated Application Model</p>
      </sec>
      <sec id="sec-3-2">
        <title>3. Resource allocation</title>
        <p>Fully automated process
Output: Allocated resources in the cloud and their
connection strings</p>
      </sec>
      <sec id="sec-3-3">
        <title>4. Prototype source-code generation</title>
        <p>Fully automated process
Output: Generated source code of modelled application
in target language (C#, Java)</p>
      </sec>
      <sec id="sec-3-4">
        <title>5. Prototype compilation and deployment</title>
        <p>Fully automated process
Output: Application deployed in the cloud ready for
benchmark execution
(optional) 6. Sample data generation</p>
        <p>Fully automated process
Output: Application storage filled with sample data
required for benchmark execution</p>
      </sec>
      <sec id="sec-3-5">
        <title>7. Prototype evaluation</title>
        <p>Manual process done by SW architect
Output: Performance measurements of the prototype
e
p
y
t
o
t
o
r
p
e
h
ft
o
e
c
n
a
m
r
o
f
r
e
p
n
o
d
e
s
a
b
e
r
u
ittc
e
h
c
r
a
s
‘
n
o
itc
a
il
p
p
a
e
h
ft
o
s
t
n
e
m
t
s
u
j
d
A
1. Model creation – The software architect creates a model of the designed application
that describes all important aspects that significantly influence evaluated quality metrics.</p>
        <p>Simple sample model is in Figure 2.
2. Model analysis and validation – The model is loaded by the tool and is validated
against our meta-model to determine if the prototype can be correctly generated.
3. Resource allocation – One of the advantages of our tool is that it automatically takes
care of resource allocation in the cloud environment. Resources need to be allocated prior
to code generation as connection strings need to be incorporated into the prototype.
4. Prototype source-code generation – Based on the description of application’s behavior
in the model, the source code of executable prototype is generated.
5. Prototype compilation and deployment – Generated source code is compiled and the
executable application is deployed to the target cloud hosting environment.
6. Sample data generation – Another advantage of our tool is that it can automatically
generates sample data based on the description of their volume and complexity in the
model.
7. Prototype evaluation – When the prototype is ready for evaluation, our tool generates
a list of URL endpoints that can be passed to current state-of-the-art web benchmark
tools.</p>
        <p>C:\Users\David\Documents\simple-sample-app.json</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. The Tool</title>
      <p>
        Steps 2–6 in our approach are fully automated using our tool PaaSArch Cloud Prototyper. The
the tool itself is implemented as a set of libraries in the .NET framework using C# packed
together with a console application, which displays the progress of prototype generation based
on input model. The tool currently contains code generators, which generate final prototypes
in .NET/C# and supports automated deployment and management of Microsoft Azure cloud
resources. Thanks to its extensibility, new code generators can be implemented to support
extensibility of the application model by adding new operations and cloud resources. Support for
additional cloud providers (Amazon, Google, etc.) can be added via resource manager plug-ins.
Detailed description of the tool’s architecture is available in [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
      </p>
    </sec>
    <sec id="sec-5">
      <title>5. Evaluation</title>
      <p>
        Our approach and outcomes of the implemented prototype generator were evaluated on multiple
case studies as described in [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Numerous variants of the software architecture of designed
applications were modeled and evaluated using our approach. Based on generated prototypes
and their evaluation, we were able to choose the variant of the architecture design with the
most desirable qualities based on the given requirements of the project. We also evaluated that
both the prototype and the final implementation manifested the same degree of scalability.
      </p>
    </sec>
    <sec id="sec-6">
      <title>6. Conclusion</title>
      <p>In our work, we take advantage of the cloud elasticity and introduce a design-time quality
evaluation technique for PaaS applications based on automatically generated application prototypes,
which can be deployed to the cloud and evaluated in the context of multiple quality attributes
and environment configurations. As part of this work, we discuss the implementation of the
approach in terms of the PaaSArch Cloud Prototyper, which automates the approach to assist
software architects in the design of cloud applications that will be efectively utilizing the PaaS
cloud platform and combining the available services in an optimal way.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>D.</given-names>
            <surname>Gesvindr</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Gasior</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Buhnova</surname>
          </string-name>
          ,
          <article-title>Architecture design evaluation of paas cloud applications using generated prototypes: Paasarch cloud prototyper tool</article-title>
          ,
          <source>Journal of Systems and Software</source>
          <volume>169</volume>
          (
          <year>2020</year>
          )
          <article-title>110701</article-title>
          . URL: https://www.sciencedirect.com/science/article/pii/ S0164121220301485. doi:https://doi.org/10.1016/j.jss.
          <year>2020</year>
          .
          <volume>110701</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>D.</given-names>
            <surname>Gesvindr</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Buhnova</surname>
          </string-name>
          ,
          <article-title>Performance challenges, current bad practices, and hints in paas cloud application design</article-title>
          ,
          <source>SIGMETRICS Perform. Eval. Rev</source>
          .
          <volume>43</volume>
          (
          <year>2016</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>D.</given-names>
            <surname>Gesvindr</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Buhnova</surname>
          </string-name>
          ,
          <article-title>Architectural tactics for the design of eficient paas cloud applications</article-title>
          ,
          <source>in: 2016 13th Working IEEE/IFIP Conference on Software Architecture (WICSA)</source>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>S.</given-names>
            <surname>Becker</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Koziolek</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Reussner</surname>
          </string-name>
          ,
          <article-title>The palladio component model for model-driven performance prediction</article-title>
          ,
          <source>J. Syst. Softw</source>
          .
          <volume>82</volume>
          (
          <year>2009</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>H.</given-names>
            <surname>Koziolek</surname>
          </string-name>
          ,
          <article-title>Performance evaluation of component-based software systems: A survey, Performance Evaluation 67 (</article-title>
          <year>2010</year>
          ).
          <source>Special Issue on Software and Performance.</source>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>D.</given-names>
            <surname>Franceschelli</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Ardagna</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Ciavotta</surname>
          </string-name>
          , E. Di Nitto,
          <article-title>Space4cloud: A tool for system performance and costevaluation of cloud systems</article-title>
          ,
          <source>in: Proceedings of the 2013 International Workshop on Multi-cloud Applications and Federated Clouds</source>
          , ACM,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>S.</given-names>
            <surname>Lehrig</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Eikerling</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Becker</surname>
          </string-name>
          , Scalability, elasticity, and
          <article-title>eficiency in cloud computing: A systematic literature review of definitions and metrics</article-title>
          ,
          <source>in: Proceedings of the 11th Int. ACM SIGSOFT Conference on Quality of Software Architectures, ACM</source>
          ,
          <year>2015</year>
          , pp.
          <fpage>83</fpage>
          -
          <lpage>92</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>F.</given-names>
            <surname>Chen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Grundy</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.-G.</given-names>
            <surname>Schneider</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Yang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Q.</given-names>
            <surname>He</surname>
          </string-name>
          ,
          <article-title>Stresscloud: A tool for analysing performance and energy consumption of cloud applications</article-title>
          ,
          <source>in: Proceedings of the 37th International Conference on Software Engineering - Volume</source>
          <volume>2</volume>
          , ICSE '15, IEEE Press,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>C.</given-names>
            <surname>Klaussner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Lehrig</surname>
          </string-name>
          ,
          <article-title>Using java ee protocom for sap hana cloud</article-title>
          ,
          <source>in: SOSP'14 Symposium on Software Performance: Joint Descartes/Kieker/Palladio Days</source>
          <year>2014</year>
          ,
          <year>2014</year>
          , p.
          <fpage>17</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>S.</given-names>
            <surname>Becker</surname>
          </string-name>
          ,
          <article-title>Coupled model transformations for QoS enabled component-based software design</article-title>
          ,
          <source>Ph.D. thesis</source>
          , Universität Oldenburg,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>