emartinezpinzon / libreriaCervantes

Other
0 stars 0 forks source link

Este bloque contiene la estructura necesaria para construir un proyecto en java favoreciendo el enfoque de DDD.

Los principales patrones y estilos de arquitectura que guían este bloque son

Arquitectura hexagonal

Arquitectura que fomenta que nuestro dominio sea el núcleo de todas las capas, también conocida como puertos y adaptadores en la cual el dominio define los puertos y en las capas superiores se definen los adaptadores para desacoplar el dominio. Se divide princialmente en tres capas, aplicación, dominio e infraestructura

Para obtener mas documentación sobre este tipo de arquitectura se recomienda https://codely.tv/blog/screencasts/arquitectura-hexagonal-ddd/

Patrón CQRS:

Patrón con el cual dividimos nuestro modelo de objetos en dos, un modelo para consulta y un modelo para comando (modificación de datos). Este patrón es recomendado cuando se va desarrollar lógica de negocio compleja porque nos ayuda a separar las responsabilidades y a mantener un modelo de negocio consistente.

Para mayor documentación del patrón https://martinfowler.com/bliki/CQRS.html

Especificaciones técnicas:

Tener en cuenta para usar bloque para producción:

Al momento de descargar este bloque y se vaya usar de manera productiva se debe ejecutar la tarea de gradle dependencyCheckAnalyze la cual revisa las vulnerabilidades para las versiones de las librerias que usa el bloque. El reporte que genera esta tarea se encuentra en la carpeta build del proyecto raiz. Se deben resolver los reportes críticos

Tener en cuenta cada que se incluya una nueva libreria:

Despues de incluir una libreria en gradle se debe ejecutar la tarea de gradle dependencyCheckAnalyze para revisar las vulnerabilidades reportadas.

Estructura del proyecto:

Se identifican dos carpetas principales, común y microservicio. Microservicio es la carpeta que contiene todo el código fuente para el primer microservicio de su proyecto, se recomienda cambiar el nombre de esta carpeta por la de su lógica de negocio y posteriormente modificar el archivo settings.gradle, si necesita crear mas microservicios lo único que debe realizar es duplicar esta carpeta y realizar la modificación en el archivo settings.gradle. El proyecto común contiene código fuente que comparten todos los microservicios y capas, es una librería que importan los que requieran este código compartido, es importante tener en cuenta que no debe ir código de negocio en este lugar. Como cada microservicio se va realizar con CQRS, cada uno contiene su propia estructura de arquitectura hexagonal en la cual no se comparten los modelos.

Importar el proyecto:

Para importar el proyecto se recomienda usar Gradle en la versión 5.0, se debe importar desde la ruta microservicio/build.gradle Después de importar el proyecto se queda viendo de la siguiente manera

enter image description here

Bloque HealthCheck

Es un bloque que tiene como fin saber el estado de otros bloques o servicios agregados como por ejemplo de mysql,sqlServer etc.Para esto es necesario crear un paquete com.ceiba.core.actuator en microservicio-consulta-infraestructura e implementar una interfaz llamada HealthCheck con la anotacion @Component sobreescribiendo los siguientes metodos:

Al momento de crear el bloque principal pedira un tiempo que estara dado en milisegundos llamado tiempoHealthCheck que estara guardado en archivo application.yaml de resources del microservicio.

nota* Es recomendable tener muy encuenta el tiempo asignado a HealthCheck como tal en las base de datos el tiempo que tarda en verificar es 30000 milisegundos que en segundos son 30 entoces debe ser mayor a este , para que cuando healthCheck realice la revision ,ya todos los bloques hallan devuelto su valor para no tener inconsistencias de los valores devuelto .Se esperaria aumentar el tiempo cada vez que un bloque se implemente dependiendo tambien de su tiempo de retardo.

Cualquier duda o aporte con este bloque contactar a juan.botero@ceiba.com.co o juan.castano@ceiba.com.co Hash de git relacionado: 34ceb768