Soluciones Google Cloud en Hocelot
Para los que lleguéis aquí por primera vez, simplemente recordaros que este post es la segunda parte perteneciente al post “Soluciones Google Cloud en Hocelot”, donde nos introdujimos en el concepto de las tecnologías Cloud y llevamos a cabo el mismo experimento que en este post, pero con Cloud Functions.
Ahora sí, para los que estáis esperando el análisis, no me entretengo más y seguimos:
2. Cloud Run, ¿qué es y para qué sirve?
Este otro producto ofrecido por Google es un híbrido entre Cloud Functions y algo que seguramente hayas escuchado ya: Microservicios en Docker.

Como ya vimos en Cloud Functions, Cloud Run te expone una URL pública accesible desde todo internet, que servirá de activador HTTP de nuestro código que se ejecuta en nuestra imagen Docker, ¿mola no?
Ahora bien, te ofrecen dos opciones para desplegar imágenes:
- Desplegar sobre su infrastructura de Kubernetes serverless.
- Desplegar sobre tu cluster GKE (Kubernetes gestionado por ti mismo).
Tras probar con la primera opción, descubrimos que al igual que Cloud Functions, este código corriendo en nuestra imagen Docker no está eternamente esperando por nosotros, por lo que necesita ser invocado tras su estado de letargo. Por precaución, Google no atenderá todas las peticiones HTTP que tu negocio requiera, ya que podrías impactarles o crearles latencia en su infraestructura. Para ello te preguntarán cuántas peticiones por segundo necesitas.

Fijándonos en la línea simultaneidad veréis que está fijada a 80. Ese es el ratio de peticiones por segundo al que auto escalará, si la demanda del consumo de la API así lo requiere. Y de nuevo:
It´s time to test!
Al igual que en el Test de Cloud Functions, el código de test simplemente ejecuta 8 activaciones simultaneas HTTP, esperan 1 segundo, y nos devuelven una respuesta, pero no parece mucho más rápido que el test anterior.
(base) victor@ideapad:
-/Escritorio/ENTORNOS_GCLOUD/test-etl/test_cloud_function/serverless$
python3 cf_multi_request.py
==========================================================================
Elapsed time for request 1 1.0001308917999268 seconds!
Elapsed time for request 2 1.0001587867736816 seconds!
Elapsed time for request 3 1.0001599788665771 seconds!
Elapsed time for request 4 1.0001354217529297 seconds!
Elapsed time for request 5 1.000138521194458 seconds!
Elapsed time for request 6 1.0001327991485596 seconds!
Elapsed time for request 7 1.000136137008667 seconds!
Elapsed time for request 8 1.000178337097168 seconds!
TOTAL elapsed time for all request: 9.791613817214966 seconds
==========================================================================
De nuevo vemos que se tardan 10 segundos aproximadamente en atender las 8 peticiones. Entonces ¿dónde está la simultaneidad? ¿estará la respuesta en GKE? Probemos pues.
3. ¡GKE, llamando a los microservicios oiga!
GKE es la solución de Kubernetes en Cloud que Google ofrece para el despliegue de imágenes Docker y Microservicios. Se puede desplegar en él a través de Cloud Run, si necesitas exponer una URL y un activador HTTP asociados a un microservicio es ideal, o bien puedes desplegar tus imágenes libremente, pero ello conlleva que tengas un super equipo técnico DevOps capaz de hacer su magia 😀
Sobre este cluster de Kubernetes hemos desplegado el mismo código que teníamos para Cloud Run, pero la diferencia es que esta vez, la infraestructura y el acceso público lo ponemos nosotros, nada de serverless que ya hemos visto como Google nos “corta las alas”.
Una vez dicho esto…
It´s time to test!
En esta prueba vamos a lanzar exactamente el mismo proceso que en los casos anteriores, y veamos que ocurre:
(base) victor@ideapad:
-/Escritorio/ENTORNOS_GCLOUD/testetl/test_cloud_function/managed$
python3 gke_multi_request.py
==========================================================================
Elapsed time for request 1 1.0010533332824707 seconds!
Elapsed time for request 2 1.0002083778381348 seconds!
Elapsed time for request 3 1.0009584426879883 seconds!
Elapsed time for request 4 1.0010087490081787 seconds!
Elapsed time for request 5 1.0007238388061523 seconds!
Elapsed time for request 6 1.0008323192596436 seconds!
Elapsed time for request 7 1.000103235244751 seconds!
Elapsed time for request 8 1.0009281635284424 seconds!
TOTAL elapsed time for all request: 1.0831897258758545 seconds
==========================================================================
¡Increíble! ¡Las 8 peticiones fueron atendidas en el mismo segundo! ¡Tenemos vencedor en la categoría de mejor solución Google Cloud!
4. Conclusiones:
Como habéis podido ver en los tests, las soluciones ofrecidas por una Cloud necesitan ser estudiadas en detenimiento y ¡¡sobre todo ser probradas!! Una vez teniendo claro lo que se quiere, ver qué se adapta mejor a tu necesidad. En el caso de Hocelot, nuestras API’s están conectadas a modelos predictivos desplegados en AI Platform, también de Google Cloud.