[Conceitual] Buscas envolvendo multiplos microserviços
Olá senhores, boa noite.
Trabalhei vários anos com projetos que se apoiavam numa arquitetura monolítica, portanto, tenho tido algumas dificuldades em compreender alguns aspectos de uma arquitetura modular como a de microserviços. Estive estudando o assunto mas esbarrei em uma dúvida que está me tirando um pouco de paz, e que no caso, me impede de iniciar meu projeto pessoal (para fins de estudo).
Para ilustrar minha dúvida precisamos falar a mesma lingua, e portanto vou sugerir um cenário específico para que possamos discutir melhor a questão. Não quero entrar no mérito da forma como separei os domínios da aplicação, afinal, o exemplo abaixo foi elaborado a fim de oferecer base para outra discussão.
Sistema de Exemplo:
Imagine uma aplicação voltada a controle de gastos onde os usuários podem cadastrar entradas e saídas de dinheiro, teríamos então 3 domínios diferentes, consequentemente resultando no mesmo número de microserviços. Seriam eles os microserviços de Usuários, Movimentações (Incomes e Outcomes) e por fim o serviço de Endereço (é estranho, eu sei).
Como a informação se relaciona ?
Cod. Usuário: 1 - Nome do Usuário: Pedro - Tipo de Movimento: Entrada - Valor do Movimento: R$ 20,00 - Rua: Afonso Pedroso - Estado: SP
Finalmente, A DÚVIDA...
Como seria possível fornecer ao usuário uma busca aonde fosse possível utilzar filtros de domínios diferentes ? Isso mesmo, imagine que o usuário está utilizando um APP que consome os nossos serviços, e que existe uma tela de busca com vários filtros. Agora, imagine que fosse possível buscar por um usuário filtrando Nome do Usuário + Tipo de Movimento + Estado do Endereço, como isso seria possível considerando que os filtros pertencem a domínios diferentes e microserviços diferente ?
Porque imagina, minha tela de busca chamou o serviço de Usuário e encontrou 20 linhas com o nome "Pedro", depois disso invocou um segundo microserviço que retornou apenas 8 linhas para o tipo de movimento, por fim invocou o serviço de Enderecos e encontrou apenas 2 usuário que residem em são paulo. Nesse cenário, o resultado final da busca seria de um total de 2 linhas, mas como amarrar isso ? Quem seria responsável por "costurar" os resultados ?
Essa é a dúvida.
Trabalhei vários anos com projetos que se apoiavam numa arquitetura monolítica, portanto, tenho tido algumas dificuldades em compreender alguns aspectos de uma arquitetura modular como a de microserviços. Estive estudando o assunto mas esbarrei em uma dúvida que está me tirando um pouco de paz, e que no caso, me impede de iniciar meu projeto pessoal (para fins de estudo).
Para ilustrar minha dúvida precisamos falar a mesma lingua, e portanto vou sugerir um cenário específico para que possamos discutir melhor a questão. Não quero entrar no mérito da forma como separei os domínios da aplicação, afinal, o exemplo abaixo foi elaborado a fim de oferecer base para outra discussão.
Sistema de Exemplo:
Imagine uma aplicação voltada a controle de gastos onde os usuários podem cadastrar entradas e saídas de dinheiro, teríamos então 3 domínios diferentes, consequentemente resultando no mesmo número de microserviços. Seriam eles os microserviços de Usuários, Movimentações (Incomes e Outcomes) e por fim o serviço de Endereço (é estranho, eu sei).
Como a informação se relaciona ?
Cod. Usuário: 1 - Nome do Usuário: Pedro - Tipo de Movimento: Entrada - Valor do Movimento: R$ 20,00 - Rua: Afonso Pedroso - Estado: SP
Finalmente, A DÚVIDA...
Como seria possível fornecer ao usuário uma busca aonde fosse possível utilzar filtros de domínios diferentes ? Isso mesmo, imagine que o usuário está utilizando um APP que consome os nossos serviços, e que existe uma tela de busca com vários filtros. Agora, imagine que fosse possível buscar por um usuário filtrando Nome do Usuário + Tipo de Movimento + Estado do Endereço, como isso seria possível considerando que os filtros pertencem a domínios diferentes e microserviços diferente ?
Porque imagina, minha tela de busca chamou o serviço de Usuário e encontrou 20 linhas com o nome "Pedro", depois disso invocou um segundo microserviço que retornou apenas 8 linhas para o tipo de movimento, por fim invocou o serviço de Enderecos e encontrou apenas 2 usuário que residem em são paulo. Nesse cenário, o resultado final da busca seria de um total de 2 linhas, mas como amarrar isso ? Quem seria responsável por "costurar" os resultados ?
Essa é a dúvida.
Cleiton
Curtidas 0