Qué es Cloud Run

Cloud Run es una plataforma de computación gestionada que te permite ejecutar contenedores directamente en la infraestructura escalable de Google.

Puedes desplegar código escrito en cualquier lenguaje de programación en Cloud Run si puedes crear una imagen de contenedor a partir de él. De hecho, crear imágenes de contenedor es opcional. Si utilizas Go, Node.js, Python, Java, .NET Core, Ruby o un framework compatible, puedes usar la opción de despliegue basado en fuente que crea el contenedor automáticamente. Para ello, sigue las prácticas recomendadas para el lenguaje que utilizas.

Google ha diseñado Cloud Run para que funcione bien con otros servicios de Google Cloud, de modo que puedas crear aplicaciones con todas las funciones.

En resumen, Cloud Run permite a los desarrolladores dedicar su tiempo a escribir código y muy poco tiempo a operar, configurar y escalar su servicio de Cloud Run. No tienes que crear un clúster ni gestionar la infraestructura para ser productivo con Cloud Run.

Servicios, trabajos y grupos de trabajadores: tres formas de ejecutar tu código

En Cloud Run, tu código puede ejecutarse como un servicio, un trabajo o un grupo de trabajo. Todos estos tipos de recursos se ejecutan en el mismo entorno y pueden usar las mismas integraciones con otros servicios en Google Cloud.

En la siguiente tabla se ofrece una visión general de las opciones que proporciona cada tipo de recurso de Cloud Run.

Recurso Descripción
Servicio Responde a las solicitudes HTTP enviadas a un endpoint único y estable mediante instancias efímeras y sin estado que se autoescalan en función de varias métricas clave. También responde a eventos y funciones.
Tarea Gestiona tareas paralelizadas que no se basan en solicitudes y que se ejecutan manualmente o de forma programada hasta completarse.
Grupo de trabajadores Gestiona cargas de trabajo que no se basan en solicitudes, como las cargas de trabajo basadas en extracción. Por ejemplo, consumidores de Kafka, colas de extracción de Pub/Sub o consumidores de RabbitMQ.

Servicios de Cloud Run

Un servicio de Cloud Run te proporciona la infraestructura necesaria para ejecutar un endpoint HTTPS fiable. Es tu responsabilidad asegurarte de que tu código escucha en un puerto TCP y gestiona las solicitudes HTTP.

En el siguiente diagrama se muestra un servicio de Cloud Run que ejecuta varias instancias de contenedor para gestionar solicitudes web y eventos del cliente mediante un endpoint HTTPS.

Un servicio de Cloud Run ejecuta contenedores para atender solicitudes web y eventos

Un servicio estándar incluye las siguientes funciones:

Punto final HTTPS único para cada servicio
Todos los servicios de Cloud Run tienen un punto de conexión HTTPS en un subdominio único del dominio *.run.app. También puedes configurar dominios personalizados. Cloud Run gestiona TLS por ti y admite WebSockets, HTTP/2 (de extremo a extremo) y gRPC (de extremo a extremo).
Autoescalado rápido basado en solicitudes
Cloud Run se escala rápidamente para gestionar todas las solicitudes entrantes o para gestionar el aumento de la utilización de la CPU fuera de las solicitudes si la configuración de facturación es facturación basada en instancias. Un servicio puede escalar rápidamente hasta mil instancias o incluso más si solicitas un aumento de la cuota. Si la demanda disminuye, Cloud Run elimina los contenedores inactivos. Si te preocupan los costes o la sobrecarga de los sistemas posteriores, puedes limitar el número máximo de instancias.
Escalado manual opcional
De forma predeterminada, Cloud Run escala automáticamente a más instancias para gestionar más tráfico, pero puedes anular este comportamiento mediante el escalado manual para controlar el comportamiento de escalado.
Gestión del tráfico integrada

Para reducir el riesgo de implementar una nueva revisión, Cloud Run permite realizar un lanzamiento gradual, lo que incluye dirigir el tráfico entrante a la revisión más reciente, restaurar una revisión anterior y dividir el tráfico entre varias revisiones al mismo tiempo.

Por ejemplo, puedes empezar enviando el 1% de las solicitudes a una nueva revisión y aumentar ese porcentaje mientras monitorizas la telemetría.

Servicios públicos y privados

Se puede acceder a un servicio de Cloud Run desde Internet, o bien puedes restringir el acceso de las siguientes formas:

Puedes servir recursos almacenables en caché desde una ubicación perimetral más cercana a los clientes si pones una red de distribución de contenido (CDN), como Firebase Hosting y Cloud CDN, delante de un servicio de Cloud Run.

