Estoy diseñando una aplicación usando Micro-Servicios y no estoy seguro del mejor mecanismo para recolectar datos de múltiples servicios.
Creo que hay dos opciones:
- Integre un mecanismo de comunicación 'entre servicios' que permita que los servicios hablen directamente. API Gateway llamaría a un servicio individual, que luego llama a otros servicios para recopilar datos, antes de devolver la respuesta consolidada a API Gateway. La API luego devuelve la respuesta a la persona que llama. (Esto tendría que ser llamadas síncronas cuando la llamada al servicio B requiere la respuesta del servicio A. IE Separate Person and Address Services).
- Haga que API Gateway llame a cada servicio directamente y consolide los datos dentro de la API antes de devolver la respuesta.
Me estoy inclinando hacia la segunda opción, ya que hacer que los servicios se comuniquen entre sí introduciría el acoplamiento, en cuyo caso también podría diseñar una aplicación monolítica. Sin embargo, hay algunas desventajas serias que puedo pensar fuera de mi cabeza con esta opción:
Hacer que la API ejecute varias llamadas a múltiples servicios aumenta la carga en el servidor de la API, especialmente cuando algunas de esas llamadas se están bloqueando.
Este método significaría que la API debe ser "consciente" de lo que la aplicación está tratando de hacer (IE Logic tendría que programarse en la API para manejar las llamadas de los servicios, y luego consolidar los datos), en lugar de simplemente actuar como un "punto final" tonto para los microservicios.
Me gustaría saber cuál es el enfoque estándar para este problema y si hay otra tercera opción que me falta.