<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>

Despliegue en Docker (F7)

La solución se despliega completamente en contenedores Docker mediante Docker Compose. Un solo comando levanta toda la infraestructura: 2 microservicios + 2 bases de datos PostgreSQL + RabbitMQ.

Dockerfiles (Multi-stage build):

Cada microservicio tiene su propio Dockerfile con dos etapas:

  1. Etapa 1 (build): Usa maven:3.9-amazoncorretto-21-alpine para compilar el proyecto y generar el JAR. Es una imagen pesada que incluye Maven y el JDK completo.
  2. Etapa 2 (runtime): Copia solo el JAR generado a una imagen ligera amazoncorretto:21-alpine que solo tiene el JRE. El resultado es una imagen final más pequeña y segura (no incluye herramientas de compilación).

Perfiles de Spring:

Dentro de la red Docker, los contenedores se comunican por el puerto interno (5432), no por el mapeado al host (5436). El mapeo al host solo sirve para acceso externo (IntelliJ, Postman).

Docker Compose - 5 servicios:

Orden de arranque:depends_on con condition: service_healthy garantiza que los microservicios no arrancan hasta que PostgreSQL y RabbitMQ estén listos. Sin esto, la app intentaría conectarse a una BD que todavía está iniciando.

Red Docker: Todos los contenedores comparten la red devsu-network (bridge). Esto permite que se comuniquen por nombre de servicio (ej. ms-cuentas llama a ms-clientes:8081 en vez de localhost:8081).

Comandos:

# Levantar todo (primera vez, tarda por la compilaciónn Maven)
docker-compose up -d --build

# Verificar que los 5 contenedores estén corriendo
docker-compose ps

# Ver logs de un servicio específico
docker-compose logs -f ms-clientes

# Detener contenedores (mantiene datos)
docker-compose down

# Detener y eliminar volúmenes (datos limpios)
docker-compose down -v

# Reconstruir solo un servicio después de cambios
docker-compose up -d --build ms-clientes

</aside>