es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Dónde llamar a otro microservicio: capa de Servicio o de Repositorio?

Tengo una pregunta muy simple. ¿Cuál es el mejor diseño para llamar a otro microservicio, hacerlo en la capa de servicio o en la capa de repositorio?

Mi proyecto tiene las capas Controlador -> Servicio -> Repositorio. Suponiendo que desde MicroservicioA quiero llamar a MicroservicioB, ¿en qué capa debo realizar la llamada?

Sé que el repositorio se utiliza para interactuar con los datos de persistencia (principalmente llamadas a la base de datos), pero ¿también se utiliza para llamar a otro servicio?

He encontrado múltiples definiciones y ejemplos en Internet, como la respuesta de esta respuesta donde dice:

el repositorio es responsable de mapear sus datos desde el formato de almacenamiento a sus objetos de negocio. Debe manejar tanto cómo leer como escribir datos (eliminar, actualizar también) desde y hacia el almacenamiento.

El propósito de la capa de servicio, por otro lado, es encapsular la lógica empresarial en un solo lugar para promover la reutilización de código y la separación de preocupaciones.

Y esta respuesta dice:

La capa de repositorio se implementa para acceder a la base de datos y ayuda a extender las operaciones CRUD en la base de datos. Mientras que una capa de servicio consiste en la lógica empresarial de la aplicación y puede utilizar la capa de repositorio para implementar cierta lógica que involucre la base de datos.

Así que puedo pensar que la llamada a otro microservicio se puede hacer en la capa de servicio porque es parte de la lógica empresarial y no implica la DB, pero por otro lado, ¿se puede considerar el otro microservicio como “almacenamiento” y luego el repositorio debe mapear la respuesta a un modelo empresarial?

Gracias.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    En mi opinión, el mejor diseño para llamar a otro microservicio depende de varios factores, como la complejidad de la llamada, el propósito de la llamada y la arquitectura de su aplicación. Sin embargo, suponiendo que la llamada a MicroservicioB no involucra datos de persistencia de su aplicación, sugiero hacer la llamada en la capa de servicio.

    La capa de servicio es responsable de implementar la lógica empresarial de su aplicación y de encapsularla en un solo lugar, promoviendo así la reutilización de código y la separación de preocupaciones. Dado que la llamada a MicroservicioB es parte de la lógica empresarial, tiene más sentido incluirla en la capa de servicio.

    Sin embargo, si la llamada a MicroservicioB implica algún tipo de datos de persistencia, entonces se puede utilizar la capa de repositorio para implementar la llamada. La capa de repositorio es responsable de acceder a la base de datos y ampliar las operaciones CRUD, lo cual puede ser útil si la llamada a MicroservicioB implica la actualización o eliminación de datos en la base de datos.

    También vale la pena mencionar que el mapeo de la respuesta de MicroservicioB a un modelo empresarial se puede realizar tanto en la capa de servicio como en la capa de repositorio, según su preferencia y la complejidad del mapa.

    En resumen, el mejor diseño para llamar a otro microservicio depende del propósito y la complejidad de la llamada, pero en general, si la llamada no implica datos de persistencia, entonces la capa de servicio es el mejor lugar para implementarla.

Comments are closed.