Oellerer, A. (2023). Efficent processing of IoT data streams : evaluating imperative and declarative programming in resource-constrained environments [Diploma Thesis, Technische Universität Wien]. reposiTUm. https://doi.org/10.34726/hss.2024.100526
E194 - Institut für Information Systems Engineering
-
Date (published):
2023
-
Number of Pages:
96
-
Keywords:
Imperative Programming; Declarative Programming; Internet of Things; Resource-Constrained Environments; Data Streams; Big Data; Rust
en
Abstract:
Um die großen Mengen an Daten, welche durch das ``Internet der Dinge''produziert werden, nutzen zu können, wurde das``Edge Computing''-Softwarearchitekturparadigma entworfen, bei dem Prozessoren in der Nähe der Datenquellen deren Messungen auf das Wesentliche reduzieren.Dadurch muss weniger Information durch das Internet geschickt werden, und die Anzahl der Verarbeitungsschritte auf den zentralen Servern verringert sich.Die Geräte, auf denen die Vorverarbeitung durchgeführt wird, sind aber für gewöhlich weitaus weniger leistungsfähig, und besitzen teilweise nur eine beschränkte Stromzufuhr.Dementsprechend ist es wichtig, dass die eingesetzten Programme Rücksicht auf die Ressourcenbegrenzungen nehmen, und so effizient wie möglich implementiert werden.Für deren Umsetzung kann entweder dem imperativen oder dem deklarativen Programmierparadigma gefolgt werden.Während das deklarative Programmierparadigma aufgrund seines höheren Abstraktionslevels Vorteile bei der Parallelisierung bieten kann, ist nicht klar, inwiefern sich dies auf den Ressourcenverbrauch auswirkt.Das Hauptziel dieser Arbeit ist es, durch Handlungsempfelungen für die Implementierung von Programmen, die ``Internet der Dinge''-Datenverarbeiten, die Effizenz von zukünftigen ``Edge Computing'' Systemen zu verbessern.Im Zuge dieser Arbeit wurden mehrere Artefakte hergestellt, die inzukünftigen Projekten eingesetzt werden können.Im ersten Schritt wurde ein Ablauf zur Definition von Benchmarks angelegt.Diesem Ablauf folgend wurde ein Benchmark-Szenario entwickelt, mithilfe welchem die Forschungsfragen beantwortet werden konnten.Nachdem dieses Szenario implementiert wurde, wurden damit zwei Services evaluiert, wobei einer mittels des imperative Paradigmas und der andere mittels des deklarativen Paradigmas erstellt wurde.Die Messungen die dabei anfielen wurden gespeichert und zur Beantwortung der Forschungsfragen genutzt.Die Ergebnisse dieser Messungen zeigen, dass die imperative Implementierung in dem gegebenen Kontext weniger Ressourcen verbraucht und die Daten schneller verarbeiten kann.Gründe dafür sind der größere Ressourcenverbrauch, der mit dem höheren Abstraktionslevel einhergeht und, dass die imperative Implementierung besser an das Benchmark-Szenario angepasst werden konnte.
de
Edge Computing is a software-architectural paradigm which employs data preprocessors close to ``Internet of Things'' sensors to reduce measurements down to their vital parts before forwarding them.This lowers the amount of information which has to be transmitted over the internet, and less work needs to be done on central servers performing the final analysis.To realize Edge Computing, large numbers of data preprocessors are needed.So that the paradigm is economically viable, those preprocessors need to be cheap, which means that their performance is often constrained.Due to this, services running on those processors need to be designed with the resource limitations in mind, and run as efficiently as possible.Implementations of such services can either follow the declarative or the imperative programming paradigm.When following the imperative paradigm, data infrastructural tasks, likewhere temporal values are saved, are specified on the same level of abstraction as a programs business logic.In the declarative paradigm on the other hand, those two issues are handled on separate layers.While hiding the infrastructural concerns from the application developers means that parallelization can be implemented easier, it is not clear how this impacts resource consumption.The main goal of this thesis is to increase the efficiency of future Edge Computing systems by offering insights into the effects of following the declarative or imperative paradigm when implementing a service processing ``Internet of Things'' data streams.Over the course of this thesis, multiple artifacts were created and made publicly available, which can be used in further work.First, a workflow to design benchmark scenarios was developed.Following this workflow, a benchmark scenario appropriate for answering the research questions was designed.Afterwards, the scenario and additional necessary tooling was implemented.Two services, one following the declarative, one following the imperative paradigm, and a library to handle the data-infrastructural tasks for thedeclarative implementation was created.Finally, the services were benchmarked, and their performance wasmeasured.The results show that, in the given context, the imperative implementationis able to process the data faster and more efficiently.Reasons for this are the additional costs coming with a higher level of abstraction, and that the imperative implementation can be tailored better to the scenario at hand.