<aside>
Contenido
- Introducción
- Stack tecnológico
- Arquitectura de Software
- Esquema / Diseño de Base de Datos
- Integración RabbitMQ
- ms-clientes → Microservicio (Cliente, Persona)
- ms-cuentas → Microservicio (Cuenta, Movimientos)
- Comunicación entre microservicios
- Seguridad
- Pruebas unitarias
- Pruebas de integración
- Buenas prácticas de desarrollo
- Documentación API
- Despliegue en Docker
- CI/CD → AWS EC2
- Probar solución
</aside>
<aside>
Introducción
Bienvenido a la documentación técnica del **sistema bancario **de microservicios desarrollado para la prueba ténica de Devsu.
Acerca del Proyecto
Este sistema gestiona clientes, cuentas bancarias y movimientos financieros a través de dos microservicios independientes (ms-clientes y ms-cuentas) construidos con Spring Boot 4.0.3 y Java 21 LTS.
Los servicios se comunican mediante dos mecanismos complementarios:
- Comunicación síncrona (REST): Al crear una cuenta,
ms-cuentas hace un GET a ms-clientes para obtener el nombre del cliente. Implementa retry con backoff exponencial (Spring Retry) para tolerancia a fallos transitorios.
- Comunicación asíncrona (RabbitMQ): Cuando se crea, actualiza o elimina un cliente,
ms-clientes publica un evento vía Topic Exchange. ms-cuentas lo consume para mantener sincronizado el nombre del cliente localmente (eventual consistency).
Los datos persisten en bases PostgreSQL separadas (patrón Database per Service), y la solución se despliega en contenedores Docker con pipeline CI/CD automatizado en GitHub Actions y despliegue en AWS EC2.
Características Principales
- CRUD completo de Clientes: Herencia JPA (Persona → Cliente), validaciones con Bean Validation, Soft Delete.
- Gestión de Cuentas y Movimientos: Lógica de saldo atómina con
@Transactional y BigDecimal para precisión financiera.
- Comunicación entre servicios: Síncrona (REST con Retry) para consultas puntuales + Asíncrona (RabbitMQ) para sincronización de datos.
- Reporte de Estado de Cuenta: Filtro por rango de fechas y cliente, con resumen de totales (depósitos/retiros).
- Seguridad: Contraseñas hasheadas con BCrypt, identificadores de negocio con UUID, contraseñas nunca expuestas en respuestas.
- Resiliencia: Retry con backoff, health checks con Actuator, manejo centralizado de excepciones.
- Pruebas: Unitarias con Mockito, integración con Testcontainers (PostgreSQL + RabbitMQ reales).
- Documentación interactiva: Swagger OpenAPI en ambos microservicios.
Repositorio y Recursos
GitHub:
devsu-prueba-tecnica
API ms-clientes:
http://18.117.236.189:8081/swagger-ui.html
API ms-cuentas:
http://18.117.236.189:8082/swagger-ui.html
</aside>