Towards a Deployment System for Cloud Applications
Ruici Luo
1,3
, Wei Ye
2,3
∗
, and Shikun Zhang
2,3
1
School of Electronics Engineering and Computer Science, Peking University, China
2
National Engineering Research Center for Software Engineering, Peking University, China
3
Key Laboratory of High Confidence Software Technologies, Ministry of Education
{luoruici,wye,zhangsk}@pku.edu.cn
Abstract
A sophisticated deployment system plays an important
role in automating and improving the process of software
delivery, especially for cloud applications. Since cloud ap-
plications usually consist of many components run on differ-
ent virtual machines, i.e., EC2 instances, the deployment is
time-consuming and error-prone, which may involves man-
ual operations and complex scripts. We develop a deploy-
ment system aiming to accelerate cloud application deliv-
ery. First of all, we propose a component model and a con-
nector model involving cloud feature. Then we present a
component management system, in which component can
be configured and instantiated rapidly based component in-
heritance and composition. Finally, we develop a novel de-
ployment mechanism that can automate deployment process
across multiple cloud instances. Experiment shows that our
approach can reduce the build time and downtime so that it
can speed up the delivery process of software application.
Keywords: software architecture; application deploy-
ment; cloud computing; continuous delivery
1. Introduction
For enterprise applications, continuous integration is in-
creasingly seen as an effective tool for reducing the cycle
time from product backlog to receiving actual user feed-
back. This can result in real increases in developer and team
productivity when combined with cloud computing. One
key trend that is growing in importance daily is Continu-
ous Delivery[13]. More and more organizations are look-
ing to embrace an agile model in which stringent, auto-
∗
Corresponding Author
mated testing allows enhancements or ”micro-releases” to
go live without the traditional waterfall release cycles. We
are seeing a major shift in enterprise software development
to cloud-based, continuous delivery, with fully automated
quality, coverage, functional and performance tests gating
live deployments. Thus, incremental deployment become
more critical since it is very expensive to rebuild and rede-
ploy the whole application. Meanwhile, cloud applications
usually consist of many components run on different virtual
machines making deployment time-consuming and error-
prone, which may involves manual operations and complex
scripts. It has become a common issue to reduce the build
time and downtime so that it can speed up the delivery pro-
cess of cloud application.
In the past two decades, application servers have been
designed to serve multiple applications, which means ap-
plications share identical runtime and deployment scenario.
With the advent of Cloud Computing the IT resources
can be rapidly and elastically delivered via Internet. Ex-
amples of compute Clouds are Amazons Elastic Compute
Cloud (EC2) and Google App Engine (GAE). Meanwhile,
the complexity of applications and servers grows rapidly.
Nowadays, the benefits of making the server immutable[14]
becomes more obvious and clear. If anything of an applica-
tion has been changed, a new immutable server instance will
be made next to the existing one, which will be destroyed
soon. One can request and release resources in a few sec-
onds with low costs, e.g. creating instances in EC2 and run-
ning applications in GAE. In this context, back-end infras-
tructure including middleware container has become one in-
tegral part of one specific application. LXC (Linux Contain-
ers) is an operating system level virtualization method for
running multiple isolated Linux systems (containers) on a
single control host, instead of creating a full-fledged virtual
(DOI reference number: 10.18293/SEKE2015-192)