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).
Farabegoli, N., Viroli, M., Casadei, R. (2024). Flexible Self-organisation for the Cloud-Edge Continuum: a Macro-programming Approach. Institute of Electrical and Electronics Engineers Inc. [10.1109/acsos61780.2024.00020].
Flexible Self-organisation for the Cloud-Edge Continuum: a Macro-programming Approach
Farabegoli, Nicolas;Viroli, Mirko;Casadei, Roberto
2024
Abstract
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).I documenti in IRIS sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.