Cuando desarrollamos microservicios, o cualquier aplicación que durante su ciclo de vida pasa por varios entornos diferentes. El mantenimiento de estas configuraciones deja de ser una tarea trivial. En este post veremos cómo utilizar Spring Cloud Config para facilitarnos esta labor!
¿Qué es Spring Cloud Config?
Spring Cloud Config es una herramienta para externalizar la configuración de nuestras aplicaciones, generalmente se utiliza en un entorno de sistemas distribuidos para gestionar de forma centralizada estas configuraciones.
Como se puede ver en este diagrama, una configuración básica de Spring Cloud Config consta de tres partes:
- Un repositorio de configuraciones, donde se va a encontrar almacenadas las configuraciones de las distintas aplicaciones.
- Un servidor central de configuraciones, que va a ser el encargado de acceder al repositorio de configuraciones y servirlas a los servicios que las requieran.
- Uno o más servicios que actúan como cliente del servidor central de configuraciones. Van a obtener las configuraciones que necesitan para inicializarse del servidor central.
Configuración básica del servidor
Lo primero que vamos a necesitar para crear nuestro servidor central de configuraciones es agregar las dependencias a nuestro proyecto de spring boot: Hay que agregar el siguiente gestor de dependencias de spring cloud a nuestro pom.xml:
Luego la dependencia de spring cloud config:
Anotamos a nuestra aplicación con @EnableConfigServer:
Por último, debemos agregar en el archivo de configuraciones de nuestro servidor la url al repositorio de configuraciones:
Hecho esto, ya vamos a tener un servidor central de configuraciones listo para ser usado por nuestros servicios!
Configuración básica de un servicio
Al igual que con el servidor, necesitaremos el gestor de dependencias de spring cloud en el pom.xml de nuestro proyecto de spring boot:
La siguiente dependencia para la aplicación cliente:
Y este archivo de configuración, para indicarle a nuestro cliente la ubicación del servidor de configuraciones que acabamos de implementar:
Es importante verificar que la property spring.application.name esta configurada con el nombre del aplicación. El servidor de configuraciones utilizará este nombre de aplicación para encontrar y servir al cliente con su archivo de configuraciones:
Este archivo de configuraciones se encuentra en el repositorio al que el servidor va a acceder.
En próximos artículos veremos como utilizar otras tecnologias de Spring Cloud para implementar patrones de diseño dentro del contexto de una arquitectura de microservicios.
Hasta la próxima!