30 nov 2020
16:00 Defesa de Mestrado Integralmente a distância
Tema
Monitoring the coupling evolution of microservice-based architectures: a method for detecting indications of architectural erosion
Aluno
Daniel Rodrigo de Freitas Apolinário
Orientador / Docente
Breno Bernard Nicolau de França
Breve resumo
Entregar software mais rápido e com maior frequência tem sido fundamental em um mundo cada vez mais digital e com consumidores cada vez mais exigentes. A indústria tem adotado cada vez mais a arquitetura de microsserviços devido ao pressuposto de que esse estilo de arquitetura atende as demandas modernas de desenvolvimento de software, tais como resiliência, flexibilidade e velocidade. No entanto, desenvolver aplicações baseadas em microsserviços também possui alguns inconvenientes, como por exemplo o aumento da complexidade operacional do software. Estudos recentes apontam a falta de métodos para prevenir problemas relacionados à manutenibilidade de soluções baseadas neste estilo arquitetural. Problemas arquiteturais são causas comuns de perda de manutenibilidade de um software. Ignorar conhecidos princípios de design durante a evolução do software pode levar o software à erosão arquitetural, a qual pode inviabilizar sua manutenção. Para evitar isso é essencial o monitoramento da evolução da arquitetura de software. No entanto, existem poucas iniciativas para monitorar a evolução de arquiteturas baseadas em microsserviços. O objetivo deste trabalho é desenvolver um método para monitorar e analisar a evolução de arquiteturas baseadas em microsserviços, permitindo que engenheiros de software tomem decisões arquiteturais em tempo hábil. Para isso, o método coleta métricas de acoplamento entre serviços em tempo de execução (ambientes de teste ou produção). As métricas utilizadas foram obtidas na literatura e são calculadas a partir de um gráfico de dependência entre os microsserviços. O método analisa a evolução do gráfico ao longo do tempo para identificar tendências de alta significativas nas métricas de acoplamento, as quais podem ser sinais de erosão arquitetural. Realizamos uma análise experimental do comportamento das métricas de acoplamento usando dados gerados artificialmente para ajudar a desenvolver o método proposto. O experimento mostrou que uma das quatro métricas utilizadas não é sensível aos problemas arquiteturais simulados. O método usa outras 3 métricas de forma combinada para alertar sobre o indício de um problema arquitetural. Por fim, o método foi avaliado no software Spinnaker, um caso real industrial disponível no repositório GitHub. Os resultados da aplicação do método no caso real demonstram a viabilidade de sua aplicação na maioria dos softwares baseados em microsserviços existentes, pois depende de tecnologias comumente utilizadas como Kubernetes e Docker. Os resultados do trabalho também demonstram o potencial do método para detectar indícios de erosão arquitetural durante a evolução de arquiteturas baseadas em microsserviços.
Banca examinadora
Titulares:
Breno Bernard Nicolau de França IC/UNICAMP
Paulo Sérgio Medeiros dos Santos EIA/UNIRIO
Luiz Eduardo Buzato IC/UNICAMP
Suplentes:
Eliane Martins IC/UNICAMP
Gustavo Henrique Lima Pinto ICEN/UFPA