Enabling Devops Collaboration and Continuous Delivery Using Diverse Application Environments
Enabling Devops Collaboration and Continuous Delivery Using Diverse Application Environments
1 Introduction
Continuous delivery [3] as an emerging paradigm aims to significantly shorten
software release cycles by bridging existing gaps between developers, operations
personnel (system administrators), and other parties involved in the delivery pro-
cess. DevOps [4] is often considered in this context as an approach to improve
the collaboration between development (‘dev’) and operations (‘ops’). As a result
of improved collaboration, new software releases can be made available much
faster. Especially users, customers, and other stakeholders in the fields of Cloud
services, Web & mobile applications, and the Internet of Things expect quick
responses to changing demands and occurring issues. Consequently, shortening
the time to make new releases available becomes a critical competitive advantage.
In addition, tight feedback loops involving users and customers based on con-
tinuous delivery ensure building the ‘right’ software, which eventually improves
c Springer International Publishing Switzerland 2015
C. Debruyne et al. (Eds.): OTM 2015 Conferences, LNCS 9415, pp. 348–358, 2015.
DOI: 10.1007/978-3-319-26148-5 23
Enabling DevOps Collaboration and Continuous Delivery 349
1
Chef: http://www.chef.io
2
Jenkins: http://jenkins-ci.org
3
Docker: http://www.docker.com
350 J. Wettinger et al.
etc.) as the key building blocks of continuous delivery pipelines. For this purpose,
we provide the means to collaboratively maintain such application environments,
allowing developers and operations personnel to share and utilize a common meta-
model. As part of this effort we reuse concepts from the fields of requirements
engineering and software configuration management. The major contributions of
this paper can therefore be summarized by the representation of (i) environment
requirements imposed by applications across different dimensions and of (ii) appli-
cation environment topologies to interlink corresponding requirements, and (iii) the
systematic resolution of these requirements.
The remainder of this paper is structured as follows: Section 2 presents a
motivating scenario that is used throughout the rest of this work. Section 3
introduces the fundamental concepts of our proposal, together with their for-
malization as environment-specific requirements. Section 4 discusses how these
requirements can be resolved into concrete application environments. Finally,
Section 5 concludes the paper and outlines future work.
2 Motivating Scenario
In this section we introduce a Web shop application, which is used as motivating
scenario and running example for this work. Figure 1 outlines the three-tier archi-
tecture of the Web application, consisting of a front-end, back-end, and product
database. The front-end is implemented in HTML and JavaScript to provide the
Web shop’s user interface. It communicates with the PHP-based back-end using
HTTP messages containing JSON data. The back-end itself provides a RESTful
API to enable the HTTP-based communication with arbitrary clients such as
the Web shop front-end or a mobile shopping application. Product information
(inventory, etc.) are stored in the product database, which is based on a MySQL
database server.
Enabling DevOps Collaboration and Continuous Delivery 351
3 Fundamentals
In this section we focus on introducing a set of fundamental concepts that allow
us to address the challenges identified in the previous sections. More specifi-
cally, we propose for this purpose the concept of application environment require-
ments (AERs) and discuss their relation to other existing kinds of requirements
(Section 3.1). We then show how application environment topologies (AETs) can
be used to describe application environments by interlinking AERs (Section 3.2).
Finally, we outline how to collaboratively establish continuous delivery pipelines
based on AERs and AETs (Section 3.3).
EU Data Protection Directive [6]. As already outlined by the Web shop example
(Section 2) environment-specific AERs need to be considered and satisfied when
building a corresponding environment such as a development environment or pro-
duction environment. Some AERs are relevant for multiple environments such
as the PHP runtime required by the back-end of the Web application: this does
not only affect production and test environments, but also development envi-
ronments, e.g., to allow developers to analyze the impact of their code changes
immediately and locally on their developer environment.
The following AER predicates can be identified based on this definition to prop-
erly express AERs for applications such as the Web shop application described
previously:
im,include
– P<label> : E → {true, f alse} implies that a solution for a particular entity
e ∈ E must immediately exist in the application stack (e.g., the runtime in
which a component is executed); otherwise the predicate evaluates to f alse.
ev,include
– P<label> : E → {true, f alse} implies that a solution for a particular entity
e ∈ E must eventually exist in the application stack (e.g., the underlying
operating system); otherwise the predicate evaluates to f alse.
im|ev,exclude
Further AER predicates can be defined in this fashion such as P<label> :
im|ev,include
E → {true, f alse} as the inversion of P<label> . The ‘|’ symbol is used to
indicate variants of the defined predicates, e.g., im|ev to immediately or eventu-
im|ev,equals|eqGr
ally exclude solutions. Moreover, P<label> : E × P × V → {true, f alse}
im|ev,include
implies that P<label> (e) = true for a particular entity e ∈ E and the given
solution owns a property p ∈ P and its value equals to (or is greater than) v ∈ V;
otherwise the predicate evaluates to f alse. As an example referring to the Web
shop application, we may define the following AER predicate to express the
requirement that the back-end must be immediately hosted on a PHP runtime,
version 5.5 or better: PPim,eqGr
HP (‘PHP’, ‘version’, ‘5.5’). Such predicates can be
bundled as logical expressions using logical operators such as:
PPim,eqGr
HP (‘PHP’, ‘version’, ‘5.5’) ∧ PUev,include
buntu (‘Ubuntu OS’) ∧ ...
Enabling DevOps Collaboration and Continuous Delivery 353
Fig. 2. Example for continuous delivery pipeline (CDP) for the Web shop application
Fig. 3. Middleware solutions stored in the knowledge base and organized in a taxonomy
4 Requirements Resolution
In order to create an instance of a particular application environment (e.g., a
development environment for the Web shop application outlined in Section 2),
all AERs attached to an unresolved AET need to be satisfied. In Section 4.1 we
outline the usage of a knowledge base (KB) for the purpose of resolving AERs.
Based on the existence of such a KB, Section 4.2 discusses how diverse appli-
cation environments (development, production, etc.) can be built by deriving
resolved topologies.
The ultimate goal of our work is to allow the automated building of diverse appli-
cation environments as key building blocks of a continuous delivery pipeline for
a particular application such as the Web shop introduced in Section 2. There-
fore, we need to provide the means to derive a suitable, resolved topology that
satisfies all associated AERs. The following process can be used for this purpose:
13
More information on the KB is available at: http://github.com/jojow/aer-paper
Enabling DevOps Collaboration and Continuous Delivery 357
derived from the knowledge base, considering all potential topology alternatives.
Both α- and γ-topologies are typed graphs with inheritance (essentially, class
diagrams using only association and inheritance relations, expressed as graphs),
from the combination of which a set of viable topologies can be derived. Viable
topologies in the context of [1] refer only to the fact that the topology graph is
typed over the elements of the graph resulting from the union of the α- and γ-
topologies, also called the μ-topology. A potentially large set of viable topologies
can be created by the morphism from the type graph of the μ-topology to the
typed graphs of application topologies. For this purpose, a filter function σ is
used to prune down the number of potentially viable topologies T . In principle,
a set of constraints C is defined based on environment preferences for each viable
topology T :
T if condition(c)=true,
σ(T, c) = , where T ∈ T , c ∈ C.
∅ otherwise.
Filter functions can be chained to allow for multiple such constraints to be
applied. Following [1], we also use utility functions to rank the filtered, viable
topologies (e.g., minimum number of nodes) in order to find the most suitable
topology that satisfies all AERs and the corresponding environment preferences.
Any kind of function can be used as a utility function, as long as it allows for the
mapping from the space of viable topologies to that of real numbers. For exam-
ple, a utility function could return the number of nodes in the topology graph,
aiming for minimizing the number of components required for the deployment
of the application. Multiple dimensions can be combined, e.g., number of nodes
with costs of operating the application under a given load, as discussed in [1].
We finally performed an evaluation using a case study based on the Web shop
application14 .
5 Conclusions
Continuous delivery and DevOps have emerged with the goal to bring together
developers and operations personnel by enabling their efficient collaboration.
This is technically supported by establishing automated continuous delivery
pipelines to significantly shorten release cycles without quality degradation.
Diverse application environments (development, test, production, etc.) form the
key building blocks of a continuous delivery pipeline. In the previous sections
we proposed the concept of application environment requirements as a partic-
ular kind of non-functional requirements and formalized their representation
using predicate logic, which allowed us to define mappings between application
topologies and application environment requirements. For the resolution of these
requirements into concrete environments we proposed the usage of a knowledge
base in combination with a resolution process with distinct tasks. With respect
14
More information on the evaluation is available at: http://github.com/jojow/
aer-paper
358 J. Wettinger et al.
Acknowledgments. This work is partially funded by the FP7 EU-FET project 600792
ALLOW Ensembles.
References
1. Andrikopoulos, V., Gómez Sáez, S., Leymann, F., Wettinger, J.: Optimal distribu-
tion of applications in the cloud. In: Jarke, M., Mylopoulos, J., Quix, C., Rolland, C.,
Manolopoulos, Y., Mouratidis, H., Horkoff, J. (eds.) CAiSE 2014. LNCS, vol. 8484,
pp. 75–90. Springer, Heidelberg (2014)
2. Günther, S., Haupt, M., Splieth, M.: Utilizing Internal Domain-Specific Lan-
guages for Deployment and Maintenance of IT Infrastructures. Tech. rep., Very
Large Business Applications Lab Magdeburg, Fakultät für Informatik, Otto-von-
Guericke-Universität Magdeburg (2010)
3. Humble, J., Farley, D.: Continuous Delivery: Reliable Software Releases through
Build, Test, and Deployment Automation. Addison-Wesley Professional (2010)
4. Hüttermann, M.: DevOps for Developers. Apress (2012)
5. Liaskos, S., McIlraith, S.A., Sohrabi, S., Mylopoulos, J.: Representing and Reason-
ing About Preferences in Requirements Engineering. Requirements Engineering
16(3), 227–249 (2011)
6. Louridas, P.: Up in the Air: Moving Your Applications to the Cloud. IEEE Soft-
ware 27(4), 6–11 (2010)
7. Mell, P., Grance, T.: The NIST Definition of Cloud Computing. National Institute
of Standards and Technology (2011)
8. Newman, S.: Building Microservices. O’Reilly Media (2015)
9. Papazoglou, M., van den Heuvel, W.: Blueprinting the Cloud. IEEE Internet
Computing 15(6), 74–79 (2011)
10. Wettinger, J., Andrikopoulos, V., Leymann, F.: Automated capturing and sys-
tematic usage of devops knowledge for cloud applications. In: Proceedings of the
International Conference on Cloud Engineering (IC2E). IEEE Computer Society
(2015)