Modernização de arquitectura monolítica numa arquitectura de micro-serviços

Detalhes bibliográficos
Autor(a) principal: Barros, Nuno Amaro Beito
Data de Publicação: 2020
Tipo de documento: Dissertação
Idioma: por
Título da fonte: Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
Texto Completo: http://hdl.handle.net/20.500.11960/2474
Resumo: O desenvolvimento de software em arquitectura monolítica é tipicamente o primeiro passo aquando do desenvolvimento de uma prova de conceito, devido à sua rapidez de implementação e consequente reduzido time-to-market. Actualmente, com a conjuntura de mercado existente e consequente mutação de mercados, tendências e ideias, opta-se frequentemente por uma solução inicial monolítica, efectuando compromissos técnicos com vista a uma rápida adopção de determinada plataforma, produto ou serviço de informática que esteja em desenvolvimento. No entanto, passada a prova inicial do conceito, é constatado frequentemente que o projecto desenvolvido numa arquitectura monolítica assume dimensões cuja natureza o tornam difícil de manter, escalar e estender. Este foi o caso do JumiaPay, que, após uma solução monolítica inicial, se depara agora com este problema e, com vista a maior escalabilidade e manutenibilidade, adoptou uma abordagem para dividir o seu monólito em micro-serviços e, de igual modo, na tentativa de corrigir algumas decisões tomadas que são menos eficientes, efectuadas ao longo do tempo, que foram fruto das várias influências, de natureza humana, técnica ou económica. Este Relatório de Mestrado trata dessa abordagem de reestruturação do JumiaPay numa arquitetura distribuída baseada em micro-serviços. Foi conseguida a migração da parte do sistema que está responsável pelas integrações com os parceiros, pois foi identificada como a parte que iria escalar mais rapidamente. Neste caso, foi imperativo identificar os pontos comuns entre todas as integrações para que fosse possível integrá-las com o restante do sistema. Esta tarefa revelou-se complexa devido às diferenças nos fluxos entre os parceiros. A separação deste código responsável pela integração com os parceiros permitiu-nos uma separação mais clara de responsabilidades, podendo facilmente aumentar escalabilidade quando necessário e consequentemente, a fiabilidade.
id RCAP_c7fb12c0470cfeeeaaef4b360944de60
oai_identifier_str oai:repositorio.ipvc.pt:20.500.11960/2474
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 Modernização de arquitectura monolítica numa arquitectura de micro-serviçosPagamentosMonólitoMicroserviçosSpringHibernateJavaKafkaArquitectura de sistemasPaymentsMonolithMicroservicesSystem architectureO desenvolvimento de software em arquitectura monolítica é tipicamente o primeiro passo aquando do desenvolvimento de uma prova de conceito, devido à sua rapidez de implementação e consequente reduzido time-to-market. Actualmente, com a conjuntura de mercado existente e consequente mutação de mercados, tendências e ideias, opta-se frequentemente por uma solução inicial monolítica, efectuando compromissos técnicos com vista a uma rápida adopção de determinada plataforma, produto ou serviço de informática que esteja em desenvolvimento. No entanto, passada a prova inicial do conceito, é constatado frequentemente que o projecto desenvolvido numa arquitectura monolítica assume dimensões cuja natureza o tornam difícil de manter, escalar e estender. Este foi o caso do JumiaPay, que, após uma solução monolítica inicial, se depara agora com este problema e, com vista a maior escalabilidade e manutenibilidade, adoptou uma abordagem para dividir o seu monólito em micro-serviços e, de igual modo, na tentativa de corrigir algumas decisões tomadas que são menos eficientes, efectuadas ao longo do tempo, que foram fruto das várias influências, de natureza humana, técnica ou económica. Este Relatório de Mestrado trata dessa abordagem de reestruturação do JumiaPay numa arquitetura distribuída baseada em micro-serviços. Foi conseguida a migração da parte do sistema que está responsável pelas integrações com os parceiros, pois foi identificada como a parte que iria escalar mais rapidamente. Neste caso, foi imperativo identificar os pontos comuns entre todas as integrações para que fosse possível integrá-las com o restante do sistema. Esta tarefa revelou-se complexa devido às diferenças nos fluxos entre os parceiros. A separação deste código responsável pela integração com os parceiros permitiu-nos uma separação mais clara de responsabilidades, podendo facilmente aumentar escalabilidade quando necessário e consequentemente, a fiabilidade.Developing a software product using a monolithic architecture is typically the first step for the creation of a proof of concept, due to its reduced implementation time and consequently its reduced time to market. Currently, with the existing market tendencies and constant mutation and shifting of tendencies and ideas, frequently it is defined to start with a monolithic solution, creating technical compromises with the final goal of a specific platform, product or informatic service that’s under development. However, after the initial proof of concept it is often noted that the aforementioned project that was originally developed using a monolithic architecture is very difficult to maintain, scale and extend. This was the case of JumiaPay that after an initial monolithic solution now faces these problems, and with the goal of increasing scalability and maintainability adopted an approach to attempt the division of its monolith into microservices, and at the same time change some less-efficient decisions taken throughout time, caused by technical, human or economic factors. This master’s report demonstrates the restructuring approach of JumiaPay towards a microservice oriented distributed architecture. It was possible to migrate part of the current system that’s responsible for the payment service provider integrations, as it was identified as the component with the most urgent need for scalability. It was imperative to identify the common points within all the existing integrations so that it would be possible to integrate with the current system. This task was complex due to the different flows of the payment service provider partners. The separation of this code responsible for the integrations allowed us to achieve a clearer separation of responsibilities, allowing us to easily increase scalability when required, and consequently its reliability.2021-01-12T16:29:26Z2025-02-28T00:00:00Z2020-02-28T00:00:00Z2020-02-28info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfhttp://hdl.handle.net/20.500.11960/2474TID:202576108porBarros, Nuno Amaro Beitoinfo:eu-repo/semantics/embargoedAccessreponame: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-03-21T14:42:44Zoai:repositorio.ipvc.pt:20.500.11960/2474Portal AgregadorONGhttps://www.rcaap.pt/oai/openaireopendoar:71602024-03-19T17:44:29.112611Repositó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 Modernização de arquitectura monolítica numa arquitectura de micro-serviços
title Modernização de arquitectura monolítica numa arquitectura de micro-serviços
spellingShingle Modernização de arquitectura monolítica numa arquitectura de micro-serviços
Barros, Nuno Amaro Beito
Pagamentos
Monólito
Microserviços
Spring
Hibernate
Java
Kafka
Arquitectura de sistemas
Payments
Monolith
Microservices
System architecture
title_short Modernização de arquitectura monolítica numa arquitectura de micro-serviços
title_full Modernização de arquitectura monolítica numa arquitectura de micro-serviços
title_fullStr Modernização de arquitectura monolítica numa arquitectura de micro-serviços
title_full_unstemmed Modernização de arquitectura monolítica numa arquitectura de micro-serviços
title_sort Modernização de arquitectura monolítica numa arquitectura de micro-serviços
author Barros, Nuno Amaro Beito
author_facet Barros, Nuno Amaro Beito
author_role author
dc.contributor.author.fl_str_mv Barros, Nuno Amaro Beito
dc.subject.por.fl_str_mv Pagamentos
Monólito
Microserviços
Spring
Hibernate
Java
Kafka
Arquitectura de sistemas
Payments
Monolith
Microservices
System architecture
topic Pagamentos
Monólito
Microserviços
Spring
Hibernate
Java
Kafka
Arquitectura de sistemas
Payments
Monolith
Microservices
System architecture
description O desenvolvimento de software em arquitectura monolítica é tipicamente o primeiro passo aquando do desenvolvimento de uma prova de conceito, devido à sua rapidez de implementação e consequente reduzido time-to-market. Actualmente, com a conjuntura de mercado existente e consequente mutação de mercados, tendências e ideias, opta-se frequentemente por uma solução inicial monolítica, efectuando compromissos técnicos com vista a uma rápida adopção de determinada plataforma, produto ou serviço de informática que esteja em desenvolvimento. No entanto, passada a prova inicial do conceito, é constatado frequentemente que o projecto desenvolvido numa arquitectura monolítica assume dimensões cuja natureza o tornam difícil de manter, escalar e estender. Este foi o caso do JumiaPay, que, após uma solução monolítica inicial, se depara agora com este problema e, com vista a maior escalabilidade e manutenibilidade, adoptou uma abordagem para dividir o seu monólito em micro-serviços e, de igual modo, na tentativa de corrigir algumas decisões tomadas que são menos eficientes, efectuadas ao longo do tempo, que foram fruto das várias influências, de natureza humana, técnica ou económica. Este Relatório de Mestrado trata dessa abordagem de reestruturação do JumiaPay numa arquitetura distribuída baseada em micro-serviços. Foi conseguida a migração da parte do sistema que está responsável pelas integrações com os parceiros, pois foi identificada como a parte que iria escalar mais rapidamente. Neste caso, foi imperativo identificar os pontos comuns entre todas as integrações para que fosse possível integrá-las com o restante do sistema. Esta tarefa revelou-se complexa devido às diferenças nos fluxos entre os parceiros. A separação deste código responsável pela integração com os parceiros permitiu-nos uma separação mais clara de responsabilidades, podendo facilmente aumentar escalabilidade quando necessário e consequentemente, a fiabilidade.
publishDate 2020
dc.date.none.fl_str_mv 2020-02-28T00:00:00Z
2020-02-28
2021-01-12T16:29:26Z
2025-02-28T00: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 http://hdl.handle.net/20.500.11960/2474
TID:202576108
url http://hdl.handle.net/20.500.11960/2474
identifier_str_mv TID:202576108
dc.language.iso.fl_str_mv por
language por
dc.rights.driver.fl_str_mv info:eu-repo/semantics/embargoedAccess
eu_rights_str_mv embargoedAccess
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_ 1799131530024452096