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

La aplicación se puede probar de dos formas: en la instancia desplegada en AWS o localmente.

Opción 1: AWS (desplegado)

Los servicios están corriendo en una instancia EC2 y son accesibles públicamente:

Para probar con Postman, se tiene que importar la colección Devsu-Prueba-Tecnica.postman_collection.json incluida en el repositorio y verificar las variables de colección:

Opción 2: Localmente con Docker Compose

Prerrequisitos: Docker y Docker Compose instalados, puertos 5436, 5437, 5672, 8081, 8082, 15672 disponibles.

git clone <https://github.com/FerNicolas117/devsu-prueba-tecnica.git>
cd devsu-prueba-tecnica
docker-compose up -d --build
docker-compose ps

Los servicios estarán disponibles en:

Opción 3: Localmente con IntelliJ (desarrollo)

# 1. Levantar solo la infraestructura
docker-compose up -d postgres-clientes postgres-cuentas rabbitmq

# 2. Ejecutar ms-clientes desde IntelliJ (Run)
# 3. Ejecutar ms-cuentas desde IntelliJ (Run)

Orden de pruebas recomendado:

  1. Crear los 3 clientes (POST a ms-clientes).
  2. Consultar los clientes para obtener sus UUIDs (GET a ms-clientes).
  3. Crear las 5 cuentas usando los UUIDs (POST a ms-cuentas).
  4. Registrar los 4 movimientos (POST a ms-cuentas).
  5. Probar "Saldo no disponible" con un retiro que exceda el saldo.
  6. Generar el reporte de Marianela Montalvo (GET reportes).
  7. Actualizar un nombre de cliente y verificar que RabbitMQ sincroniza el nombre en las cuentas.
  8. Apagar ms-cuentas, actualizar un cliente, verificar que el mensaje queda en la queue de RabbitMQ, encender ms-cuentas y verificar que procesa el mensaje pendiente. </aside>