Dissertação

{pt_PT= From a monolithic to a microservices architecture} {} EVALUATED

{pt=As arquiteturas de microserviços estão a ser cada vez mais utilizadas por todo o tipo de empresas de software, sendo que a sua adoção proporciona uma decomposição funcional e capacidades de escalabilidade particulares aos seus diferentes serviços. Esta dissertação vai investigar o âmbito do processo de migração incremental de uma arquitetura monolítica para uma de microserviços, apresentando e juntando todos os princípios necessários, tal como design orientado a domínio, análise estática de código e clustering de grafos. O método por nós proposto requer a extração de informação das relações entre controladores e classes de uma aplicação de software, gerando uma representação em grafos destas relações. De seguida aplicamos clustering hierárquico com uma medida de similaridade personalizada baseada nos acessos dos controladores. Isto permite-nos lançar uma hipótese em relação à separação de contextos do processo de migração entre arquiteturas. Os resultados do nosso método são de seguida integrados com uma interface gráfica com capacidades visualização dos grupos de contextos gerados. A sua visualização e manipulação expõem uma ferramenta que permite suportar este processo de migração arquitetural. Comparando com ferramentas já existentes, a nossa abordagem obteve valores de precisão mais elevados, refletindo-se nos serviços originados. A abordagem proposta assume que os contextos transacionais de uma aplicação de software podem dar origem a informação sobre a sua modularização, mostrando a sua utilidade em informar os programadores num processo de migração arquitetural., en=Microservices are considered a hot trend, with every company that implements it having an exclusive blog detailing every change in its codebase. Its functional decomposition and scaling capabilities coupled with autonomous development makes it highly valuable in business comparing to a traditional monolithic approach. This thesis researches the scope regarding the incremental migration from a monolithic to a microservices architecture, merging all background and principles necessary for the development of tools that assist developers on this process while addressing software re-engineering concepts, such as domain-driven design, code analysis and graph clustering. The proposed method starts with the retrieval of information regarding the relationship between the classes and controllers of an application, subsequently applying hierarchical clustering with a similarity measure based on controller access. This allows us to explore transactional contexts while addressing the migration issue of context separation. The results of this approach, paired with an user interface with visualization capabilities, allows the filling of a gap in terms of support tools that exist for software architecture migrations. The comparison of our approach with software architecture formal tools and expert decompositions resulted in high precision values, that reflect that accurate service candidates are produced. The approach proposed in this thesis asserts that from the transactional contexts of an application, modular conclusions can be drawn, while also showing that it can better inform developers in the process of an architecture migration to microservices.}
{pt=Monolítico, Microserviços, Design orientado a domínio, Análise Estática, Clustering Hierárquico, Reengenharia de modularidade, en=Monolithic, Microservices, Domain-Driven Design, Static Analysis, Hierarchical Clustering, Modularity Re-engineering}

setembro 27, 2018, 9:0

Publicação

Obra sujeita a Direitos de Autor

Orientação

ORIENTADOR

António Manuel Ferreira Rito da Silva

Departamento de Engenharia Informática (DEI)

Professor Associado