A comparative study of software architectures in constrained-device iot deployments

Detalhes bibliográficos
Autor(a) principal: Plessis, Shani du
Data de Publicação: 2021
Tipo de documento: Dissertação
Idioma: eng
Título da fonte: Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
Texto Completo: http://hdl.handle.net/10400.1/17440
Resumo: Since its inception in 2009, the Internet of Things (IoT) has grown dramatically in both size and complexity. One of the areas that has seen significant developments is that of resourceconstrained devices. Such devices clearly require careful engineering in order to manage resources such as energy and memory, whilst still ensuring acceptable performance. A number of aspects play a critical role in the engineering of such systems. One such aspect is the choice of software architecture. The microservices architecture appears to be a promising approach for IoT, as suggested by a number of researchers. However, limited research has been done on the implementation of microservices in IoT and resource-constrained devices, and even less research has been done to compare the microservices architecture to the monolithic architecture in such deployments. The aim of this research thesis was to compare these two architectures in the context of IoT and constrained devices. The two architectures were compared by: energy consumption, runtime performance and memory consumption. To ensure that the results are not specific to a single programming language, each architecture was developed in three different languages: Go, Python and C++. Following a review of different asynchronous messaging protocols, Message Queuing Telemetry Transport was selected. The experiments were conducted on a Raspberry Pi 4, and a number of other hardware devices were used, including sensors, an actuator and a type C USB Tester. Two metrics were used to measure power consumption: maximum instantaneous power consumption and total power consumption. Whilst three metrics were used to measure memory consumption: maximum Resident Set Size (RSS), total RSS and central processing unit (CPU) resource usage. Each experiment was carried out 10 times in order to ensure data validity. The power consumption results showed that the microservices architecture had, on average, 14,9% higher maximum instantaneous power consumption, whilst the total power consumption of the microservices architecture was only 3,0% greater than that of the monolithic architecture. The runtime results indicated that the microservices architecture had a longer runtime than the monolithic architecture for Go and C++, whilst the inverse was true for Python. When considering memory consumption, it was found that the maximum RSS was 37,1% greater for the microservices architecture. The total RSS results for both architectures were very similar for Go and C++, whilst microservices performed much better for Python. Lastly, the results for CPU usage showed that the monolithic architecture had, on average, 14,9% greater CPU usage than the microservices architecture. It was concluded that, for small-scale applications, the monolithic architecture had better performance across most metrics and languages. It was, however,recommended that additional research be conducted on larger scale applications to determine the applicability of these results beyond the scope of small-scale applications. In general, there is still much room for research in this area.
id RCAP_948001bb85b6fc2c1d81d2a072df7d64
oai_identifier_str oai:sapientia.ualg.pt:10400.1/17440
network_acronym_str RCAP
network_name_str Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
repository_id_str https://opendoar.ac.uk/repository/7160
spelling A comparative study of software architectures in constrained-device iot deploymentsInternet of ThingsResource-constrained devicesSoftware architectureMicroservicesMonolothicSince its inception in 2009, the Internet of Things (IoT) has grown dramatically in both size and complexity. One of the areas that has seen significant developments is that of resourceconstrained devices. Such devices clearly require careful engineering in order to manage resources such as energy and memory, whilst still ensuring acceptable performance. A number of aspects play a critical role in the engineering of such systems. One such aspect is the choice of software architecture. The microservices architecture appears to be a promising approach for IoT, as suggested by a number of researchers. However, limited research has been done on the implementation of microservices in IoT and resource-constrained devices, and even less research has been done to compare the microservices architecture to the monolithic architecture in such deployments. The aim of this research thesis was to compare these two architectures in the context of IoT and constrained devices. The two architectures were compared by: energy consumption, runtime performance and memory consumption. To ensure that the results are not specific to a single programming language, each architecture was developed in three different languages: Go, Python and C++. Following a review of different asynchronous messaging protocols, Message Queuing Telemetry Transport was selected. The experiments were conducted on a Raspberry Pi 4, and a number of other hardware devices were used, including sensors, an actuator and a type C USB Tester. Two metrics were used to measure power consumption: maximum instantaneous power consumption and total power consumption. Whilst three metrics were used to measure memory consumption: maximum Resident Set Size (RSS), total RSS and central processing unit (CPU) resource usage. Each experiment was carried out 10 times in order to ensure data validity. The power consumption results showed that the microservices architecture had, on average, 14,9% higher maximum instantaneous power consumption, whilst the total power consumption of the microservices architecture was only 3,0% greater than that of the monolithic architecture. The runtime results indicated that the microservices architecture had a longer runtime than the monolithic architecture for Go and C++, whilst the inverse was true for Python. When considering memory consumption, it was found that the maximum RSS was 37,1% greater for the microservices architecture. The total RSS results for both architectures were very similar for Go and C++, whilst microservices performed much better for Python. Lastly, the results for CPU usage showed that the monolithic architecture had, on average, 14,9% greater CPU usage than the microservices architecture. It was concluded that, for small-scale applications, the monolithic architecture had better performance across most metrics and languages. It was, however,recommended that additional research be conducted on larger scale applications to determine the applicability of these results beyond the scope of small-scale applications. In general, there is still much room for research in this area.Correia, N.SapientiaPlessis, Shani du2022-01-06T12:03:57Z2021-11-102021-11-10T00:00:00Zinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfhttp://hdl.handle.net/10400.1/17440urn:tid:202807592enginfo:eu-repo/semantics/openAccessreponame:Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)instname:FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologiainstacron:RCAAP2025-02-18T17:14:52Zoai:sapientia.ualg.pt:10400.1/17440Portal AgregadorONGhttps://www.rcaap.pt/oai/openaireinfo@rcaap.ptopendoar:https://opendoar.ac.uk/repository/71602025-05-28T20:15:10.643092Repositórios Científicos de Acesso Aberto de Portugal (RCAAP) - FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologiafalse
dc.title.none.fl_str_mv A comparative study of software architectures in constrained-device iot deployments
title A comparative study of software architectures in constrained-device iot deployments
spellingShingle A comparative study of software architectures in constrained-device iot deployments
Plessis, Shani du
Internet of Things
Resource-constrained devices
Software architecture
Microservices
Monolothic
title_short A comparative study of software architectures in constrained-device iot deployments
title_full A comparative study of software architectures in constrained-device iot deployments
title_fullStr A comparative study of software architectures in constrained-device iot deployments
title_full_unstemmed A comparative study of software architectures in constrained-device iot deployments
title_sort A comparative study of software architectures in constrained-device iot deployments
author Plessis, Shani du
author_facet Plessis, Shani du
author_role author
dc.contributor.none.fl_str_mv Correia, N.
Sapientia
dc.contributor.author.fl_str_mv Plessis, Shani du
dc.subject.por.fl_str_mv Internet of Things
Resource-constrained devices
Software architecture
Microservices
Monolothic
topic Internet of Things
Resource-constrained devices
Software architecture
Microservices
Monolothic
description Since its inception in 2009, the Internet of Things (IoT) has grown dramatically in both size and complexity. One of the areas that has seen significant developments is that of resourceconstrained devices. Such devices clearly require careful engineering in order to manage resources such as energy and memory, whilst still ensuring acceptable performance. A number of aspects play a critical role in the engineering of such systems. One such aspect is the choice of software architecture. The microservices architecture appears to be a promising approach for IoT, as suggested by a number of researchers. However, limited research has been done on the implementation of microservices in IoT and resource-constrained devices, and even less research has been done to compare the microservices architecture to the monolithic architecture in such deployments. The aim of this research thesis was to compare these two architectures in the context of IoT and constrained devices. The two architectures were compared by: energy consumption, runtime performance and memory consumption. To ensure that the results are not specific to a single programming language, each architecture was developed in three different languages: Go, Python and C++. Following a review of different asynchronous messaging protocols, Message Queuing Telemetry Transport was selected. The experiments were conducted on a Raspberry Pi 4, and a number of other hardware devices were used, including sensors, an actuator and a type C USB Tester. Two metrics were used to measure power consumption: maximum instantaneous power consumption and total power consumption. Whilst three metrics were used to measure memory consumption: maximum Resident Set Size (RSS), total RSS and central processing unit (CPU) resource usage. Each experiment was carried out 10 times in order to ensure data validity. The power consumption results showed that the microservices architecture had, on average, 14,9% higher maximum instantaneous power consumption, whilst the total power consumption of the microservices architecture was only 3,0% greater than that of the monolithic architecture. The runtime results indicated that the microservices architecture had a longer runtime than the monolithic architecture for Go and C++, whilst the inverse was true for Python. When considering memory consumption, it was found that the maximum RSS was 37,1% greater for the microservices architecture. The total RSS results for both architectures were very similar for Go and C++, whilst microservices performed much better for Python. Lastly, the results for CPU usage showed that the monolithic architecture had, on average, 14,9% greater CPU usage than the microservices architecture. It was concluded that, for small-scale applications, the monolithic architecture had better performance across most metrics and languages. It was, however,recommended that additional research be conducted on larger scale applications to determine the applicability of these results beyond the scope of small-scale applications. In general, there is still much room for research in this area.
publishDate 2021
dc.date.none.fl_str_mv 2021-11-10
2021-11-10T00:00:00Z
2022-01-06T12:03:57Z
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/masterThesis
format masterThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv http://hdl.handle.net/10400.1/17440
urn:tid:202807592
url http://hdl.handle.net/10400.1/17440
identifier_str_mv urn:tid:202807592
dc.language.iso.fl_str_mv eng
language eng
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv application/pdf
dc.source.none.fl_str_mv reponame:Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
instname:FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologia
instacron:RCAAP
instname_str FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologia
instacron_str RCAAP
institution RCAAP
reponame_str Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
collection Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
repository.name.fl_str_mv Repositórios Científicos de Acesso Aberto de Portugal (RCAAP) - FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologia
repository.mail.fl_str_mv info@rcaap.pt
_version_ 1833598569677848576