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 –
   42   43   44   45   46   47   48   49   50   51   52