<aside>
Contenido
</aside>
<aside>
Diagrama de arquitectura propuesta:

Patrón Database per Service. Cada microservicio es dueño de sus datos. Si me-cuentas se cae, ms-clientes sigue operando. Esto es la base de la autonomía en microservicios. Si comparten base de datos, no son microservicios reales, son un monolito distribuido.
Esto es porque se trata de una prueba, es decir, es un sistema acotado. Hexagonal (puertos y adaptadores) brilla en sistemas con múltiples fuentes de entrada/salida. Aquí cada servicio tiene una sola entrada (REST) y una salida (JPA + RabbitMQ).
Usan capas limpias (Controller → Service → Repository) con DTOs bien definidos demuestra Clean Code sin sobre-ingeniería.
Hexagonal sería viable, pero para el alcance actual, Layered Architecture cumple con los principios SOLID sin complejidad innecesaria.
Cuando se crea/actualiza/elimina un Cliente, ms-clientes publica un evento. ms-cuentas lo consume para mantener una referencia local del cliente (eventual consistency). Esto evita que ms-cuentas haga llamadas HTTP síncronas a ms-clientes cada vez que necesita el nombre del cliente para el reporte.
Para 2 microservicios en Docker Compose, un Gateway (Spring Cloud Gateway) añade complejidad sin beneficio real. Cada servicio expone su puerto directamente.
En producción con más servicios, agregaría un API Gateway para routing centralizado, rate limiting y autenticación. Para esta prueba, se opta por mantener simplicidad.
</aside>