Prueba Técnica
Arquitectura Microservicio (2023)

Indicaciones generales

Herramientas y tecnologías utilizadas

Complejidad por Seniority

Nota: Considerar las siguientes indicaciones en base al perfil al que esta aplicando. Ejemplo: si es un perfil SemiSenior solo realizar lo indicado para este perfil.

Junior

Implementar los diferentes endpoints para cumplir las funcionalidades: F1, F2, F3, no es mandatorio funcionalidades: F4, F5, F6.

SemiSenior

Separar en 2 microservicios, agrupando (Cliente, Persona) y (Cuenta, Movimientos) donde se contemple una comunicación asincrónica entre los 2 microservicios. Cumplir las funcionalidades: F1, F2, F3, F4, F5 deseable la funcionalidad F6.

Senior

Implementar en 2 microservicios, agrupando (Cliente, Persona) y (Cuenta, Movimientos) donde se contemple una comunicación asincrónica entre los 2 microservicios. Cumplir las funcionalidades F1, F2, F3, F4, F5, F6, F7.

La solución debe contemplar (no necesariamente implementado) factores como: rendimiento, escalabilidad, resiliencia.

Generación de API Rest

Manejar los verbos: Get, Post, Put, Push, deletePersona.

Persona

Implementar la clase persona con los siguientes datos: nombre, género, edad, identificación, dirección, teléfono. Debe manejar su clave primaria (PK).

Cliente

Cliente debe manejar una entidad, que herede de la clase persona. Un cliente tiene: clienteid, contraseña, estado. El cliente debe tener una clave única (PK).

Cuenta

Cuenta debe manejar una entidad. Una cuenta tiene: número cuenta, tipo cuenta, saldo Inicial, estado. Debe manejar su Clave única.

Movimientos

Movimientos debe manejar una entidad. Un movimiento tiene: Fecha, tipo movimiento, valor, saldo. Debe manejar su Clave única.

Funcionalidades del API

F1: Generación de CRUDS

Crear, editar, actualizar y eliminar registros - Entidades: Cliente, Cuenta y Movimiento.

Los nombres de los endpoints a generar son:

F2: Registro de movimientos

F3: Registro de movimientos sin saldo

Al realizar un movimiento el cual no cuente con saldo, debe alertar mediante el siguiente mensaje “Saldo no disponible”. Defina, según su expertise, la mejor manera de capturar y mostrar el error.

F4: Reportes

Generar un reporte de “Estado de cuenta” especificando un rango de fechas y cliente.

Este reporte debe contener:

El endpoint que se debe utilizar para esto debe ser el siguiente: /reportes?fecha=rango fechas.

El servicio del reporte debe retornar la información en formato JSON. Defina, según su expertise, la mejor manera de solicitar y retornar esta información.

F5: Pruebas unitarias

Implementar 1 prueba unitaria para la entidad de dominio Cliente.

F6: Pruebas de Integración

Implementar 1 prueba de integración.

F7: Despliegue

Despliegue de la solución en contenedores.

Casos de Uso (Ejemplos)

1. Creación de Usuarios

Nombres Dirección Teléfono Contraseña Estado

2. Creación de Cuentas de Usuario

Numero Cuenta Tipo Saldo Inicial Estado Cliente

3. Crear una nueva Cuenta Corriente para Jose Lema

Numero Cuenta Tipo Saldo Inicial Estado Cliente

4. Realizar los siguientes movimientos

Numero Cuenta Tipo Saldo Inicial Estado Movimiento

5. Listado de Movimiento, por fechas x usuario

Fecha Cliente Numero Cuenta Tipo Saldo Inicial Estado Movimiento Saldo Disponible

Ejemplo Json

{
"Fecha":"10/2/2022",
"Cliente":"Marianela Montalvo",
"Numero Cuenta":"225487",
"Tipo":"Corriente",
"Saldo Inicial":100,
"Estado":true,
"Movimiento":600,
"Saldo Disponible":700
}

Instrucciones de despliegue

Entregables