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