Skip to content
This repository was archived by the owner on Oct 14, 2025. It is now read-only.

camiluscorp/banco-backend

Repository files navigation

banco-backend — Guía de despliegue (entorno de desarrollo)

Este documento explica cómo levantar localmente los tres microservicios del proyecto Banco:

  • banco-clientes (puerto 8080)
  • banco-cuentas (puerto 8081)
  • banco-movimientos (puerto 8082)

1) Prerrequisitos

  • Java 17+ (o la versión que use el proyecto)
  • Maven 3.8+
  • PostgreSQL 13+ en tu máquina (o instancia accesible)
  • psql disponible en tu PATH
  • Puertos libres: 8080, 8081, 8082, 5432 (o el que uses para Postgres)

2) Preparar base de datos

  1. Crea la base y esquemas requeridos en tu servidor Postgres local.
  2. Ejecuta el script BaseDatos.sql ubicado en el repositorio (este archivo se encuentra en la raiz del repositorio).

Si tus servicios usan credenciales distintas, ajusta application.properties de cada módulo con tu JDBC/usuario/clave.

Plantilla JDBC (si aplica):

# Datasource
quarkus.datasource.db-kind=postgresql
quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/clientes
quarkus.hibernate-orm.database.default-schema=clientes
quarkus.datasource.username=postgres
quarkus.datasource.password=xxxxx
# Datasource
quarkus.datasource.db-kind=postgresql
quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/cuentas
quarkus.hibernate-orm.database.default-schema=cuentas
quarkus.datasource.username=postgres
quarkus.datasource.password=xxxxxx
# Datasource
quarkus.datasource.db-kind=postgresql
quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/movimientos
quarkus.hibernate-orm.database.default-schema=movimientos
quarkus.datasource.username=postgres
quarkus.datasource.password=xxxxxx

3) Configurar propiedades para desarrollo local

3.1 banco-cuentas

Edita banco-cuentas/src/main/resources/application.properties para que apunte a localhost y comenta las URLs de servicio por nombre de contenedor:

# URL del microservicio clientes
quarkus.rest-client.cliente-api.url=http://localhost:8080
#quarkus.rest-client.cliente-api.url=http://banco-clientes:8080
quarkus.rest-client.cliente-api.exception-on-application-error=false

quarkus.rest-client.movimientos-api.url=http://localhost:8082
#quarkus.rest-client.movimientos-api.url=http://banco-movimientos:8082
quarkus.rest-client.movimientos-api.exception-on-application-error=false

3.2 banco-movimientos

Edita banco-movimientos/src/main/resources/application.properties de forma similar:

# URL del microservicio clientes
quarkus.rest-client.cliente-api.url=http://localhost:8080
#quarkus.rest-client.cliente-api.url=http://banco-clientes:8080
quarkus.rest-client.cliente-api.exception-on-application-error=false

# URL del microservicio cuentas
quarkus.rest-client.cuenta-api.url=http://localhost:8081
#quarkus.rest-client.cuenta-api.url=http://banco-cuentas:8081
quarkus.rest-client.cuenta-api.exception-on-application-error=false

Importante: En desarrollo usa siempre localhost para que los microservicios se encuentren entre sí sin depender de Docker/hostnames de red.

3.3 banco-clientes

Este servicio suele ser independiente (no consume otros servicios). Asegúrate únicamente de que:

  • Apunte a tu Postgres local.
  • Exponga el puerto 8080.

4) Compilar

Desde la raíz del proyecto (o cada módulo, si están separados):

mvn clean install -DskipTests

5) Ejecutar los servicios (local)

Levanta los módulos en este orden para evitar errores de dependencia:

  1. banco-clientes (8080)
  2. banco-cuentas (8081)
  3. banco-movimientos (8082)

Con Quarkus en modo dev:

# Terminal 1
cd banco-clientes
mvn quarkus:dev

# Terminal 2
cd banco-cuentas
mvn quarkus:dev

# Terminal 3
cd banco-movimientos
mvn quarkus:dev

Si prefieres ejecutar JARs:

