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

Bibliographic Details
Main Author: Barros, Nuno Amaro Beito
Publication Date: 2020
Format: Master thesis
Language: por
Source: Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
Download full: http://hdl.handle.net/20.500.11960/2474
Summary: 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órios Científicos de Acesso Aberto de Portugal (RCAAP)
repository_id_str https://opendoar.ac.uk/repository/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órios Científicos de Acesso Aberto de Portugal (RCAAP)instname:FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologiainstacron:RCAAP2024-04-11T08:13:41Zoai:repositorio.ipvc.pt:20.500.11960/2474Portal AgregadorONGhttps://www.rcaap.pt/oai/openaireinfo@rcaap.ptopendoar:https://opendoar.ac.uk/repository/71602025-05-28T13:29:46.943115Repositórios Científicos de Acesso Aberto de Portugal (RCAAP) - FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologiafalse
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órios Científicos de Acesso Aberto de Portugal (RCAAP)
instname:FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologia
instacron:RCAAP
instname_str FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologia
instacron_str RCAAP
institution RCAAP
reponame_str Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
collection Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
repository.name.fl_str_mv Repositórios Científicos de Acesso Aberto de Portugal (RCAAP) - FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologia
repository.mail.fl_str_mv info@rcaap.pt
_version_ 1833593803356766208