Microservicio encargado de la gestión y validación de clientes dentro del Sistema de Transferencias Bancarias. Este servicio es la fuente de verdad para la existencia y el estado de un cliente y es consultado de forma sincrónica por otros microservicios (por ejemplo, transaction-service).
- Java: 21
- Framework: Quarkus 3.27.1
- Persistencia: Hibernate ORM + Panache
- Migraciones: Flyway
- Base de datos: PostgreSQL
- API REST: RESTEasy Reactive + Jackson
- Observabilidad: SmallRye Health, SmallRye Metrics
- Build: Maven
- Docker Compose: PostgreSQL en Raspberrypi 5
* docker-compose.yaml *
services:
postgres_db:
image: postgres:16
container_name: postgres_db
restart: always
environment:
POSTGRES_USER: gstroke
POSTGRES_PASSWORD: gstroke24
POSTGRES_DB: dev_gstroke_db
volumes:
- postgres_data:/var/lib/postgresql/data
ports:
- "5432:5432"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U gstroke"]
interval: 10s
timeout: 5s
retries: 5
- Ejecutar sudo nano docker compose up -d
- Verificar con docker ps
- Puerto:
8081
quarkus.http.port=8081- Motor: PostgreSQL
- Host:
192.168.18.31 - Base de datos:
dev_gstroke_db - Schema:
customer_db
quarkus.datasource.db-kind=postgresql
quarkus.datasource.username=gstroke
quarkus.datasource.password=gstroke24
quarkus.datasource.jdbc.url=jdbc:postgresql://192.168.18.31:5432/dev_gstroke_db
⚠️ Nota: las credenciales están definidas para entorno de desarrollo. En entornos productivos se recomienda usar variables de entorno o un vault.
- Estrategia de schema:
validate - Schema por defecto:
customer_db - Log SQL: habilitado
quarkus.hibernate-orm.database.default-schema=customer_db
quarkus.hibernate-orm.schema-management.strategy=validate
quarkus.hibernate-orm.log.sql=trueEsto implica que:
- Hibernate no crea ni modifica tablas
- El esquema debe existir previamente
- La estructura se valida al iniciar la aplicación
Las migraciones se ejecutan automáticamente al iniciar la aplicación.
quarkus.flyway.migrate-at-start=true
quarkus.flyway.schemas=customer_db
quarkus.flyway.default-schema=customer_db
quarkus.flyway.baseline-on-migrate=trueLos scripts deben ubicarse en:
src/main/resources/db/migration
Ejemplo:
V1__init.sql
- Gestionar clientes del banco
- Consultar información de clientes
- Validar si un cliente existe y se encuentra activo
- Exponer endpoints REST para uso interno por otros microservicios
GET /customers/{id}
Respuesta:
200 OK→ cliente encontrado404 Not Found→ cliente no existe
GET /customers/{id}/validate
Respuesta:
200 OK→ cliente válido y activo404 Not Found→ cliente no existe409 Conflict→ cliente inactivo
Este endpoint es consumido principalmente por transaction-service antes de iniciar una transferencia.
El servicio expone endpoints de salud estándar de Quarkus:
GET /q/health
Las métricas están disponibles en formato Prometheus:
GET /q/metrics
- Java 21
- Maven 3.9+
- PostgreSQL accesible desde la red
./mvnw quarkus:devEl proyecto incluye soporte para:
- JUnit 5
- RestAssured
Ejecución de tests:
./mvnw test- Schema dedicado (
customer_db) para aislar datos por microservicio - Flyway + validate para control estricto del modelo
- REST sincrónico para validaciones rápidas (fail-fast)
- Sin acceso directo desde otros servicios a la BD
- Este servicio no maneja transferencias ni saldos
- Es un servicio core dentro del flujo de transferencias
- Diseñado para ser consumido por otros microservicios de forma segura y desacoplada