Escalado a cero e instancias mínimas

De forma predeterminada, si la facturación se establece en facturación basada en instancias, Cloud Run añade y elimina instancias automáticamente para gestionar todas las solicitudes entrantes o para gestionar el aumento del uso de la CPU fuera de las solicitudes.

Si no hay solicitudes entrantes a tu servicio, se eliminará incluso la última instancia restante. Este comportamiento se conoce como escalado a cero. Después, si no hay instancias activas cuando llega una solicitud, Cloud Run crea una nueva instancia. Esto aumenta el tiempo de respuesta de estas primeras solicitudes, en función de la rapidez con la que tu contenedor esté listo para gestionar solicitudes.

Para cambiar este comportamiento, utilice uno de los siguientes métodos:

Precios de pago por uso de los servicios

Escalar a cero es una opción atractiva por motivos económicos, ya que se te cobra por la CPU y la memoria asignadas a una instancia con una granularidad de 100 ms. Si no configuras instancias mínimas, no se te cobrará si no se usa tu servicio. Hay un nivel gratuito con muchas ventajas. Consulta los precios para obtener más información.

Puede habilitar dos ajustes de facturación:

Basada en solicitudes
Si una instancia no procesa solicitudes, no se te cobrará. Pagas una cuota por solicitud.
Basado en instancias
Se te cobra durante toda la vida útil de una instancia. No se cobra ninguna tarifa por solicitud.

Hay un nivel gratuito con muchas ventajas. Consulta los precios para obtener más información y Configuración de facturación para saber cómo habilitar la facturación basada en solicitudes o en instancias de tu servicio.

Un sistema de archivos de contenedor desechable

Las instancias de Cloud Run son desechables. Todos los contenedores tienen una superposición de sistema de archivos en memoria y de escritura, que no se conserva si el contenedor se cierra. Cloud Run determina cuándo dejar de enviar solicitudes a una instancia y cerrarla, por ejemplo, cuando se reduce la escala.

Para recibir una advertencia cuando Cloud Run esté a punto de cerrar una instancia, tu aplicación puede interceptar la señal SIGTERM. Esto permite que tu código vacíe los búferes locales y conserve los datos locales en un almacén de datos externo.

Para conservar los archivos de forma permanente, integra Cloud Storage o monta un sistema de archivos de red (NFS).

Cuándo usar los servicios de Cloud Run

Los servicios de Cloud Run son ideales para el código que gestiona solicitudes, eventos o funciones. Estos son algunos ejemplos de casos prácticos:

Sitios y aplicaciones web
Crea tu aplicación web con tu pila favorita, accede a tu base de datos SQL y renderiza páginas HTML dinámicas.
APIs y microservicios
Puedes crear una API REST, una API GraphQL o microservicios privados que se comuniquen a través de HTTP o gRPC.
Procesamiento de datos de streaming
Los servicios de Cloud Run pueden recibir mensajes de suscripciones de inserción de Pub/Sub y eventos de Eventarc.
Cargas de trabajo asíncronas
Las
funciones de Cloud Run pueden responder a eventos asíncronos, como un mensaje en un tema de Pub/Sub, un cambio en un segmento de Cloud Storage o un evento de Firebase.
Inferencia de IA
Los servicios de Cloud Run, con o sin GPU configurada, pueden alojar cargas de trabajo de IA, como modelos de inferencia y entrenamiento de modelos.

Tareas de Cloud Run

Si tu código realiza una tarea y, después, se detiene (por ejemplo, mediante una secuencia de comandos), puedes usar un trabajo de Cloud Run para ejecutarlo. Puedes ejecutar una tarea desde la línea de comandos mediante la CLI de Google Cloud, programando una tarea periódica o ejecutándola como parte de un flujo de trabajo.

Los trabajos de matriz son una forma más rápida de ejecutar trabajos

Un trabajo puede iniciar una sola instancia para ejecutar tu código, que es una forma habitual de ejecutar una secuencia de comandos o una herramienta.

Sin embargo, también puedes usar un trabajo de matriz para iniciar muchas instancias idénticas e independientes en paralelo. Los trabajos de matriz son una forma más rápida de procesar trabajos que se pueden dividir en varias tareas independientes.

En el siguiente diagrama se muestra cómo un trabajo con siete tareas tarda más en ejecutarse de forma secuencial que el mismo trabajo cuando cuatro instancias pueden procesar tareas independientes en paralelo:

Las tareas de array son una forma más rápida de ejecutar tareas paralelizadas

Por ejemplo, si cambias el tamaño y recortas 1000 imágenes de Cloud Storage, procesarlas consecutivamente es más lento que procesarlas en paralelo con muchas instancias, con Cloud Run gestionando el escalado automático.

