<aside>

Contenido

  1. Introducción
  2. Stack tecnológico
  3. Arquitectura de Software
  4. Esquema / Diseño de Base de Datos
  5. Integración RabbitMQ
  6. ms-clientes → Microservicio (Cliente, Persona)
  7. ms-cuentas → Microservicio (Cuenta, Movimientos)
  8. Comunicación entre microservicios
  9. Seguridad
  10. Pruebas unitarias
  11. Pruebas de integración
  12. Buenas prácticas de desarrollo
  13. Documentación API
  14. Despliegue en Docker
  15. CI/CD → AWS EC2
  16. Probar solución

</aside>

<aside>

GlobalExceptionHandler con @ControllerAdvice

Un solo punto para manejar todas las excepciones. Retorna respuestas consistentes con estructura {timestamp, status, error, message, path}.

Validación con Bean Validation (@Valid)

No validamos manualmente en el Service. Usar @NotBlank, @Positive, @Size en los DTOs. Spring Boot 4 con Jakarta Validation lo maneja nativamente.

MapStruct para mapeo Entity ↔ DTO

No usamos conversiones manuales. MapStruc genera código en tiempo de compilación (zero-cost en runtime). Se elige MapStruct sobre ModelMapper porque genera código estático, no usa reflection, y es type-safe.

Idempotencia en movimientos

Cada movimiento debe ser atómico. Usar @Transactional en el Service para que la actualización del saldo y el registro del movimiento sean una sola transacción.

Versionados de API

Los endpoints deben va como /api/v1/clientes

Spring Boot 4 tiene soporte nativo para API Versioning

Rendimiento

Escalabilidad

Resiliencia