Ir al contenido principal

Destacado

Spring Cloud Sleuth y StackDriver Trace

Siguiendo con nuestra saga de proyectos de Spring GCP, ahora, nos toca ver Spring Cloud Sleuth.
En proyectos de Arquitectura de Micro servicios es muy importante la información y observabilidad de todo. Si se están realizando llamadas entre servicios A, B y C; es importante entender si estas fueron exitosas o existe latencia entre dichas llamadas.

Nosotros podemos agregar esta dependencia de Sleuth a nuestro proyecto Spring Boot para darle ese "super poder" de tracing distribuido y luego exponer dicha información en un Zipkin o Jaegger por ejemplo.

GCP tiene Stackdriver trace, que es un servicio que nos permite guardar esta data de tracing sin tener que administrar nosotros mismos nuestro Zipking o storage. Stackdriver puede productir reportes de latencia y/o detectar anamalías en la performance.

Existen dos formas de usar Stackdriver Trace en nuestra aplicación Spring Boot:

1. Usas un Stackdriver Trace Zipkin proxy y configurar el Spring Cloud Sleuth para que use este prox…

SPRING CLOUD GCP - Config Starter


Ahora vamos a ver esta opción que tiene GCP para guardar nuestras configuraciones. El Spring Cloud GCP Config Starter.

1. Primero hay que habilitar el Cloud Runtime Configuration API.


El resultado es:



2. Vamos al cloud shell para crear un nuevo runtime configuration:

 gcloud beta runtime-config configs create joedayz_prod

El resultado es:


NOTA: Google recomienda que se siga este formato para nombre de runtime configuration: "application-name"_"environment".

3. El siguiente paso es crear algunas variables de configuración:


$ gcloud beta runtime-config configs variables set \
  token_expire 30 --config-name joedayz_prod
$ gcloud beta runtime-config configs variables set \
  validar_x_ldap true --config-name joedayz_prod

El resultado es:


Si deseas comprobar que fueron registradas, puedes listarlas con:

gcloud beta runtime-config configs variables list \
  --config-name joedayz_prod

Obteniendose:



4. Creamos una aplicación Spring Boot

5. Agregamos una controladora  y con @Value tratamos de acceder a dichos valores.




6. Modificamos el pom.xml para agregar las dependencias de spring cloud gcp.









7. Modificar el application.properties y configurar el bootstrap.properties.








8. Para Refrescar la configuración en runtime tendríamos que agregar la dependencia de actuator.

     
            org.springframework.boot
            spring-boot-starter-actuator
       

9. Cambiamos el parametro que querramos a otro valor:

gcloud beta runtime-config configs variables set   token_expire 90 --config-na
me joedayz_prod



10. Probamos el proyecto again, pero, sigue saliendo el resultado anterior.

¿Porque?

11. Hay que hacer un POST actuator/refresh. Use postman o curl. En esta oportunidad usaremos curl.

curl -XPOST http://localhost:8080/actuator/refresh
["token_expire"]%

12. Revisamos y el resultado es:


Obviamente es un micro servicio. Si tienes muchos micro servicios que necesitan ser refrescados, una mejor opción es Spring Cloud Bus.


Enjoy!!

Joe











Comentarios