Modern IoT applications are computationally monolithic and built assuming a 'flat' computing architecture, where processing and inference on data from edge devices is done exclusively on the cloud. With growing computation power on the edge, increasingly remote edge deployments and data privacy concerns, there is a need to push out portions of the processing pipeline closer to the edge.


The outcome of this reasearch project is a software framework called Nomad. Nomad can intelligently partition and schedule data pipelines across the edge-cloud continuum with minimal developer effort

type of projectIoT, computer systems research
my contributionssoftware architecture, software engineering
source: unsplash

The Process


Developing distributed IoT applications is difficult: you need working knowledge of sensors and actuators, a good grasp of computer networking and of security. The goal for this research project was thus to make it easy for developers to deploy IoT applications on a cluster of heterogeneous compute resources.To guide our work we used an image recognition system as our target application.


Nomad was designed with usability as a top priority. The entry-point to the system is the Nomad Client Library that provides a developer-friendly python API for writing and submitting pipelines to the nomad cluster. All pipeline submissions are received by the Nomad Master component, which is responsible for scheduling pipelines and managing the cluster compute resources. After computing the optimal placement of the pipeline, the nomad master will launch the pipeline and orchestrate its execution.


The core Nomad code was written in Python. To simplify deployment we used docker containers and we used Kubernetes for orchestration. My most notable contributions to the codebase were: the architecture-aware pipeline scheduler, automated pipeline profiling and the nomad client library. To test the system end-to-end we constructed a simple facial recognition pipeline using a raspberry-pi with a camera attached. The pipeline was partitioned between the RPI and our laptops.

Nomad architecture diagram
Nomad poster