La solución que planteé fue entregar poco a poco valor al proyecto, de esta manera simulé que tenía pases a producción. A través de uso de HU, Tasks, y gitflow para llevar a cabo todos los cambios.
- feature/basic-creation-transaction HU - Creación del servicio para guardar una transacción en la base de datos
- chore/test-configuration FIX - The unit test was corrected and DevOps folder was created
- feature/basic-retrieve-transaction HU - Creación del servicio para recuperar una transacción de la base de datos
- feature/cache-transaction HU - Almacenar en cache data que se recupera de la base de datos
- feature/event-transaction HU - Creación de componentes de mensajería y agregación en la capa service para enviarlo al microservicio de anti fraude para el análisis de las transacciones
- feature/event-validate-transaction HU - Creación de componentes de mensajería y agregación en la capa service para evaluar las transacciones que llegan como evento y retornar el estado de la validación
- chore/readme TASK - Creación de README
- develop RELEASE 0.0.1 - Proyecto local
- chore/docker-image HU - Contenedorización del microservicio de transacciones financieras
- chore/docker-image HU - Contenedorización del microservicio de anti fraude
- develop RELEASE 0.0.2 - Proyecto contenedorizado
- chore/contract-first HU - Creación de contratos
- feat/exception-handlers HU - Manejo de errores
- chore/properties-prd-tested HU - Configuración de propiedades para PRD
- develop RELEASE 0.0.3 - Propiedades PRD
Trabajé dentro de mi cuenta en donde se podrá visualizar el árbol de ramas, los commits y los tags|releases
https://github.com/CiprianoBryan/ms-financial-transaction/releases
https://github.com/CiprianoBryan/ms-antifraud/releases
- Puede utilizar el tag 0.0.1 si desea el proyecto totalmente local
- Puede utilizar el tag 0.0.2 si desea el proyecto dockerizado
- Puede utilizar el tag 0.0.3 si lleva el proyecto a Kubernetes y utiliza los valores de producción necesarios para cumplir con la alta transaccionalidad
- En un primer planteamiento tenía pensado utilizar CQRS para optimizar más el tiempo de respuesta, utilizando una base de datos principal y otra réplica, por el tiempo nos quedamos con tener únicamente una base de datos
- Agregar los tests unitarios, el cuál por tiempo tampoco se pudo dar
- Utilizar Quarkus para aprovechar aún más Kubernetes y tener el proyecto más optimizado
- Usar Reactividad podría generar conflictos por lo que no se recomendaría
- Tener dashboard para monitorear la aplicación (En alguna de las herramientas de observabilidad Dynatrace, New Relic, entre otros)
- Se está agregando los archivos de cada repositorio en este fork junto al .git para que lo pueda descargar y visualizar todo lo trabajado