Semana de Engenharia 2010
Guimarães, 11 a 15 de Outubro
ELASTIC ENTERPRISE APPLICATIONS
Ana Nunes and José Pereira
Department of Informatics
University of Minho
E-mail: {ananunes,jop}@di.uminho.pt
KEYWORDS
SOA, Cloud Computing.
ABSTRACT
There is a growing awareness of scalability as a key
property of enterprise applications.
The current target is that IT services are elastic, i.e. that
they scale to very large dimensions but also that
resources can be provisioned dynamically and
incrementally. The motivation for this is twofold: First,
to cope with applications with an increasing number of
users in a single deployment. Second, to enable the
same application to be deployed in increasingly larger
settings, allowing a software provider to swiftly capture
an emerging market.
We are interested in characterizing the major obstacles
for migrating business applications to elastic settings,
namely in database-centric applications, in order to
propose practical architectural and middleware solutions
to overcome them.
MOTIVATION
At the infrastructure level, the need for elasticity in
enterprise application is being met with the cloud
computing paradigm, the combination of a new business
model with highly decentralized, scalable, and
dependable systems. The infrastructures initially built to
meet the internal requirements of large Internet
applications such as Google or Amazon.com are
currently being commercialized as collections of
services that together realize the vision for elastic
infrastructure.
Unfortunately, currently available cloud computing
proposals fall short in face of the needs of mainstream
business applications. Most offerings are for low level
infrastructure services like virtual machines and raw
storage, which leaves much of the scale issues to the
developer. Even initial proposals for multi-tiered
application platforms, such as Google App Engine and
Windows Azure, are targeted at specific application
scenarios and offer limited functionality. Moreover,
there are additional dimensions to scalability such as
management and maintenance of the application itself,
in which an increasingly large number of interventions
to keep the system operating and to fulfill changing
business needs must be performed.
A particular cause for concern for small and medium
businesses is the current reliance on traditional database
management systems, by making use of advanced
features or simply by implementing core business logic
within the DBMS itself.
A major reason for this is the implementation of
intricate business process management systems as
collections of triggers and stored procedures, taking
advantage of the robustness and performance of the
transaction processing engine.
In sharp contrast, current proposals for data
management in the cloud offer very limited
functionality, rely on middleware layers for most
processing and lack strong transactional guarantees.
Although migrating to a Service-Oriented Architecture
is often cited as the long term strategy for scaling, it
requires a profound refactoring of current systems, with
a large investment in making explicit reliability and
performance guarantees that currently are implicit in the
usage of the transactional processing engine. These
issues create a large gap between current mainstream
business applications and the promises of elastic
computing.
A multi-tier architecture differs from the traditional
RDBMS-based architecture mainly by decoupling data
management and business logic (Alonso et al, 2004).
This decoupling enables the implementation of business
logic in a programming paradigm of choice,
independently of the RDBMS, while in turn, requiring
the business logic to be made explicit.
Multi-tier architectures and the current middleware used
to implement them are heavily geared towards scaling
out: Capacity can be increased by adding servers at the
business and presentation layers. This is possible due to
these layers being mostly stateless and thus little to no
coordination is required to ensure consistent operation.
In fact, middleware packages include transparent
clustering capabilities out-of-the-box and distributed
coordination is involved mostly in the maintenance of
configuration (e.g. JNDI), not during application
processing (Labourey and Burke 2004).
Scalability challenges arise at the bottom-most layer,
responsible for data management and within the
messaging framework.
At the data layer, scalability is addressed first by off-
loading the database management system by using
caching. An example of this is memcached