Cuándo usar tareas de Cloud Run

Los trabajos de Cloud Run son adecuados para ejecutar código que realiza una tarea y se cierra cuando se completa. Aquí tienes algunos ejemplos:

Secuencia de comandos o herramienta
Ejecuta una secuencia de comandos para realizar migraciones de bases de datos u otras tareas operativas.
Tarea de matriz
Realiza un procesamiento altamente paralelizado de todos los archivos de un segmento de Cloud Storage.
Tarea programada
Crea y envía facturas a intervalos regulares, o guarda los resultados de una consulta de base de datos como XML y sube el archivo cada pocas horas.
Cargas de trabajo de IA
Los trabajos de
Cloud Run con o sin GPU configurada pueden alojar cargas de trabajo de IA, como la inferencia por lotes, el ajuste de modelos y el entrenamiento de modelos.

Integraciones deGoogle Cloud

Cloud Run se integra con el ecosistema más amplio de Google Cloud, lo que te permite crear aplicaciones con todas las funciones.

Entre las integraciones esenciales se incluyen las siguientes:

Almacenamiento de datos
Cloud Run se integra con Cloud SQL (MySQL, PostgreSQL y SQL Server gestionados), Memorystore (Redis y Memcached gestionados), Firestore, Spanner, Cloud Storage y más. Consulta la lista completa de almacenamiento de datos.
Registro y generación de informes de errores
Cloud Logging ingiere automáticamente los registros de contenedores. Si hay excepciones en los registros, Error Reporting las agrega y te envía una notificación. Se admiten los siguientes lenguajes: Go, Java, Node.js, PHP, Python, Ruby y .NET.
Identidad de servicio
Cada revisión de Cloud Run está vinculada a una cuenta de servicio, y las Google Cloud bibliotecas de cliente usan de forma transparente esta cuenta de servicio para autenticarse en las Google Cloud APIs
.
Entrega continua
Si almacenas tu código fuente en GitHub, Bitbucket o Cloud Source Repositories, puedes configurar Cloud Run para que despliegue automáticamente las nuevas confirmaciones.
Redes privadas
Las instancias de Cloud Run pueden acceder a los recursos de la red de nube privada virtual a través del conector de acceso a VPC sin servidor. De esta forma, tu servicio puede conectarse con máquinas virtuales de Compute Engine o con productos basados en Compute Engine, como Google Kubernetes Engine o Memorystore.
Google Cloud APIs
El código de tu servicio se autentica de forma transparente con las APIs. Google Cloud Esto incluye las APIs de IA y aprendizaje automático, como la API Cloud Vision, la API Speech-to-Text, la API AutoML Natural Language y la API Cloud Translation, entre muchas otras.
Tareas en segundo plano
Puedes programar el código para que se ejecute más tarde o inmediatamente después de devolver una solicitud web. Cloud Run funciona bien con Cloud Tasks para ofrecer una ejecución asíncrona escalable y fiable.

Consulta la sección Conectarse a Google Cloud servicios para ver una lista de los muchos Google Cloud servicios que funcionan bien con Cloud Run.

El código debe empaquetarse en una imagen de contenedor

Para que tu servicio, trabajo o grupo de trabajadores se pueda desplegar en Cloud Run, debes empaquetarlo en una imagen de contenedor. Si no conoces los contenedores, aquí tienes una breve introducción conceptual.

Crear imágenes de contenedor

Como se muestra en el diagrama, se usan el código fuente, los recursos y las dependencias de la biblioteca para crear la imagen del contenedor, que es un paquete con todo lo que necesita el servicio para ejecutarse. Esto incluye artefactos de compilación, recursos, paquetes del sistema y, opcionalmente, un tiempo de ejecución. Esto hace que una aplicación en contenedores sea inherentemente portátil, ya que se ejecuta en cualquier lugar donde se pueda ejecutar un contenedor. Entre los artefactos de compilación se incluyen los archivos binarios o de secuencias de comandos compilados, y entre los tiempos de ejecución se incluyen el tiempo de ejecución de JavaScript de Node.js o una máquina virtual Java (JVM).

Los profesionales avanzados valoran el hecho de que Cloud Run no imponga cargas adicionales a la hora de ejecutar su código: puedes ejecutar cualquier archivo binario en Cloud Run.

Si quieres más comodidad o delegar la contenedorización de tu aplicación en Google, Cloud Run se integra con los buildpacks de código abierto de Google Cloud para ofrecer un despliegue basado en la fuente.

Siguientes pasos