Replication is a commonly used approach to increase the availability of distributed services, which is a non-functional requirement. Thus, replication is in principle independent of the application logic. For this reason, support for replication is part of middleware architectures. Each of them provides its own replication infrastructure, although the differences in functionality are rather marginally. In this paper we claim that replication is even independent of the middleware the application uses. We propose a separation of concerns between middleware and replication systems and present a generic architecture that allows the middleware to support replication by using an existing replication framework. We argue that such an approach is equally transparent, but less intrusive than existing approaches. Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. MAI '07, March 20, 2007, Lisbon, Portugal Copyright 2007/07/0003 ...$5.00.
Categories and Subject Descriptors
MOTIVATIONAvailability is a non-functional requirement of many applications. Replication is one way to provide availability. Thus, it is independent of the application logic. For this reason, support for replication is part of middleware architectures, such as CORBA. Each of them provides its own replication infrastructure, but the basic procedure is always identical. A client request is forwarded to multiple or even the entire group of replicas respecting a consistency model.Integrating replication support directly into the middleware systems has several drawbacks. First of all, it bloats up the middleware code, though not all applications make use of it. Second, mixing up code for middleware tasks such as referencing and binding with code for logic concerning nonfunctional and sometimes cross-cutting requirements such as those for replication, QoS, or fault-tolerance introduces a coupling between multiple in principle unrelated software modules leading to code that is difficult to debug, maintain, change, and extend. Thus, replication logic should be separated from the middleware core.In this paper we claim, that replication is independent of the concrete middleware architecture with respect to distributed objects. Those middleware systems should be able to re-use existing replication frameworks to prevent reinventing the wheel for every new middleware system. Having an open framework architecture, enables to add additional replication-related issues, such as a new replication strategy or optimisations, for all middleware systems at one go. Finally, development costs for middleware systems are decreased and the development cycle is shortened.We present a generic architecture that allows a mid...