Spring Boot - Servicio de configuracion en la nube (github o svn) / Spring Cloud Config Server

Importante

Este tipo de servicios se utilizan para sistemas distribuidos como las arquitecturas de microservicios en el que los servicios están altamente desacoplados pero que aún así deben compartir configuraciones. Este tipo de servicios permite gestionar la configuración de forma 100% independiente del desarrollo, permitiendo incrementar la productividad de los programadores que se integran a los equipos de trabajo.

 

- Prerequisitos

Genera tu proyecto con Spring Boot Initializr, si lo deseas puedes generar el proyecto llenando solo los campos básicos.

Agrega en la sección de Dependencias:

- Config Server

 

1. Configuración Maven.

<groupId>com.example</groupId>
<artifactId>ledzedev-config-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>ledzedev-config-server</name>
<description>Demo de Spring Boot levantando un servidor de configuración que administra recursos en SVN o gitHub</description>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.2.RELEASE</version>
</parent>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>

<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
</dependencies>

 

2. Repositorio en gitHub.com

Genera tu repositorio en github o svn y sube tus archivos de configuración. Recuerda que este servicio está pensado para centralizar la configuración en la nube, para sistemas distribuidos como las arquitecturas de microservicios (microservices), y que únicamente se dedique a proporcionar la configuración desde arranque o gestión de otros servicios.

 

También se puede trabajar de manera local con esos archivos, siempre y cuando estén gestionados por el servicio de nube, en mi caso github.

 

3. Configuración del properties del proyecto.

- Abrir el archivo application.properties y agregarle la ruta donde se encuentran los archivos de configuración y por convención se utiliza el puerto 8888 para servicios de configuración en la nube:

#spring.cloud.config.server.git.uri=/Users/ledzedev/config-files
spring.cloud.config.server.git.uri=https://github.com/CypraxPuch/config-files
server.port=
8888

Nota: Como podemos ver, si lo deseamos, podemos clonar el repositorio en nuestro equipo local e indicarle al servidor que nuestra URI es la ruta local. Por lo pronto nos quedaremos con la ruta directa en la nube.

 

4. Habilitamos el servicio en nuestra clase principal.

 Unicamente le agregamos la anotación @EnableConfigServer.

 

/**
* Código generado por Gerado Pucheta Figueroa
* Twitter: @ledzedev
* http://ledze.mx
* 18/Nov/2016.
*/
@EnableConfigServer
@SpringBootApplication
public class LedzedevConfigServerApplication {


public static void main(String[] args) {
SpringApplication.run(LedzedevConfigServerApplication.class, args);
}
}

 

5. Levantamos nuestro servidor de configuración en la nube (Spring Cloud Config Server) y probamos que nuestros archivos de configuración estén expuestos en la web.

 

 

Comprobamos el archivo YAML en web.

 

Te puedes descargar mi código directamente los archivos de configuración administrados en github, el servicio se encuentra separado de los archivos de configuración para contribuir en el alto nivel de acoplamiento, descárgatelo aquí ledzedev-config-server o te los puedes descargar en formato zip.

 

Artículos Relacionados

- Spring Boot Eureka Discovery Server