I. Introduction
Distributing an application across the edge and the cloud (edge-to-cloud continuum [2]) can provide significant advantages in terms of network cost and latency [3]. However, as an application is deployed over the edge-to-cloud continuum, application developers have to deal with the heterogeneity of platforms, and the dynamism of compute and network resources. Existing software frameworks for distributed computing only partially address heterogeneity and dynamism concerns, and developers often need to combine multiple tools to build a distributed application that spans the edge-to-cloud continuum. For example, IoT application frameworks such as Node-RED [4] or AWS IoT Greengrass [5] provide high-level programming models – e.g., “Flow”, “Lambda” – that frees a developer from dealing with platform-specific details, but they do not provide solutions for dealing with node failures or changing network conditions. On the other hand, distributed coordination services such as Zookeeper [6] provide solutions for dealing with dynamism, but do not address any heterogeneity concerns. Applying a combination of solutions incurs a development overhead, as the developer needs to ensure compatibility and interoperability between the interacting technologies by gluing together different framework-specific APIs in the application code. Therefore, we need a unified software framework for the edge-to-cloud continuum that addresses both heterogeneity and dynamism concerns.