Estou projetando um aplicativo usando microsserviços e não tenho certeza do melhor mecanismo a ser usado para coletar dados de vários serviços.
Eu acredito que existem duas opções:
- Integre um mecanismo de comunicação entre serviços que permita que os serviços conversem diretamente. O API Gateway chama um serviço individual, que chama outros serviços para coletar dados, antes de retornar a resposta consolidada ao API Gateway. A API então retorna a resposta ao chamador. (Isso teria que ser chamadas síncronas quando a chamada para o serviço B exigir a resposta do serviço A. Serviços de pessoa e endereço separados do IE).
- Faça com que o API Gateway chame cada serviço diretamente e consolide os dados na API antes de retornar a resposta.
Estou me inclinando para a segunda opção, pois o fato de os serviços conversarem entre si introduziria o acoplamento. Nesse caso, eu poderia apenas arquitetar um aplicativo monolítico. No entanto, existem algumas desvantagens sérias que posso pensar de cabeça para baixo com esta opção:
Fazer a API executar várias chamadas para vários serviços aumenta a carga no servidor da API, especialmente quando algumas dessas chamadas estão bloqueando.
Esse método significa que a API precisa estar "ciente" do que o aplicativo está tentando fazer (o IE Logic precisaria ser programado na API para lidar com a chamada dos serviços por vez e, em seguida, para consolidar os dados), e não apenas agir como um "ponto final" estúpido para os microsserviços.
Gostaria de saber qual é a abordagem padrão para esse problema e se há outra terceira opção que estou faltando?