Extending a Peer-Based Coordination Model with Composable Design Patterns

Distributed applications require coordination of distributed software components in order to achieve a common goal. A coordination model that abstracts the complexity of network communication eases the development of such applications. The objective is to design collaboration with remote hosts in the same way as local interactions. Separation of coordination logic and application code increases maintainability, as components can be easily replaced with alternative versions. Different applications often have similar requirements on their coordination logic, e.g. concerning replication or load balancing. Instead of developing this functionality for each application separately, reusable generic patterns should be applied and adapted to the corresponding use case.

In this paper, we describe how a coordination model based on asynchronous, data-driven communication among autonomous peers can be enhanced with a mechanism to support flexible coordination patterns. Patterns are adapted using parametrization and extension mechanisms, while complex coordination tasks can be modeled via composition of simpler sub-patterns. These concepts are demonstrated on an example where a MapReduce algorithm is incrementally designed and implemented using coordination patterns on top of a middleware that realizes the examined coordination model.