Refactoring Java monoliths into executable microservice-based applications
Autor(a) principal: | |
---|---|
Data de Publicação: | 2022 |
Tipo de documento: | Dissertação |
Idioma: | eng |
Título da fonte: | Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
Texto Completo: | https://hdl.handle.net/1822/79920 |
Resumo: | Dissertação de mestrado integrado em Informatics Engineering |
id |
RCAP_48c3929ec76df364669e0da1e7206988 |
---|---|
oai_identifier_str |
oai:repositorium.sdum.uminho.pt:1822/79920 |
network_acronym_str |
RCAP |
network_name_str |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
repository_id_str |
7160 |
spelling |
Refactoring Java monoliths into executable microservice-based applicationsRefactoring de monólitos em Java para aplicações baseadas em microsserviços executáveisArquitetura de microsserviçosAplicações baseadas em microsserviçosDecomposição de monólitosJavaRefactoringMicroservice architectureMicroservice-based applicationsMonolithic decompositionEngenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e InformáticaDissertação de mestrado integrado em Informatics EngineeringNos últimos anos assistiu-se a uma mudança drástica na forma como o software é desenvolvido. Os projectos de software de grande escala estão a ser construídos através de uma composição flexível de pequenos componentes possivelmente escritos em diferentes linguagens de programação e com os processos de deploy independentes – as chamadas aplicações baseadas em microsserviços. Isto tem sido motivado pelos desafios associados ao desenvolvimento, manutenção e evolução de grandes sistemas de software, mas também pelo aparecimento da cloud e pela facilidade que trouxe em termos de escalabilidade horizontal, reutilização e flexibilidade na propriedade e no deploy. O crescimento dramático da popularidade dos microsserviços levou várias empresas a aplicar grandes refactorings aos seus sistemas de software. Contudo, esta é uma tarefa desafiante que pode demorar vários meses ou mesmo anos. Esta dissertação propõe uma metodologia capaz de transformar automaticamente aplicações desenvolvidas em Java sob uma arquitetura monolítica em aplicações baseadas em microserviços. A metodologia proposta é direccionada para as aplicações que tiram partido da técnica ORM para relacionar classes com as entidades da base de dados, através de anotações no código fonte. A nossa abordagem recebe como input o código fonte e uma proposta de microsserviços, e aplica técnicas de refactoring às classes para tornar cada microsserviço independente. Esta metodologia cria uma API para cada chamada de métodos de classes que se encontram noutros serviços, e as entidades da base de dados também sofrem refactoring para serem incluídas no serviço correspondente. A metodologia proposta foi implementada através da construção de uma ferramenta que suporta o refactoring de aplicações desenvolvidas em Java Spring e que utilizam as anotações da JPA para o mapeamento entre as classes e as entidades. Realizou-se um análise quantitativa e qualitativa em 120 projetos open-source aleatoriamente recolhidos do GitHub. Na avaliação quantitativa procurou-se perceber a aplicabilidade da metodologia e na analise qualitativa, através da execução de testes unitários, procurou-se avaliar se aplicação original e a aplicação baseada em microserviços gerada são funcionalmente equivalentes. Os resultados são promissores sendo a metodologia capaz de realizar o refactoring em 69% dos projetos, sendo o resultado da execução dos testes unitários igual em ambas as versões dos projetos.In the last few years we have been seeing a drastic change in the way software is developed. Largescale software projects are being assembled by a flexible composition of many (small) components possibly written in different programming languages and with independent deploy processes – the so-called microservice-based applications. This has been motivated by the challenges associated with the development, maintenance, and evolution of large software systems, but also by the appearance of the cloud and the ease it brought in terms of horizontal scaling, reusability and flexibility in ownership and deployment. The dramatic growth in popularity of microservice-based applications has pushed several companies to apply major refactorings to their software systems. However, this is a challenging task that may take several months or even years. This dissertation proposes a methodology to automatically evolve a Java monolithic application into a microservice-based one. The proposed methodology is directed to the applications that take advantage of the ORM technique to relate Java classes to database entities, through annotations in the source code. The methodology receives as input the Java source code and a proposition of microservices and refactors the original classes to make each microservice independent. The proposed methodology creates an API for each method call to classes that are in other services. The database entities are also refactored to be included in the corresponding service. The proposed methodology was implemented by building a tool that supports the refactoring of Java Spring applications that use JPA annotations for mapping between Java classes and database entities. We performed a quantitative and qualitative analysis on 120 open-source projects randomly selected from GitHub. In the quantitative evaluation we tried to understand the applicability of the methodology and in the qualitative analysis, through the execution of unit tests, we tried to evaluate if the original application and the application based on micro-services generated are functionally equivalent. The results are promising, with the methodology being able to refactor 69% of the projects, with the unit test results being the same in both versions of the projects.This work is supported by the national funds through the Portuguese Funding Agency (FCT - Fundação para a Ciência e a Tecnologia, within project UIDB/50014/2020)Cunha, JácomeFerreira, André LeiteUniversidade do MinhoFreitas, Francisco José Oliveira2022-05-172022-05-17T00:00:00Zinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfhttps://hdl.handle.net/1822/79920eng203017846info:eu-repo/semantics/openAccessreponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãoinstacron:RCAAP2023-12-09T01:20:38Zoai:repositorium.sdum.uminho.pt:1822/79920Portal AgregadorONGhttps://www.rcaap.pt/oai/openaireopendoar:71602024-03-19T19:31:21.999156Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãofalse |
dc.title.none.fl_str_mv |
Refactoring Java monoliths into executable microservice-based applications Refactoring de monólitos em Java para aplicações baseadas em microsserviços executáveis |
title |
Refactoring Java monoliths into executable microservice-based applications |
spellingShingle |
Refactoring Java monoliths into executable microservice-based applications Freitas, Francisco José Oliveira Arquitetura de microsserviços Aplicações baseadas em microsserviços Decomposição de monólitos Java Refactoring Microservice architecture Microservice-based applications Monolithic decomposition Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e Informática |
title_short |
Refactoring Java monoliths into executable microservice-based applications |
title_full |
Refactoring Java monoliths into executable microservice-based applications |
title_fullStr |
Refactoring Java monoliths into executable microservice-based applications |
title_full_unstemmed |
Refactoring Java monoliths into executable microservice-based applications |
title_sort |
Refactoring Java monoliths into executable microservice-based applications |
author |
Freitas, Francisco José Oliveira |
author_facet |
Freitas, Francisco José Oliveira |
author_role |
author |
dc.contributor.none.fl_str_mv |
Cunha, Jácome Ferreira, André Leite Universidade do Minho |
dc.contributor.author.fl_str_mv |
Freitas, Francisco José Oliveira |
dc.subject.por.fl_str_mv |
Arquitetura de microsserviços Aplicações baseadas em microsserviços Decomposição de monólitos Java Refactoring Microservice architecture Microservice-based applications Monolithic decomposition Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e Informática |
topic |
Arquitetura de microsserviços Aplicações baseadas em microsserviços Decomposição de monólitos Java Refactoring Microservice architecture Microservice-based applications Monolithic decomposition Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e Informática |
description |
Dissertação de mestrado integrado em Informatics Engineering |
publishDate |
2022 |
dc.date.none.fl_str_mv |
2022-05-17 2022-05-17T00:00:00Z |
dc.type.status.fl_str_mv |
info:eu-repo/semantics/publishedVersion |
dc.type.driver.fl_str_mv |
info:eu-repo/semantics/masterThesis |
format |
masterThesis |
status_str |
publishedVersion |
dc.identifier.uri.fl_str_mv |
https://hdl.handle.net/1822/79920 |
url |
https://hdl.handle.net/1822/79920 |
dc.language.iso.fl_str_mv |
eng |
language |
eng |
dc.relation.none.fl_str_mv |
203017846 |
dc.rights.driver.fl_str_mv |
info:eu-repo/semantics/openAccess |
eu_rights_str_mv |
openAccess |
dc.format.none.fl_str_mv |
application/pdf |
dc.source.none.fl_str_mv |
reponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação instacron:RCAAP |
instname_str |
Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação |
instacron_str |
RCAAP |
institution |
RCAAP |
reponame_str |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
collection |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
repository.name.fl_str_mv |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação |
repository.mail.fl_str_mv |
|
_version_ |
1799132821806120960 |