Compute Continuum beyond the Edge

 

How can highly-decentralised, lightweight protocols and algorithms utilise the mix of heterogeneous computational devices dispersed throughout future cities?

The Smart City vision is to have widespread sensing of city conditions to guide infrastructure, policies and services. However, we must be careful in how we instrument the city and not lose track of long-term consequences. When sensing truly becomes ubiquitous, bringing with it an explosion of devices communicating data, then existing network infrastructures will become saturated. This motivates IoT and sensor nodes running multiple applications that might belong to different stakeholders. This leads to a continuum where data is processed from source devices via edge devices to the cloud. The question is where do we carry out processing: with what nodes and how? Specifically, maximizing the use of these systems is important but also brings many challenges in terms of scheduling processes and programming systems without knowing where they run.

We view this as city as a programmable device. The traditional approach to programming over many devices is to place a runtime on all nodes to abstract away the underlying hardware. We take a different approach. Given that code deployment can be initiated remotely and at any time, it makes sense to instead adapt compiler based approaches where optimisation is done when the application is compiled/initially deployed. We believe that in order to cope with the large heterogeneity present in our target networks we should aim to have controlled variation, rather than arbitrary homogeneity.

This ensures that hard to foresee complex interactions involving the placement of computation and communications can be ironed out in advance.

To this end we have developed a framework for developing smart city applications, which we name Scaffold. The main component of this framework consists of a  compiler, which takes a program annotated with source data, commands and  requirements in our Scale language and automatically determines the minimal set of actual programs that will need to be running in the nodes that compose the network, cloud to edge. Depending on the requirements this compiler can also inject the programs with runtimes, allowing for dynamic behaviour, whilst retaining as much intelligibility as possible.

We have also developed Scanner, a registry and automatic deployment system for  sensors, actuators and processor nodes in smart city scenarios. This system allows us to take the output of the Scale compiler and query the current state of the network in order to determine appropriate target nodes in which to install the various images produced by the Scale compiler.