Flexible Self-organisation for the Cloud-Edge Continuum: a Macro-programming Approach
Nicolas Farabegoli, Mirko Viroli, Roberto Casadei · 2024
Macro-programming enables the definition of highly distributed applications as a single “macro-program”, providing first-class abstractions to describe and reason about global system behaviour, supporting self-organisation. However, the deployment of a macro-program in heterogeneous edge-cloud infrastructures is not trivial, due to device constraints and complex trade-offs between functional and non-functional concerns. To address the problem, in this paper, we propose a modularisation framework for splitting the macro-level system behaviour into components that can be flexibly and dynamically deployed on the available infrastructure, with two key features. Firstly, our design supports collective components, which provide self-organising services out of local interaction among neighbour devices. Secondly, we provide a “forwarding” mechanism allowing offloading of components to neighbour devices while respecting constraints, à la multi-tier programming. As formalised and then validated by simulation, our proposal is shown to (i) keep the functional correctness of a monolithic deployment, by preserving its self-stabilising behaviour; and (ii) enable more deployments and nonfunctional benefits (e.g. lower energy footprint).