SEArch: an execution infrastructure for service-based software systems
Carlos G. Lopez Pombo, Pablo Montepagano, Emilio Tuosto
TL;DR
SEArch addresses dynamic service integration in service-oriented architectures by introducing a language-independent execution framework built on ARNs and data-aware CFSMs. It provides a middleware and a service broker that orchestrate runtime discovery and binding of services under formal contracts. The Go-based implementation with gRPC demonstrates end-to-end dynamic reconfiguration in a three-party payment scenario, highlighting practical feasibility across Java, Python, and Go components. The work discusses scalability, verification, and future extensions such as distributed repositories and runtime monitors.
Abstract
The shift from monolithic applications to composition of distributed software initiated in the early twentieth, is based on the vision of software-as-service. This vision, found in many technologies such as RESTful APIs, advocates globally available services cooperating through an infrastructure providing (access to) distributed computational resources. Choreographies can support this vision by abstracting away local computation and rendering interoperability with message-passing: cooperation is achieved by sending and receiving messages. Following this choreographic paradigm, we develop SEArch, after Service Execution Architecture, a language-independent execution infrastructure capable of performing transparent dynamic reconfiguration of software artefacts. Choreographic mechanisms are used in SEArch to specify interoperability contracts, thus providing the support needed for automatic discovery and binding of services at runtime.