mvn package -DskipTests
java -jar target/*-runner.jar

6) Verificaciones rápidas

Ajusta paths según tus endpoints reales.

# Salud / info
curl -i http://localhost:8080/q/health
curl -i http://localhost:8081/q/health
curl -i http://localhost:8082/q/health

# Ejemplos funcionales (simulados)
# Listar clientes
curl -s http://localhost:8080/clientes

# Listar cuentas (debería consultar clientes en 8080 y responder)
curl -s http://localhost:8081/cuentas

# Registrar movimiento (debería consultar cuentas 8081 y clientes 8080)
curl -s -X POST http://localhost:8082/movimientos -H "Content-Type: application/json" -d '{
  "numeroCuenta": "1234567890",
  "tipo": "DEPOSITO",
  "monto": 100.00,
  "descripcion": "Depósito de prueba"
}'

7) Orden de arranque recomendado

  1. Base de datos (Postgres) lista y script.sql aplicado.
  2. banco-clientes (depende solo de DB).
  3. banco-cuentas (consume clientes).
  4. banco-movimientos (consume clientes y cuentas).

8) Solución de problemas (FAQ)

  • Timeouts entre servicios: verifica que en application.properties estés usando http://localhost:puerto (no los hostnames tipo banco-xxx) y que el servicio destino ya está arriba.
  • Errores de DB (tabla/esquema no existe): confirma que ejecutaste script.sql en la misma base y que los schema/search_path corresponden.
  • Puerto ocupado: cambia el puerto de Quarkus con quarkus.http.port=XXXX o libera el puerto ocupado.
  • Credenciales inválidas: revisa quarkus.datasource.* en cada módulo y prueba conexión con psql.

banco-backend — Guía de despliegue (Docker)

Esta sección explica cómo levantar los servicios en contenedores Docker. Aquí se usan los hostnames de servicio para que los microservicios se comuniquen entre sí dentro de la misma red de Docker.

1) Ajustar application.properties para Docker

banco-cuentas

Edita banco-cuentas/src/main/resources/application.properties para comentar localhost y usar los hostnames (banco-clientes, banco-movimientos):

# URL del microservicio clientes
#quarkus.rest-client.cliente-api.url=http://localhost:8080
quarkus.rest-client.cliente-api.url=http://banco-clientes:8080
quarkus.rest-client.cliente-api.exception-on-application-error=false

# URL del microservicio movimientos
#quarkus.rest-client.movimientos-api.url=http://localhost:8082
quarkus.rest-client.movimientos-api.url=http://banco-movimientos:8082
quarkus.rest-client.movimientos-api.exception-on-application-error=false

banco-movimientos

Edita banco-movimientos/src/main/resources/application.properties de forma similar (usar banco-clientes y banco-cuentas):

# URL del microservicio clientes
#quarkus.rest-client.cliente-api.url=http://localhost:8080
quarkus.rest-client.cliente-api.url=http://banco-clientes:8080
quarkus.rest-client.cliente-api.exception-on-application-error=false

# URL del microservicio cuentas
#quarkus.rest-client.cuenta-api.url=http://localhost:8081
quarkus.rest-client.cuenta-api.url=http://banco-cuentas:8081
quarkus.rest-client.cuenta-api.exception-on-application-error=false

Nota: Los Dockerfile ya están dentro de cada proyecto (banco-clientes, banco-cuentas, banco-movimientos).

2) Usar el docker-compose.yml en la raíz del repositorio

El archivo docker-compose.yml ya tiene configurado todo, incluyendo creacion de bdd y esquemas

3) Construir imágenes y levantar los contenedores

Desde la raíz del repositorio:

# 1) Construir imágenes y levantar
docker compose up --build -d

# 2) Ver logs (opcional)
docker compose logs -f

# 3) Detener
docker compose down

4 Validaciones rápidas en Docker

curl -i http://localhost:8080/q/health     # banco-clientes
curl -i http://localhost:8081/q/health     # banco-cuentas
curl -i http://localhost:8082/q/health     # banco-movimientos

Checklist Docker:

  • Propiedades ajustadas para hostnames (banco-clientes, banco-cuentas, banco-movimientos).
  • Dockerfile presentes en cada módulo.
  • docker-compose.yml en la raíz del repo.
  • Base de datos lista y db/init.sql aplicado.
  • Puertos 8080/8081/8082 expuestos en el host si necesitas consumir desde fuera.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published