A comparative study of software architectures in constrained-device iot deployments
Autor(a) principal: | |
---|---|
Data de Publicação: | 2021 |
Tipo de documento: | Dissertação |
Idioma: | eng |
Título da fonte: | Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
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ório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
repository_id_str |
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/17440enginfo:eu-repo/semantics/openAccessreponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãoinstacron:RCAAP2024-11-29T10:27:04Zoai:sapientia.ualg.pt:10400.1/17440Portal AgregadorONGhttps://www.rcaap.pt/oai/openairemluisa.alvim@gmail.comopendoar:71602024-11-29T10:27:04Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãofalse |
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 |
url |
http://hdl.handle.net/10400.1/17440 |
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ório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação instacron:RCAAP |
instname_str |
Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação |
instacron_str |
RCAAP |
institution |
RCAAP |
reponame_str |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
collection |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
repository.name.fl_str_mv |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação |
repository.mail.fl_str_mv |
mluisa.alvim@gmail.com |
_version_ |
1817549701352783872 |