====== Migración SICOF ERP - Proceso: Guía de Dependencias en Microservicios ====== La siguiente sección define las dependencias básicas que se deben tener presente y utilizar en el desarrollo de los microservicios de la fábrica según la necesidad de los mismos. === Consideraciones Previas === * Solo las depenencias básicas son requeridas * Las dependencias opcionales solo deben ser consideras si el microservicio aplica para el caso de la dependencia * Se asume conocimiento previo de la tecnología Maven / Spring Cloud / Nexflix OSS * Si un microservicio requiere configuraciones especiales, estas deben ser validadas con los lideres de desarrollo (Pablo Quintana, Daberson Henao, Carlos Torres, Gersain Castañeda). ===== Escenario estandar de dependencias ===== La siguiente imagen define el escenario estandar de dependencias que pueden ser utilizados en un microservicio. Posteriormente se describirá cada una deacuerdo al grupo al que pertenece. {{:ada:howto:sicoferp:factory:migracionsicoferp:process:backend:dependencias00.png?400|}} ==== Clasificación de dependencias ==== Se definen las siguientes clasificaciones de dependencias: * Dependencias básicas * Dependencias de traza * Dependencias de clientes * Dependencias de datos ===== Dependencias básicas ===== Son aquellas dependencias que deben estár presentes en todos los microservicios ya que su uso aplica la arquitectura desea en la fabrica de desarrollo. A continuación se define esas dependencias: ==== Spring Boot DevTools ==== Spring Boot DevTools((https://www.arquitecturajava.com/spring-boot-devtools-y-recarga-de-aplicaciones/)) es la herramienta de Spring Boot que nos permite reiniciar de forma automática nuestras aplicaciones cada vez que se produce un cambio en nuestro código. Utíl para la fase de desarrollo y pruebas. ==== Spring Boot Actuator ==== Spring Boot Actuator((https://openwebinars.net/blog/como-anadir-spring-boot-actuator-tu-proyecto/)) es una librería que nos proporciona herramientas de monitorización y administración de nuestra API REST de una manera bastante sencilla. ==== Spring Cloud Config Client ==== Spring Cloud Config((https://www.baeldung.com/spring-cloud-configuration)) es el enfoque cliente / servidor de Spring para almacenar y servir configuraciones distribuidas en múltiples aplicaciones y entornos. Este almacén de configuración se versiona idealmente bajo el control de versión de Git y se puede modificar en el tiempo de ejecución de la aplicación. ==== Spring Cloud Netflix Eureka Discovery Client ==== Eureka((https://blog.bi-geek.com/arquitecturas-spring-cloud-netflix-eureka/)) es un servicio REST, utilizándose principalmente en la nube de AWS, a la cuál está estrechamente ligado. Eureka se comporta como servidor, cuyo objetivo es registrar y localizar microservicios existentes, informar de su localización, su estado y datos relevantes de cada uno de ellos. Además, nos facilita el balanceo de carga y tolerancia a fallos. La dependencia cliente permite que los microservicios se registren automaticamente al arrancar su instancia. ==== Spring Web ==== Contiene los recursos necesarios (conjunto de dependencias) para el desarrollo web((https://www.adictosaltrabajo.com/2016/12/22/aplicaciones-web-con-spring-boot-capa-a-capa/)). ===== Dependencias de traza ===== Son aquellas dependencias que permiten obtener infomración asociada al microservicio como: * Estado * Memoria * Trazas de rendimiento * Log de errores Se define las siguientes dependencias de traza: ==== Zipkin Client ==== Zipkin((https://www.baeldung.com/tracing-services-with-zipkin)) es un proyecto de código abierto que proporciona mecanismos para enviar, recibir, almacenar y visualizar trazas. Esto nos permite correlacionar la actividad entre servidores y obtener una imagen mucho más clara de lo que está sucediendo exactamente en nuestros servicios. La dependencia cliente permite integrar el registro en el servidor Zipkin. ==== Spring for RabbitMQ ==== RabbitMQ es un servidor AMQP. Es decir acepta y reenvia mensajes. ===== Dependencias de clientes ===== Son aquellas dependencias que proveen clientes para el consumo de servicios como Feign o RestController ==== OpenFeign ==== Feign((https://github.com/OpenFeign/feign)) es un cliente java http ligero. Que se al stack Spring Boot para simplificar el consumo de los servicios. ===== Dependencias de datos ===== Son aquellas relacionadas a la persistencia de la información o a la gestión y exposición de los datos. Entre ellas están definidas: * Spring Data JPA * RestRepository * PostgresSQL Driver * MySQL Driver * Oracle Driver El uso de estas dependencias dependerá del origen de datos. [[ada:howto:sicoferp:factory:migracionsicoferp:process:backend|←Volver atrás]]