Alternativas para consistência eventual em um sistema no padrão CQRS
dc.contributor.advisor | Galante, Renata de Matos | pt_BR |
dc.contributor.author | Ribeiro, Eduardo Renani | pt_BR |
dc.date.accessioned | 2024-03-07T05:02:10Z | pt_BR |
dc.date.issued | 2024 | pt_BR |
dc.identifier.uri | http://hdl.handle.net/10183/273008 | pt_BR |
dc.description.abstract | Em sistemas distribuídos, cada vez mais vemos a necessidade de separar fisicamente domínios de negócio diferentes. Porém, sob a perspectiva do usuário final, essa divisão de domínios muitas vezes não existe e os dados passam a ter valor quando associados — tanto em um ambiente transacional quanto analítico. Neste trabalho, partimos de um cenário em que existem vários domínios fisicamente segregados em microsserviços, respeitando o padrão de um banco de dados por serviço. Porém, o produto final para o usuário é um sistema que associa entidades desses múltiplos serviços numa visão única, em forma de listagem e com comandos de escrita sob estes dados. Uma vez que temos os dados separados fisicamente, mas necessitamos mostrá-los juntos em tempo próximo do real, emergem duas opções de padrão descritos na literatura: API compositon (na qual associamos as diversas entidades em memória, a partir de uma aplicação central) e CQRS (na qual segregamos as responsabilidades de escrita e leitura em dois bancos de dados). Nosso objetivo é concentrar esforços em viabilizar a segunda opção (CQRS), avaliando as diferentes abordagens de implementação tendo em vista as limitações impostas pelo nosso caso de uso. Após isso, Apresentamos uma proposta de solução simplificada em relação as abordagens avaliadas, mas com resultados satisfatórios no que tange a garantir consistência eventual sem abrir mão de manutenibilidade. Por último, avaliamos a aplicabilidade dessa solução em um ambiente real e sua viabilidade como uma "porta de entrada"para equipes de desenvolvimento de sistemas experimentar a arquitetura CQRS. | pt_BR |
dc.description.abstract | In distributed systems, we increasingly see the need to physically separate different business domains. However, from the end-user’s perspective, this domain division often does not exist, and data becomes valuable when associated — both in a transactional and analytical environment. In this work, we start from a scenario where there are several physically segregated domains in microservices, following the pattern of one database per service. However, the final product for the user is a system that associates entities from these multiple services into a single view, in the form of a listing and with writing commands on these data. Once we have the data physically separated, but need to show them together in near real-time, two pattern options described in the literature emerge: API composition (in which we associate the various entities in memory, from a central application) and CQRS (in which we segregate writing and reading responsibilities into two databases). Our goal is to focus efforts on enabling the second option (CQRS), evaluating different implementation approaches in view of the limitations imposed by our use case. After that, we present a simplified solution proposal compared to the evaluated approaches, but with satisfactory results in terms of ensuring eventual consistency without sacrificing maintainability. Lastly, we discuss its applicability in a real-world environment, being viable as an "entry point" for system development teams to experiment with the CQRS architecture. | en |
dc.format.mimetype | application/pdf | pt_BR |
dc.language.iso | por | pt_BR |
dc.rights | Open Access | en |
dc.subject | Banco de dados | pt_BR |
dc.subject | Microservices | en |
dc.subject | CQRS | en |
dc.subject | Engenharia de software | pt_BR |
dc.subject | Sistemas distribuídos | pt_BR |
dc.subject | Eventual consistency | en |
dc.subject | Debezium | en |
dc.subject | kafka | en |
dc.subject | CDC | en |
dc.title | Alternativas para consistência eventual em um sistema no padrão CQRS | pt_BR |
dc.title.alternative | Alternatives for eventual consistency in a CQRS pattern system | en |
dc.type | Trabalho de conclusão de graduação | pt_BR |
dc.identifier.nrb | 001197923 | pt_BR |
dc.degree.grantor | Universidade Federal do Rio Grande do Sul | pt_BR |
dc.degree.department | Instituto de Informática | pt_BR |
dc.degree.local | Porto Alegre, BR-RS | pt_BR |
dc.degree.date | 2024 | pt_BR |
dc.degree.graduation | Ciência da Computação: Ênfase em Engenharia da Computação: Bacharelado | pt_BR |
dc.degree.level | graduação | pt_BR |
Este item está licenciado na Creative Commons License
-
TCC Ciência da Computação (1024)