Ambos son servicios Serverless que Google Cloud ofrece dentro de Google Cloud Platform (GCP), vamos a intentar recorrer el camino y entender los conceptos involucrados entre ambos servicios.
Primero, iniciamos ordenando nombres y lanzamientos de los servicios que vamos a analizar.
(2017) Google Cloud Function (1º gen) apareció en marzo 9 del 2017. Link (reslease notes oficiales de GCP). En este caso se trataba de un servicio que permitía desplegar solamente nuestro código seleccionando un runtime dentro de los disponibles.
(2018) Google Cloud Run del 15 de agosto de 2018. Link. ¿Qué es Google Cloud Run?, en palabras de Google:
Cloud Run es una plataforma de procesamiento administrada que te permite ejecutar contenedores directamente sobre la infraestructura escalable de Google
(2022) El 14 de febrero de 2022, Google lanzó una actualización de Google Cloud Functions, denominada 2º gen Link, con varias mejoras que complementaban la versión 1.
…
Antes de continuar, ya identificados los lanzamientos importantes, ahora veamos un poco de contexto.
En varios otros artículos y charlas que he tenido oportunidad de compartir, he hablado sobre Serverless. En cuanto a la definición, he comentado que una manera de definir los fundamentos de cómputo de Serverless sería: Una evolución de la gestión eficiente y atómica de los contenedores. Podemos, incluso, partir del concepto de cuando ejecutábamos nuestras cargas de trabajo en un monolito hasta el concepto de Serverless como se muestra en la imagen a continuación.
En los casos más conocidos como AWS lambda y en el caso de Google Cloud Functions, lo que tenemos es una gestión muy eficiente de los contenedores, así como una integración con el resto de los servicios en que cada Cloud Provider ofrece permitiendo despertar ante un evento o un request HTTP.
Pero, ¿cómo se ve esto por dentro?
Si quisiéramos montar una infraestructura Serverless en un entorno On Prem tendríamos que ir por una arquitectura como la siguiente:
Si viéramos a Serverless solo desde la perspectiva del cómputo, podríamos resumirlo como se muestra en la gráfica anterior, donde evolucionamos desde el Bare-metal hasta el Serverless Compute. Aun cuando sabemos que Serverless como concepto es mucho más que esta abstracción, es interesante esta visión para el análisis que estamos realizando.
- (2024) Volvamos a Google Cloud Platform, teniendo en cuenta el contexto que hemos analizado, el pasado 21 de agosto de 2024 Google renombró la primera generación de Google Cloud Function y la segunda generación como podemos ver en la imagen a continuación. Source: Google
¿Esto qué significa? Desde mi perspectiva, es una muestra de cómo las Cloud Function/Cloud Run Functions son una extensión de Google Cloud Run y que Google Cloud Run es una abstracción de una herramienta de orquestación de contenedores(Kubernetes?).
En palabras de Google:
Con Cloud Run Functions, puedes escribir funciones de un solo propósito vinculadas a eventos emitidos desde tu infraestructura y servicios de nube. Tu función de Cloud Functions se activa cuando ocurre un evento que está bajo observación. Tu código se ejecuta en un entorno completamente administrado, sin necesidad de aprovisionar infraestructura ni preocuparte por administrar servidores
Vemos claramente que el concepto de Serverless como cómputo siempre ha estado atado a la orquestación de contenedores. Con esto en mente sería interesante que pensemos si las discusiones de la elección entre Kubernetes o Serverless (si existieran) las tendríamos que enfocar desde otra perspectiva.
Pero, ¿qué tiene el cambio de nombre de trasfondo?
Además de permitirnos el análisis de cómo el cómputo en las Cloud Function (Functions as a Services) es una extensión de todo el ecosistema de contenedores y orquestadores, después de leer mucho, investigar, he encontrado muchas mejoras en varios artículos, incluso oficiales de Google (Link) explicando las diferencias.
💡 Sin embargo, en una comparativa con las opciones directas para implementar Serverless (AWS lambda, Azure, Azure, Functions) sí hay una mejora importante en cuanto al cómputo que es interesante, destacar sería:
Esto va más allá de un simple cambio de nombre. Hemos unificado la infraestructura de Cloud Functions con Cloud Run, y los desarrolladores de Cloud Functions (segunda generación) obtienen acceso inmediato a todas las nuevas funciones de Cloud Run, incluidas las GPU NVIDIA.
Despliegue de las Google Cloud Run Functions (1º y 2º gen)
Sacando del listado las herramientas nativas de Google (Link) nos quedan dos caminos para desplegar las dos versiones de Google Cloud Run Function.
Terraform
Herramienta conocida del mercado, soporta varios Providers entre los que se encuentra GCP. Terraform tiene su propio lenguaje de programación HCL para construir/describir la infraestructura que queremos. Lo interesante aquí es que las versiones de los módulos para desplegar terraform de las cloud function siguen siendo compatibles para desplegar las Google Cloud Run Functions. Google en su blog oficial anunció que continúa el soporte para las APIs y los módulos de terraform existentes. Link
Pulumi
Pulumi es una herramienta de Infraestructura como que soporta varios Providers y distintos lenguajes de programación para construir la infraestructura. No he encontrado información oficial, pero Pulumi usa la API de Google, con lo cual asumimos que sigue funcionando, sin embargo, mientras publico este post estoy haciendo pruebas con ambas herramientas para compartir el comportamiento de ambas.
Conclusiones
La evolución de Google Cloud Function a Google Cloud Run Functions, es un ejemplo de como Serverless es una tecnología que se construye como una abstracción técnica y conceptual de otras tecnologías y conceptos nativos del Cloud Computing.
Sin duda alguna la evolución del cómputo de Functions en Google Cloud ofrece una gran oportunidad para explorar un nuevo panorama en el mundo Serverless y definitivamente me genera mucha curiosidad y me tendrán por aquí compartiendo todo lo que vaya encontrando, descubriendo.
Referencias:
Terraform (https://www.terraform.io/)
Pulumi (https://www.pulumi.com/)
Anuncio oficial Google: Cambio nombre a Google Cloud Run Functions (Link)
Release Note: Google Functions (Link)
Release Note: Google Run (Link)
Charla en la t3chFest: https://youtu.be/3LgFUtTfgTU?si=GmyrK_9lC8Lgu5lL
Charla CommitConf: https://youtu.be/2pu0ojBH7hI?si=UD_14WulYSMdMJ7x