Page 47 - Kaleidoscope Academic Conference Proceedings 2021
P. 47
Qinling IoTronic Zun
2. Push
1. Develop
Zun S4T/OpenStack
IoT service compute
provider 3. Define node Cloud
4. Deploy
3. Define
End users
IoT node IoT node IoT node
sensors & sensors & sensors &
actuators actuators actuators
Figure 3 – Example architecture of a distributed Node-RED flow based on Qinling functions.
solution is not able to select the right runtime. For this 5.1 Flow-based development for distributed IoT
purpose, we designed a reverse proxy to route the functions’ deployments
execution requests based on a new field we named runtime_id.
Specifically, we modified Qinling’s requests to point out the We exploited the deviceless paradigm to extend the
runtime in which a function should be executed. We chose as capabilities of the Node-RED10 flow-based development tool
runtime IDs the pause containers’ unique IDs that we store in for visual programming. In particular, we added a new type
the Qinling database. of nodes that exploits, underneath, the functions managed by
Qinling. Thanks to the deviceless system, a user can design
data pipelines among IoT nodes deployed at the network
edge. Furthermore, the solution can also use the (ordinary)
cloud-based serverless computing model as shown in Figure 3
5. DEVICELESS/EDGE-FAAS USE CASES
that depicts the high-level architecture of the approach.
The deviceless approach enables a seamless orchestration
of Qinling action containers deployed at the network edge
with Docker and Node-RED. From the user perspective,
In this section, we report two distinct approaches exploiting
it is just an extended version of Node-RED allowing the
the IoT-oriented deviceless system. In particular, a first use
feature of enabling Qinling actions using a distributed IoT
case is related to the instantiation of data pipelines using a
infrastructure. Besides, instead of using only JavaScript to
distributed IoT infrastructure. In the second use case, the IoT
create actions/functions, our approach extends the Node-RED
deviceless system is used to mount (remotely) a virtual file
programming languages choices to include other languages
system over FaaS.
such as Python.
The user can provision a distributed flow without configuring
or managing the remote IoT nodes. The envisioned
provisioning flow comprises the following steps (see
Figure 3):
1. The user write the business logic of the functions using
either Python or Node.js (i.e., functions to read the value
of a sensor or actuate an action).
2. The user uploads the functions to the Qinling repository.
Also, he/she defines the new Node-RED nodes and
Figure 4 – Node-RED node for Qinling: configuration editor
10https://nodered.org
– xliii –