Monitoramento da evolução do acoplamento de arquiteturas baseadas em microsserviços : um método para detectar indícios de erosão arquitetural

Autor: Apolinário, Daniel Rodrigo de Freitas, 1979
Přispěvatelé: França, Breno Bernard Nicolau de, 1983, Santos, Paulo Sérgio Medeiros dos, Buzato, Luiz Eduardo, Universidade Estadual de Campinas. Instituto de Computação, Programa de Pós-Graduação em Ciência da Computação, UNIVERSIDADE ESTADUAL DE CAMPINAS
Rok vydání: 2020
Předmět:
Zdroj: Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP)
Universidade Estadual de Campinas (UNICAMP)
instacron:UNICAMP
Popis: Orientador: Breno Bernard Nicolau de França Dissertação (mestrado) - Universidade Estadual de Campinas, Instituto de Computação Resumo: Entregar software com mais rapidez e frequência tem sido fundamental em um mundo cada vez mais digital e com consumidores mais exigentes. De forma crescente, a indústria tem adotado a arquitetura de microsserviços devido ao pressuposto de que esse estilo arquitetural atende às demandas de desenvolvimento de software atuais, tais como resiliência, flexibilidade e velocidade. No entanto, desenvolver aplicações baseadas em microsserviços também traz algumas desvantagens, como por exemplo o aumento da complexidade operacional do software. Estudos recentes também apontam a falta de métodos para prevenir problemas relacionados à manutenibilidade de soluções baseadas neste estilo arquitetural. Problemas arquiteturais comumente causam perda de manutenibilidade do software. Desconsiderar bons princípios de design durante a evolução do software pode levá-lo ao que chamamos de erosão arquitetural, o que pode tornar inviável sua manutenção. Monitorar a qualidade interna do software é fundamental para evitar a degradação da arquitetura. No entanto, existem poucas iniciativas para monitorar a evolução de software baseado em arquiteturas de microsserviços. Este trabalho tem o objetivo de desenvolver um método para monitorar a evolução de arquiteturas baseadas em microsserviços e identificar tendências de aumento no acoplamento entre serviços, permitindo assim que arquitetos de software possam tomar decisões de manutenção com antecedência. Para isso, definimos um conjunto de métricas de acoplamento baseado em métricas de sistemas orientados a serviços encontradas na literatura. O método SYMBIOTE captura as dependências entre os microsserviços de uma aplicação em tempo de execução (ambiente de homologação ou produção). A partir dessas informações, ele constrói um grafo de dependência, no qual os nós representam serviços e as arestas representam dependências diretas. As métricas de acoplamento são calculadas a partir deste grafo e monitoradas ao longo do tempo para identificar tendências de aumento significativas, as quais podem ser sinais de degradação arquitetural. Apresentamos os resultados de um experimento realizado a partir de dados gerados artificialmente que revelou o comportamento das métricas em diferentes cenários e contribuiu para o desenvolvimento de um método de análise das métricas cujo intuito é identificar indícios de degradação arquitetural. No experimento, observamos que três de quatro métricas mostraram uma correlação significativa com mudanças feitas intencionalmente na arquitetura. O SYMBIOTE usa quatro métricas em conjunto para indicar a existência de um problema arquitetural. Avaliamos o método SYMBIOTE na aplicação Spinnaker, que é um caso real disponível no repositório GitHub. A avaliação forneceu evidências sobre a viabilidade de executar o método em sistemas baseados em microsserviços construídos com tecnologias comumente usadas hoje (como Kubernetes e Docker) sem a necessidade de instrumentar o código. Os resultados obtidos na avaliação do Spinnaker mostram a relação entre mudanças arquiteturais e a tendência de aumento dos valores das métricas de acoplamento na maioria dos intervalos de releases analisados. Portanto, a primeira versão de SYMBIOTE mostrou potencial para detectar sinais de degradação arquitetural durante a evolução de arquiteturas baseadas em microsserviços Abstract: Delivering software faster and with higher frequency has been imperative in a progressively digital world with increasingly demanding consumers. The industry has been increasingly adopting the microservice architecture due to claims that this architectural style satisfies ongoing software development demands, such as resilience, flexibility, and velocity. However, developing applications based on microservices also brings some drawbacks, such as the increased software operational complexity. Recent studies have also pointed out the lack of methods to prevent problems related to the maintainability of the solutions based on this architectural style. Architectural issues are common causes of poor software maintainability. Disregarding established design principles during the software evolution may lead to the so-called architectural erosion, which can end up in a condition of unfeasible maintenance. Monitoring the software internal quality is crucial in preventing architectural degradation. However, there are few initiatives to monitoring the evolution of software microservice-based architectures. This work aims to develop a method to monitor the evolution of microservices-based architectures and identify trends in increasing coupling between services, allowing software architects to take maintenance decisions as soon as possible. For that, we defined a coupling metrics suite based on service-oriented metrics from literature. The SYMBIOTE method captures dependencies between microservices of an application in run time (staging or production environment). From this information, it builds a dependency graph, in which nodes represent services and edges represent direct dependencies. Coupling metrics are calculated from this graph and monitored over time to identify significant upward trends that may be signs of architectural degradation. We present the results of an experiment with artificially-generated data that revealed the behavior of the metrics in different scenarios, and collaborated for the development of a analysis method of the metrics for the identification of indications of architectural degradation. In the experiment, we observed that three out of four metrics showed a significant correlation with intentional changes in architecture. SYMBIOTE uses four metrics in a combined way to indicate the occurrence of an architectural problem. We evaluated SYMBIOTE method in a real case application called Spinnaker available at GitHub repository. The evaluation provided evidence on the feasibility of executing the method in microservice-based systems built with commonly used technologies today (such as Kubernetes, Docker) without the need for code instrumentation. The results obtained in the Spinnaker evaluation show the relationship between architectural changes and upward trend in the values of the coupling metrics in most of the analyzed release intervals. Therefore, the first version of SYMBIOTE has shown potential to detect signs of architectural degradation during the evolution of microservice-based architectures Mestrado Ciência da Computação Mestre em Ciência da Computação
Databáze: OpenAIRE