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 - Google Cloud Storage

Hoy quiero hablarles del Spring Cloud GCP.

El proyecto Spring Cloud GCP nos ofrece las siguientes características:


  • Bill of Materials (BOM) for dependency version management
  • Spring Cloud GCP Pub/Sub, including PubSubTemplate
  • Spring Resource Abstraction for Google Cloud Storage
  • Spring Integration Channel Adapters for Google Cloud Pub/Sub and Google Cloud Storage
  • Spring Cloud Stream Binder for Pub/Sub
  • Spring Data Spanner (BETA)
  • Spring Boot starters
  • GCP Support
    • Google Cloud Config (BETA)
    • Google Cloud Spanner (BETA)
    • Google Cloud Logging
    • Google Cloud Pub/Sub
    • Google Cloud SQL
    • Google Cloud Storage
    • Stackdriver Trace with Spring Cloud Sleuth

Y según la documentación solo es necesario esta dependencia en nuestro proyecto:


   
        org.springframework.cloud
        spring-cloud-gcp
        1.0.0.RELEASE
   


Y Gradle:

dependencies {
    compile 'org.springframework.cloud:spring-cloud-gcp:1.0.0.RELEASE'
}


La intención de este y sucesivos post es mostrarles como usar estos proyectos.

Requisitos 


  • Tener Java 8+
  • Intellij IDEA o el IDE de su preferencia
  • Cuenta activa (trial o pagada) en Google Cloud Platform


Trabajando con Google Cloud Storage (GCS)

1. Primero acceder al Google Cloud Shell ( >_) que es una linea de comandos que se ejecuta en el cloud.




El resultado es:


2. Si colocas el comando gcloud auth list podras ver si estas autenticado. El gcloud es una herramienta de linea de comandos que te permite crear/configurar recursos en GCP , pero , en este shell ya viene instalado por defecto.



3. Verificamos que estamos trabajando con el proyecto correcto:


OJO: Si no estuvieras con el proyecto correcto, deberás setear el proyecto así:

gcloud config set project

Ese PROJECT_ID lo obtienes en:


Y al hacer clic en ese icoono a la derecha te saldrá la lista de proyectos:


4. Creamos un archivo en google cloud storage con echo "Hola desde Peru a GCP lovers" > sample.txt



5. Creamos un bucket en GCS y transferimos nuestro archivo con gsutil

BUCKET=joe-bucket-$USER

gsutil makebucket gs://$BUCKET

gsutil copy sample.txt gs://$BUCKET



Si vamos a la consola GCP, en buckets veremos nuestro archivo:



6. Creamos nuestro proyecto boot con las siguientes dependencias:    web, GCP Storage

7. Creamos una controladora para Leer nuestro archivo:


8. Ejecutamos el proyecto y obtenemos....


Error. Esto se debe a que estamos en nuestra pc y no hemos configurado nuestras credenciales. El mensaje es claro: "GOOGLE_APPLICATION_CREDENTIALS must be defined pointing to a file defining the credentials"

9. Para solucionar este problema necesitas generar para tu cuenta una clave y descargar el archivo json correspondiente. 


10. Creas una variable de entorno GOOGLE_APPLICATION_CREDENTIALS apuntando a tu archivo json.




11.  Copias el contenido de ese json en un archivo application_default_credentials.json ubicado en ~/.config/gcloud


12. Refresca tu terminal y vuelve a probar.


Perfecto!!. Ahora si todo anda bien.

13.  Invocamos el URL http://localhost:8080

Wala!!! o como se diga jajaja.

14. Si quieres agregar contenido al archivo, tendras que manejar un POST. 


15. Reinicias  y pruebas con postman:



Listo, hasta el próximo proyecto.

Enjoy!

Joe

Comentarios