Damon: A distributed AOP middleware for large-scale scenarios

The development of distributed applications in large-scale environments has always been a complex task. In order to guarantee non-functional properties like scalability or availability, developers are usually faced with the same problems over and over again. These problems can be separated in distributed concerns, as for example, distribution, load-balancing or replication, just to name a few. Nevertheless, none of the current solutions in adaptive middleware area, like Aspect-Oriented Programming (AOP), is capable of implementing these distributed concerns transparently.

We present a distributed AOP middleware for large-scale development, called Damon. Its main goal is to implement true distributed aspects, which enables the use of distributed concerns in applications that were not specifically designed for distributed or large-scale scenarios.

Our middleware comprises two main layers: a distributed composition model and a scalable deployment platform. The distributed composition model envisages separation of distributed aspects, taking the necessary features from component models, like distribution facilities and connectors, and from computational reflection, like introspection and meta-levels. This recursive and fully distributed model provides its own Architecture Description Language (ADL), and thus allows low dependency and high cohesion among distributed aspects. Additionally, our model is built on top of a deployment platform where distributed aspects are disseminated and activated in individual or grouped hosts. This platform benefits from peer-to-peer and dynamic AOP substrates to implement its services in a decentralized, decoupled, and efficient way.

Therefore, our middleware solution reduces the complexity of distributed application development, managing separated functionalities, and enabling necessary services like transparent reconfiguration and deployment at runtime. Finally, we have implemented a functional prototype and we conducted several experiments using the PlanetLab testbed.