Olá pessoal, boa tarde. Tudo bem ? Espero que sim.
Eu programei bastante tempo no padrão “monolito” e agora tenho dificuldade em pensar no formato modularizado dos microserviços. Tenho algumas dúvidas relacionadas a como se delimitam os domínios de cada microserviço e a partir daí, como eles se relacionam e como acontecem as buscas.
Acredito que para discutirmos a questão, precisamos adotar um sistema de exemplo. Para garantir que todos falem a mesma lingua eu pensei em um exemplo :
Bom, imagine um sistema de controle de gastos daqueles em que as pessoas cadastram as entradas e saídas (incomes e outcomes) , ou seja, um sistema responsável por armazenar registro do dinheiro que aquele usuário gastou ou ganhou num determinado período (mensal/semanal/anual).
Agora, as dúvidas…
1 - Relações entre microserviços (Relações entre domínios/assuntos distintos)
Bem, o conceito de microserviço diz que cada domínio do software deve ser apartado e se transformar num serviço autônomo, certo ? Pois bem, eu tenho uma dúvida a respeito de como tratar os relacionamentos entre esses domínios. Considerando que exista uma relação entre o usuário & a despesa, como relacionar/amarrar esses dois assuntos dentro do cenário de Microservice ? Tenho algumas hipóteses, porém, não sei qual delas é incorreta. Uma dessas hipóteses seria criar um micro-service para o domínio Usuário e outro para Despesa. Considerando que existe uma relação entre Usuário/Despesa, seria possível amarrar a despesa diretamente ao usuário ou isso iria fazer com que o microserviço de Despesa fugisse da proposta de domínio? Por exemplo, eu poderia considerar que toda despesa recebe o código de um usuário já na sua criação, ou seja, quando acesso o MS de despesa e chamo o endpoint de criar uma nova despesa, poderia já passar o código do usuário. Essa abordagem seria incorreta ?
Uma outra dúvida seria em relação a como se dão as buscas dentro desse cenário de microservices, mais especificamente, como amarrar os dados de dominios diferentes. A questão é que a despesa deve se preocupar com o domínio de despesa e não deve se preocupar com o domínio de usuário (e vice-vesa), certo ? E se por exemplo, eu tiver a necessidade de consumir esses serviços para mostrar um relatório mensal das despesas de um determinado usuário, vou precisar mesclar dados de usuário & despesa, certo ? E agora ? Meu serviço de Despesa não pode retornar dados de usuário e nem o contrário seria possível.
Eu tenho uma última duvida ainda, porém, meu tópico ja está ficando longo e não sei se alguem teria a coragem de lê-lo.
Desde já, obrigado amigos. Espero contar com a ajuda de vocês.
