8 research outputs found
A comparative study of software architectures in constrained-device iot deployments
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.A Web e a Internet das Coisas (WoT/IoT) são áreas empolgantes que, sem dúvida, continuarão
a desenvolver-se nos próximos anos. À medida que vão sendo feitos novos desenvolvimentos
nestas áreas, e vários tipos de objetos se tornam “Coisas”, é expectável que a limitação de
recursos seja cada vez mais uma preocupação. Atualmente já existem muitos dispositivos que
possuem recursos limitados por vários motivos, como a sua localização em locais difíceis ou
remotos (ex: sensores implantáveis ou sensores de erupção vulcânica) ou necessidade de
trabalhar enquanto estão em movimento (ex: dispositivos vestíveis). Assim sendo, a necessidade
de usar-se os recursos de forma eficiente será cada ver maior.
O objetivo primordial desta tese foi o de analisar a utilização de recursos por parte de uma
aplicação IoT, considerando duas arquiteturas de software diferentes, implementada num
dispositivo com poucos recursos. O dispositivo escolhido é um Raspberry Pi 4, dado ser um
dispositivo embarcado bastante adequado para realização de testes. As arquiteturas que foram
comparadas neste estudo foram: microsserviços e monolítica. Para garantir que os resultados não
fossem específicos da linguagem utilizada, o desenvolvimento foi feito em três linguagens de
programação: Go, Python e C++. Embora seja possível encontrar estudos que analisam como as
linguagens de programação utilizam os recursos, apenas foi encontrado um estudo cujo foco é a
eficiência energética, memória e tempo de execução em dispositivos com recursos limitados, não
tendo sido encontrado nenhum estudo que compare o desempenho das arquiteturas de software
em dispositivos com recursos limitados.
A adoção de uma arquitetura de microsserviços em ambientes WoT/IoT tem vantagens, como
modularidade, flexibilidade e facilidade de manutenção. Vários estudos referem que esta
arquitetura é adequada para WoT/IoT, pois compartilha muitos dos mesmos objetivos. WoT/IoT
é inerentemente dinâmico e tem muitos pontos de extremidade, o que pode apresentar desafios
de desenho e implementação. Uma arquitetura como microsserviços pode explorar estas
caracteristicas, transformando estes desafios em vantagens. No entanto, não foi encontrada
investigação que compare o desempenho da arquitetura de microsserviços com a arquitetura
monolítica, especialmente no contexto
IoT, tendo sido este o foco desta tese.
A escolha do protocolo de transferência de mensagens, para comunicação entre os vários
microsserviços, foi também analisada. Um protocolo de transferência leve será o mais adequado,
para dispositivos que têm recursos limitados, e três opções foram consideradas em mais profundidade: MQTT (Message Queuing Telemetry Transport), AMQP (Advanced Message
Queuing Protocol) e CoAP (Constrained Application Protocol). Da análise feita, verificou-se que
o MQTT é limitado na qualidade de serviço, seguranca e confiabilidade que oferece, isto quando
comparado com o AMQP, sendo por isso um protocolo mais leve. Ao comparar-se MQTT e
CoAP, verificou-se que ambos os protocolos oferecem vários benefícios, tendo o MQTT sido
escolhido para os testes realizados.
A abordagem técnica que foi adotada é descrita em detalhe, incluindo os componentes de
hardware necessários para o projeto e o software necessário para a recolha de medições. Foi ainda
delineada uma metodologia experimental, a qual foi seguida de perto. Foram obtidos resultados
que permitem analisar em detalhe o consumo de energia, o tempo de execução e o consumo de
memória. Quanto ao consumo de energia, em específico, recolhe-se o consumo de energia
instantâneo máximo e o consumo de energia total. Desta análise verificou-se que o consumo de
energia instantâneo máximo da arquitetura de microserviços foi, em média, e em todas as
linguagens, 14.9% maior do que o consumo obtido para a arquitetura monolítica. Verificou-se
também que a linguagem Go tem o maior consumo de energia instantâneo máximo, para ambas
as arquiteturas, enquanto que o Python e o C++ tiveram medidas semelhantes.
Os resultados para o consumo total de energia (durante o tempo de execução total) foram
ligeiramente diferentes. Ao comparar-se as duas arquiteturas, deduziu-se que os valores de
consumo de energia eram muito semelhantes e, em média, e em todas as linguagens, a arquitetura
de microsserviços consumia apenas 3.0% a mais que a arquitetura monolítica. Também foi
verificado que ao usar-se a arquitetura monolítica, o consumo total de energia era quase idêntico
em todos as linguagens. Com a arquitetura de microserviços, o Python teve o maior consumo,
seguido do Go e C++, embora os valores não tenham diferido muito. Também ficou claro
que, embora o consumo de energia instantâneo máximo possa ser útil para entender os requisitos
de energia de pico, não é diretamente proporcional ao consumo de energia total. Por exemplo, o
Python teve o menor consumo de energia instantâneo máximo, mas o maior consumo de energia
total.
A segunda parte dos resultados considerou o desempenho no que diz respeito ao tempo de
execução. Considerando apenas a arquitetura, verificou-se que a quitetura de microsserviços
tinha um tempo de execução maior do que a arquitetura monolítica para Go e C++, enquanto o
inverso era verdadeiro para o Python, o que pode estar relacionado com a otimizacao de
simultaneidade vinculada à unidade central de processamento (CPU), pelas diferentes
linguagens. Ao comparar o tempo de execução das linguagens de programacao, os resultados ficaram amplamente em linha com as expetativas. C++ teve o menor tempo de execução, seguido
de perto pelo Go. O Python teve um tempo de execução significativamente mais longo, o que faz
sentido já que o Python é a única linguagem interpretada que foi usada neste projeto. Foi
interessante notar que o tempo de execução do Python foi muito maior ao usar-se uma arquitetura
monolítica do que ao usar-se uma arquitetura de microserviços, o que não foi o caso do C++ ou
Go. Com a arquitetura de microserviços, o Python teve um tempo de execução médio 319.4%
maior do que o do C++, enquanto que o tempo de execuçao médio do Go foi 31.5% maior do
que o do C++. Diferenças semelhantes foram observadas para a arquitetura monolítica.
O consumo de memória foi medido usando três métricas diferentes: tamanho do conjunto
residente (RSS) máximo, RSS total e uso de CPU. A comparação do RSS máximo, em cada
arquitetura, mostrou que o RSS máximo para a arquitetura de microserviços foi 37.1% maior do
que para a arquitetura monolítica. A diferença foi especialmente significativa para Python (65.9%
de diferença). Verificou-se que o Go teve um RSS máximo significativamente maior do que as
outras linguagens, para ambas as arquiteturas. O Python teve o menor RSS máximo na arquitetura
monolítica, enquanto que o C++ teve o menor para a arquitetura de microserviços. Os resultados
para o RSS total foram muito diferentes do RSS máximo, tanto por
arquitetura como por linguagem usada. Mais concretamente, as medidas totais de RSS para Go
e C++ nao diferiam muito por arquitetura, embora houvesse uma grande diferença quando
comparado com o Python. Em média o RSS total foi 127.0% maior para a arquitetura monolítica
do que para a arquitetura de microserviços, ao usar-se Python. Comparando por linguagem, o
RSS total do Python foi significativamente maior do que para as outras duas linguagens,
especialmente para a arquitetura monolítica, enquanto o Go e C++ tiveram medições RSS totais
muito semelhantes.
A última métrica de consumo de memória considerada foi o uso médio da CPU. Verificou-se que
a arquitetura monolítica teve, em média, 14.9% maior utilização de CPU do que a arquitetura de
microserviços, e a maior diferença foi observada para o Python. Uma comparação por linguagem
mostrou que o Go teve a maior utilização de
CPU, para ambas as arquiteturas. O C++ teve a segunda maior utilização de CPU, e o Python
teve a menor utilização. Estas conclusões foram de encontro às expectativas, já que o Go tem
processos integrados leves (rotinas Go), podendo otimizar a utilização de CPU.
Esta dissertação produziu, em geral, resultados muito interessantes, uns mais esperados que
outros. Os resultados mostraram que a arquitetura monolítica teve melhor desempenho na
maioria das métricas, ou seja, consumo de energia instantâneo máximo, consumo de energia total (apenas para o Go e Python), tempo de execução geral (apenas para o Go e C++), RSS e CPU
máximos. Deste modo, é possível concluir que ao implementar-se aplicações de pequena escala,
em dispositivos IoT, a arquitetura monolítica pode oferecer mais benefícios. É bastante provável,
no entanto, que a arquitetura de microserviços possa superar a arquitetura monolítica em
aplicações de maior escala. A dimensão da aplicação deve, por isso, ser considerada ao escolherse
uma arquitetura de software.
Claramente, ainda existe muito espaço para contribuição nesta área de investigação. A
investigação encontrada sobre o desempenho da arquitetura de microserviços, em comparação
com a arquitetura monolítica, é limitafa e não foi encontrada investigação no contexto da IoT.
Isto acaba por ser surpreendente, pois muitas empresas estão já a adotar microserviços e tem
havido um aumento das pesquisas relacionadas com esta arquitetura. Assim sendo, compreender
quais as vantagens e desvantagens desta arquitetura tornou-se muito pertinente. Embora esta
dissertação tenha analisado a arquitetura de microsserviços, e tendo esta sido comparada com a
arquitetura monolítica, considerando diferentes linguagens, a análise é feita numa escala
relativamente pequena, quanto ao número de componentes de serviço, e num único dispositivo
embarcado. A análise de aplicações de maior escala forneceria, certamente, perceções adicionais muito valiosas
Cognitive load balancing approach for 6G MEC serving IoT mashups
The sixth generation (6G) of communication networks represents more of a revolution than an evolution of the previous generations, providing new directions and innovative approaches to face the network challenges of the future. A crucial aspect is to make the best use of available resources for the support of an entirely new generation of services. From this viewpoint, the Web of Things (WoT), which enables Things to become Web Things to chain, use and re-use in IoT mashups, allows interoperability among IoT platforms. At the same time, Multi-access Edge Computing (MEC) brings computing and data storage to the edge of the network, which creates the so-called distributed and collective edge intelligence. Such intelligence is created in order to deal with the huge amount of data to be collected, analyzed and processed, from real word contexts, such as smart cities, which are evolving into dynamic and networked systems of people and things. To better exploit this architecture, it is crucial to break monolithic applications into modular microservices, which can be executed independently. Here, we propose an approach based on complex network theory and two weighted and interdependent multiplex networks to address the Microservices-compliant Load Balancing (McLB) problem in MEC infrastructure. Our findings show that the multiplex network representation represents an extra dimension of analysis, allowing to capture the complexity in WoT mashup organization and its impact on the organizational aspect of MEC servers. The impact of this extracted knowledge on the cognitive organization of MEC is quantified, through the use of heuristics that are engineered to guarantee load balancing and, consequently, QoS.info:eu-repo/semantics/publishedVersio
The global retinoblastoma outcome study : a prospective, cluster-based analysis of 4064 patients from 149 countries
DATA SHARING : The study data will become available online once all analyses are complete.BACKGROUND : Retinoblastoma is the most common intraocular cancer worldwide. There is some evidence to suggest that major differences exist in treatment outcomes for children with retinoblastoma from different regions, but these differences have not been assessed on a global scale. We aimed to report 3-year outcomes for children with retinoblastoma globally and to investigate factors associated with survival. METHODS : We did a prospective cluster-based analysis of treatment-naive patients with retinoblastoma who were diagnosed between Jan 1, 2017, and Dec 31, 2017, then treated and followed up for 3 years. Patients were recruited from 260 specialised treatment centres worldwide. Data were obtained from participating centres on primary and additional treatments, duration of follow-up, metastasis, eye globe salvage, and survival outcome. We analysed time to death and time to enucleation with Cox regression models. FINDINGS : The cohort included 4064 children from 149 countries. The median age at diagnosis was 23·2 months (IQR 11·0–36·5). Extraocular tumour spread (cT4 of the cTNMH classification) at diagnosis was reported in five (0·8%) of 636 children from high-income countries, 55 (5·4%) of 1027 children from upper-middle-income countries, 342 (19·7%) of 1738 children from lower-middle-income countries, and 196 (42·9%) of 457 children from low-income countries. Enucleation surgery was available for all children and intravenous chemotherapy was available for 4014 (98·8%) of 4064 children. The 3-year survival rate was 99·5% (95% CI 98·8–100·0) for children from high-income countries, 91·2% (89·5–93·0) for children from upper-middle-income countries, 80·3% (78·3–82·3) for children from lower-middle-income countries, and 57·3% (52·1-63·0) for children from low-income countries. On analysis, independent factors for worse survival were residence in low-income countries compared to high-income countries (hazard ratio 16·67; 95% CI 4·76–50·00), cT4 advanced tumour compared to cT1 (8·98; 4·44–18·18), and older age at diagnosis in children up to 3 years (1·38 per year; 1·23–1·56). For children aged 3–7 years, the mortality risk decreased slightly (p=0·0104 for the change in slope). INTERPRETATION : This study, estimated to include approximately half of all new retinoblastoma cases worldwide in 2017, shows profound inequity in survival of children depending on the national income level of their country of residence. In high-income countries, death from retinoblastoma is rare, whereas in low-income countries estimated 3-year survival is just over 50%. Although essential treatments are available in nearly all countries, early diagnosis and treatment in low-income countries are key to improving survival outcomes.The Queen Elizabeth Diamond Jubilee Trust and the Wellcome Trust.https://www.thelancet.com/journals/langlo/homeam2023Paediatrics and Child Healt
A Comparative study of software architectures in constrained device IoT deployments
The Internet of Things (IoT) is an area that has consistently seen growth and development and will no doubt continue to do so. One group of IoT devices - constrained devices - has seen significant developments in recent years. With the advent of constrained devices in almost every area of life, e.g. industrial, leisure and medical, this group of devices is well worth studying. Clearly, resource management is a critical aspect to ensure optimal use of such devices. A number of factors can have a significant impact on resource management, such as the operating system and the software architecture.
This study aimed to compare the power consumption, runtime performance and memory consumption of two software architectures: microservices and monolithic. The study was conducted using a constrained device, and to ensure that the results are not language-specific, three different programming languages were used: Go, Python and C++. It was found that, for small-scale applications, the monolithic architecture performed better across most metrics. These results may provide valuable insights to engineers for the design and implementation of constrained-device IoT applications. It was recommended that additional research be conducted on larger-scale applications.info:eu-repo/semantics/publishedVersio
The Global Retinoblastoma Outcome Study: a prospective, cluster-based analysis of 4064 patients from 149 countries
Background Retinoblastoma is the most common intraocular cancer worldwide. There is some evidence to suggest that major differences exist in treatment outcomes for children with retinoblastoma from different regions, but these differences have not been assessed on a global scale. We aimed to report 3-year outcomes for children with retinoblastoma globally and to investigate factors associated with survival. Methods We did a prospective cluster-based analysis of treatment-naive patients with retinoblastoma who were diagnosed between Jan 1,2017, and Dec 31,2017, then treated and followed up for 3 years. Patients were recruited from 260 specialised treatment centres worldwide. Data were obtained from participating centres on primary and additional treatments, duration of follow-up, metastasis, eye globe salvage, and survival outcome. We analysed time to death and time to enucleation with Cox regression models. Findings The cohort included 4064 children from 149 countries. The median age at diagnosis was 23.2 months (IQR 11.0-36.5). Extraocular tumour spread (cT4 of the cTNMH classification) at diagnosis was reported in five (0.8%) of 636 children from high-income countries, 55 (5.4%) of 1027 children from upper-middle-income countries, 342 (19. 7%) of 1738 children from lower-middle-income countries, and 196 (42.9%) of 457 children from low-income countries. Enudeation surgery was available for all children and intravenous chemotherapy was available for 4014 (98.8%) of 4064 children. The 3-year survival rate was 99.5% (95% CI 98.8-100.0) for children from high-income countries, 91.2% (89.5-93.0) for children from upper-middle-income countries, 80.3% (78.3-82.3) for children from lower-middle-income countries, and 57.3% (524-63-0) for children from low-income countries. On analysis, independent factors for worse survival were residence in low-income countries compared to high-income countries (hazard ratio 16.67; 95% CI 4.76-50.00), cT4 advanced tumour compared to cT1 (8.98; 4.44-18.18), and older age at diagnosis in children up to 3 years (1.38 per year; 1.23-1.56). For children aged 3-7 years, the mortality risk decreased slightly (p=0.0104 for the change in slope). Interpretation This study, estimated to include approximately half of all new retinoblastoma cases worldwide in 2017, shows profound inequity in survival of children depending on the national income level of their country of residence. In high-income countries, death from retinoblastoma is rare, whereas in low-income countries estimated 3-year survival is just over 50%. Although essential treatments are available in nearly all countries, early diagnosis and treatment in low-income countries are key to improving survival outcomes. Copyright (C) 2022 The Author(s). Published by Elsevier Ltd.Y