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

Java - Spring Boot

Spring Boot 4.0.3 es la versión estable más reciente, lanzada el 19 de febrero de 2026.

Requiere Java 17 como mínimo y es compatble hasta con Java 25, aquí se está empleando Java 21, está basado en Jakarta EE 11 con Servlet 6.1. Esto es importante porque cambia algunas cosas respecto a Spring Boot 3.x.

Java 21 LTS, no Java 17 base, esto porque Spring Boot 4 lo recomienda, y Java 21 nos da:

Spring Retry

Mecanismo de reintentos con backoff exponencial para llamadas síncronas entre microservicios. Si ms-clientes tiene un fallo momentáneo, el sistema reintenta 3 veces antes de rendirse.

MapStruct

Mapeo Entity a DTO en tiempo de compilación. Genera código estático, no usa reflection, y es type-safe. Se eligió sobre ModelMapper por performance y seguridad de tipos.

PostgreSQL 16

Base de datos relacional ACID compliant, crítico para operaciones financieras como movimientos de saldo. Excelente soporte con JPA/Hibernate 7 y estándar de la industria para datos transaccionales. Se emplea una instancia separada por microservicio (patrón Database per Service).

RabbitMQ

Broker de mensajería para comunicación asíncrona entre microservicios. Se eligió sobre Kafka por principio YAGNI: es más simple de configurar y operar, tiene routing flexible con exchanges, el volumen de mensajes no justifica Kafka, y Spring AMQP tiene soporte nativo excelente.

Docker

Contenedorización de los microservicios y la infraestructura (PostgreSQL, RabbitMQ). Multi-stage build en los Dockerfiles: la primera etapa compila con Maven, la segunda solo copia el JAR a una imagen ligera de JRE. Docker Compose orquesta los 5 contenedores.

AWS EC2

Instancia Ubuntu 24.04 LTS (t3.small) para despliegue en la nube. Se despliega automáticamente mediante GitHub Actions (CI/CD): al hacer push a main, se ejecutan los tests y si pasan, se actualiza la instancia vía SSH.

Testcontainers

Pruebas de integración con contenedores Docker reales de PostgreSQL y RabbitMQ. Cada test crea y destruye su propia infraestructura, garantizando aislamiento total sin depender del ambiente local.

</aside>