Monitoring the coupling evolution of microservice-based architectures
Daniel Rodrigo de Freitas Apolinário · 2020
During this Master's degree, the world was plagued by the covid-19 pandemic.The practice of social distancing for long months made me more sure that we depend a lot on each other.Much more than I imagined.Reflecting on this makes me even more grateful to all those who will be mentioned here.My greatest gratitude is to my God who has always supported me in everything.Without Him, I am nothing.Everything my wife Priscila does for me cannot be described here, so my gratitude is immense to this woman that I love with all my strength.It was not easy to do all this with 2 children at home, but the joy they provide was an essential fuel.Thank you Alice and Davi for their patience with my often absents.I will always be grateful to my parents because without their love and effort I would not be able to do anything alone.To my advisor, for the dedication to help me with everything (and look, I needed a lot of help) and for the huge learning.My gratitude is also great to Embrapa who gave me this great opportunity to the Masters.To all the coworkers who supported me and always encouraged me.In particular, I am grateful to Stanley, who was my Academic Advisor and has done a lot for me since the moment I became interested in Embrapa's graduate program.My private wish was to write a lot of names here that come to mind, but I will stop here because, in the end, I will always forget someone important.Therefore receive my gratitude if you prayed, cheered me up, instructed me, guided me, listened to me."But may all who seek you rejoice and be glad in you; may those who long for your saving help always say, "The LORD is great!"Salmos 70:4 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.