Por lo general, los servicios llaman a otros servicios cuando necesitan acceder a sus datos. Cada pieza de datos debe pertenecer a un servicio en particular, que será el único punto de entrada para acceder a estos datos y modificarlos. Algunos servicios serán simples y generalmente se corresponden estrechamente con su modelo de dominio (por ejemplo, un servicio para el manejo de usuarios), mientras que otros serán de alto nivel y utilizarán datos de otros servicios (por ejemplo, mostrar una lista de fotos junto con información sobre los usuarios que los cargaron). )
En su caso de uso, debe comenzar desde afuera y pensar qué operaciones desea poner a disposición de su usuario a través de una API (si es un servicio de fondo) o qué operaciones deberían estar disponibles en la GUI si es una aplicación web. Tenga en cuenta que la parte de la GUI a menudo es una aplicación normal con sus propios controladores: las operaciones se pueden llamar a través de REST (como en AngularJS), pero estos puntos finales están diseñados solo para el uso de la aplicación GUI y no son microservicios en el sentido común.
Supongamos que desea mostrar fotos junto con información sobre los cargadores. Podría tener un servicio de usuario que devuelva información sobre un usuario dada la identificación del usuario y un servicio de fotografía que puede enumerar fotos (por ejemplo, mediante la búsqueda de algunos criterios). La lista de fotos contendría para cada foto el ID del usuario que está cargando. De esta forma, estos dos servicios no están acoplados: el servicio de fotografía solo conoce las ID de los usuarios, pero nada sobre los datos de los usuarios. Además de estos dos servicios, puede crear un tercer servicio con una operación como "enumerar fotos con información sobre los cargadores" que llamaría a los otros dos servicios y combinaría los datos que devuelven. Alternativamente, esta operación podría ser realizada por su aplicación web en lugar de un servicio.