Este es un proyecto para un reto práctico de LMS que simula un cajero automatico multimoneda implementando con microservicios en java con docker
- Java 11
- SpringBoot 2.7.7
- Maven 3.9.4
- Openapi: 3.0.1
- Postgres 12
- MongoDB 6.0.12
- Zookeeper 3.9.1
- Kafka 3.4.1
Para el proceso de implementación se considero los siguientes patrones de diseño:
- Delegate: Para la implementación de apis REST generadas con openapi
- Facade: Para a implementación de Repositorios de Datos
Se implementó el proceso de documentación median openapi, cada microservicio tiene su documentación las siguientes rutas:
La documentación de la propuesta técnica de arquitectura se encuentra en Propuesta Técnica Nota: Considerar que la implementación al ser un primer MPV no contempla la funcionalidad de toda la arquitectura descrita
La implementación de este proyecto contempla la siguiente estructura de despliegue:
Para construir el contenedor, se debe ejecutar el archivo docker-compose del directorio principal con el siguiente comando:
docker-compose up -d
La primera vez, es probable que demore un par de minutos, porque necesitará descargar las imágenes de los contenedores
Para comprobar que los contenedores se levantaron correctamente con el comando
docker ps -a
Se debe verificar que tengan el siguiente listado de contenedores en estado running:
- clientes-database
- zookeeper
- kafka
- cuentas-database
- transacciones-database
- tasas-database
- clientes-app
- cuentas-app
- transacciones-app
- tasas-app
docker ps -a
Se creó una colección de postman que le permite probar los servicios de manera integral, el archivo se encuentra el archivo se encuentra en Test de Integración
También prueba probar los servicios de manera individual siguiendo las siguientes instrucciones:
El microservicio de clientes se estara ejecutando en la siguiente ruta: http://localhost:8000 La documentación de las apis se puede consultar mediante http://localhost:8000/swagger-ui/index.html
POST http://localhost:8001/clientes/crear
{
"ci": "6517731",
"email": "lovandov@gmail.com",
"nombre": "Lizeth",
"apellido": "Ovando",
"telefono": 78895651
}
El microservicio de cuentas se estara ejecutando en la siguiente ruta: http://localhost:8001 La documentación de las apis se puede consultar mediante http://localhost:8001/swagger-ui/index.html
POST http://localhost:8001/cuentas/crear
{
"clienteID": "065a6905-1412-4c7a-bc45-d22e00a59300",
"moneda": "BOB",
"saldo": 0
}
El microservicio de cuentas se estara ejecutando en la siguiente ruta: http://localhost:8001 La documentación de las apis se puede consultar mediante http://localhost:8001/swagger-ui/index.html
GET http://localhost:8001/cuentas/065a6905-1412-4c7a-bc45-d22e00a59300
El microservicio de transacciones se estara ejecutando en la siguiente ruta: http://localhost:8002 La documentación de las apis se puede consultar mediante http://localhost:8002/swagger-ui/index.html
POST http://localhost:8002/transacciones/retiro
{
"cuentaID": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"monto": 0.0001,
"moneda": "BOB"
}
El microservicio de transacciones se estará ejecutando en la siguiente ruta: http://localhost:8002 La documentación de las apis se puede consultar mediante http://localhost:8002/swagger-ui/index.html
POST http://localhost:8002/transacciones/deposito
{
"cuentaID": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"monto": 0.0001,
"moneda": "BOB"
}
Siga las instrucciones de los archivos README.md de cada uno de los proyectos en el siguiente orden: