Cloud Run es una plataforma de aplicaciones completamente administrada para ejecutar tu código, función o contenedor sobre la infraestructura altamente escalable de Google.
Puedes implementar código escrito en cualquier lenguaje de programación en Cloud Run si puedes compilar una imagen de contenedor a partir de él. De hecho, la compilación de imágenes de contenedor es opcional. Si usas Go, Node.js, Python, Java, .NET, Ruby o un framework compatible, puedes usar la opción de implementación basada en la fuente que compila el contenedor por ti, con las prácticas recomendadas para el lenguaje que usas.
Google creó Cloud Run para que funcione bien junto con otros servicios de Google Cloud Google Cloud, de modo que puedas compilar aplicaciones con todas las funciones.
En resumen, Cloud Run permite a los desarrolladores dedicar su tiempo a escribir su código y muy poco tiempo a operar, configurar y escalar el servicio de Cloud Run. No es necesario crear un clúster ni administrar la infraestructura para ser productivo con Cloud Run.
Servicios, trabajos, grupos de trabajadores y instancias: cuatro formas de ejecutar tu código
En Cloud Run, tu código se puede ejecutar como un servicio, trabajo, grupo de trabajadores o instancia. Todos estos tipos de recursos ejecutan instancias de contenedores en zona de pruebas en el mismo entorno de ejecución y se pueden integrar con Google Cloud los servicios.
En la siguiente tabla, se proporciona una descripció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 extremo único y estable, mediante instancias de contenedores sin estado que admiten el ajuste de escala automático dinámico y el ajuste de escala manual, y también responde a eventos y funciones. |
| Trabajo | Ejecuta tareas paralelizables que se ejecutan de forma manual o según un programa, y se ejecutan hasta completarse. |
| Grupo de trabajadores | Controla las cargas de trabajo en segundo plano siempre activas, como las cargas de trabajo de colas de mensajes (Kafka, Pub/Sub, RabbitMQ). |
| Instancia | Ejecuta cargas de trabajo de larga duración que necesitan un entorno de ejecución singleton. |
Servicios de Cloud Run
Un servicio de Cloud Run proporciona la infraestructura que necesitas para ejecutar un extremo HTTPS confiable. Para usar este servicio, debes asegurarte de que tu código escuche en un puerto TCP y controle las solicitudes HTTP entrantes.
En el siguiente diagrama, se muestra cómo un servicio de Cloud Run ejecuta varias instancias de contenedores para procesar solicitudes web y eventos de un cliente:
Un servicio estándar incluye las siguientes funciones:
- Extremo HTTPS único para cada servicio
- Cada servicio de Cloud Run tiene un extremo HTTPS en un subdominio único del dominio
*.run.appy también puedes configurar dominios personalizados. Cloud Run administra TLS por ti y admite WebSockets, HTTP/2 (de extremo a extremo) y gRPC (de extremo a extremo). - Rápido ajuste de escala automático basado en solicitudes
- Cloud Run escala horizontalmente con rapidez para controlar todas las solicitudes entrantes o manejar un mayor uso de CPU fuera de las solicitudes si el parámetro de configuración de facturación se establece en facturación basada en instancias. Un servicio puede escalar horizontalmente con rapidez hasta mil instancias o incluso más si solicitas un aumento de la cuota. Si la demanda disminuye, Cloud Run quita los contenedores inactivos. Si te preocupan los costos o la sobrecarga de los sistemas descendentes, puedes limitar la cantidad máxima de instancias.
- Ajuste de escala manual opcional
- De forma predeterminada, Cloud Run se ajusta automáticamente a más instancias para controlar más tráfico, pero puedes anular este comportamiento con el ajuste de escala manual para controlar el comportamiento de escalamiento.
- Administración de tráfico integrada
Para reducir el riesgo de implementar una revisión nueva, Cloud Run admite la realización de un lanzamiento gradual, incluido el enrutamiento del tráfico entrante a la revisión más reciente, la reversión a una revisión anterior y la división del tráfico a varias revisiones al mismo tiempo.
Por ejemplo, puedes comenzar con el envío del 1% de las solicitudes a una revisión nueva y aumentar ese porcentaje mientras supervisas la telemetría.
- Servicios públicos y privados
Se puede llegar a un servicio de Cloud Run desde Internet, o puedes restringir el acceso de las siguientes maneras:
- Especifica una política de acceso con Cloud Identity and Access Management (IAM).
- Usa la configuración de entrada para restringir el acceso a la red. Esto es útil si deseas permitir solo el tráfico interno de la VPC y los servicios internos.
- Solo permite usuarios autenticados con Identity-Aware Proxy (IAP).
Puedes entregar elementos que se pueden almacenar en caché desde una ubicación perimetral más cercana a los clientes si priorizas un servicio de Cloud Run con una red de distribución de contenidos (CDN), como Firebase Hosting y Cloud CDN.
Reduce la escala a cero y un mínimo de instancias
De forma predeterminada, si la facturación se establece en facturación basada en instancias, Cloud Run agrega y quita instancias de forma automática para controlar todas las solicitudes entrantes o controlar el aumento del uso de CPU fuera de las solicitudes.
Reducción de escala a cero
Si no hay solicitudes entrantes en tu servicio, se quitará la última instancia restante. Por lo general, este comportamiento se conoce como reducción de escala a cero.
Cuando llega una solicitud nueva para un servicio sin instancias activas, Cloud Run crea una instancia nueva. Este proceso puede aumentar el tiempo de respuesta de estas solicitudes iniciales, según la rapidez con la que tu contenedor esté listo para controlar el tráfico.
Cambia el comportamiento de escalamiento
Puedes modificar este comportamiento predeterminado con uno de los siguientes métodos:
- Instancias mínimas: Configura Cloud Run para mantener una cantidad mínima de instancias activas de modo que tu servicio no escale a cero.
- Escalamiento manual: Usa el escalamiento manual para mantener más control sobre el comportamiento de escalamiento de tu servicio.
Precios de pago por uso para los servicios
La reducción de escala a cero es atractiva por razones económicas, ya que se te cobran por la CPU y la memoria asignadas a una instancia con un nivel de detalle de 100 ms. Si no configuras un mínimo de instancias, no se te cobrará si tu servicio no se usa. Hay un nivel gratuito amplio. Consulta los precios para obtener más información.
Existen dos parámetros de configuración de facturación que puedes habilitar:
- Basada en solicitudes
- Si una instancia no procesa solicitudes, no se te cobrará. Debes pagar una tarifa por solicitud.
- Basada en instancias
- Se te cobra por la vida útil completa de una instancia. No hay tarifa por solicitud.
Hay un nivel gratuito amplio. Consulta los precios para obtener más información y los parámetros de configuración de facturación para aprender a habilitar la facturación basada en solicitudes o en instancias para tu servicio.
Un sistema de archivos de contenedores desechable
Las instancias en Cloud Run son desechables. Cada contenedor tiene una superposición en el sistema de archivos en la que se puede escribir, que no es persistente si el contenedor se cierra. Cloud Run determina cuándo dejar de enviar solicitudes a una instancia y cerrarla, por ejemplo, cuando reduce la escala.
Para recibir una advertencia cuando Cloud Run está a punto de cerrar una instancia, tu aplicación puede capturar el indicador SIGTERM. Esto permite que tu código limpie los búferes locales y conserve los datos locales en un almacén de datos externo.
Para conservar archivos de forma permanente, puedes integrar a Cloud Storage o activar un sistema de archivos de red (NFS).
Cuándo usar los servicios de Cloud Run
Los servicios de Cloud Run son excelentes para los códigos que controlan solicitudes, eventos o funciones. Como ejemplo, se incluyen los siguientes casos prácticos:
- Sitios y aplicaciones web
- Compila tu aplicación web con tu pila favorita, accede a tu base de datos de SQL y renderiza páginas HTML dinámicas.
- API y microservicios
- Puedes compilar una API de REST, una API de GraphQL o microservicios privados que se comuniquen a través de HTTP o gRPC.
- Procesamiento de datos de transmisión
- Los servicios de Cloud Run pueden recibir mensajes de suscripciones de envío 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 bucket 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.
Trabajos de Cloud Run
Si tu código realiza trabajos y, luego, se detiene, por ejemplo, con una secuencia de comandos, puedes usar un trabajo de Cloud Run para ejecutar tu código. Puedes ejecutar un trabajo desde la línea de comandos con Google Cloud CLI, programar un trabajo recurrente, o ejecutarlo como parte de un flujo de trabajo.
Los trabajos de arrays son una forma más rápida de ejecutar trabajos
Un trabajo puede iniciar una sola instancia para ejecutar tu código; esa es una forma común de ejecutar una secuencia de comandos o una herramienta.
Sin embargo, también puedes usar un trabajo de array, que inicia muchas instancias independientes idénticas en paralelo. Los trabajos de arrays 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:
Por ejemplo, si cambias el tamaño y recortas 1,000 imágenes desde Cloud Storage, su procesamiento consecutivo es más lento que en paralelo con muchas instancias, que Cloud Run administra con el ajuste de escala automático.
Cuándo usar trabajos de Cloud Run
Los trabajos de Cloud Run son adecuados para ejecutar código que realiza trabajo (un trabajo) y se cierra cuando este se completa. Estos son algunos ejemplos:
- Secuencia de comandos o herramienta
- Ejecutar una secuencia de comandos para realizar migraciones de bases de datos o realizar otras tareas operativas
- Trabajo de arrays
- Realizar un procesamiento altamente paralelo de todos los archivos en un bucket de Cloud Storage
- Trabajo programado
- Crea y envía facturas a intervalos regulares o guarda los resultados de una consulta de base de datos en formato 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.
Grupos de trabajadores de Cloud Run
Los grupos de trabajadores están diseñados para cargas de trabajo que no dependen del control de solicitudes HTTP. Proporcionan un grupo flexible y escalable de recursos de procesamiento adaptados para el procesamiento continuo, que no es HTTP y se basa en extracción en segundo plano. Las siguientes características clave definen cómo operan los grupos de trabajadores:
Los grupos de trabajadores no se ajustan automáticamente. Ajusta manualmente la cantidad de instancias que requiere tu grupo de trabajadores de Cloud Run para controlar su carga de trabajo. Para iniciar y permanecer activa, tu carga de trabajo debe tener al menos una instancia. Si estableces las instancias mínimas en
0, la instancia de trabajador no se iniciará, incluso si la implementación es exitosa.Para ajustar las instancias de forma dinámica según la demanda en tiempo real, crea tu propio ajuste de escala automático. Para obtener un ejemplo, consulta Ajusta automáticamente tus cargas de trabajo de consumidor de Kafka workloads.
Los grupos de trabajadores administran los lanzamientos dividiendo las instancias entre las revisiones, en lugar de dividir el tráfico. Por ejemplo, para un grupo de trabajadores con cuatro instancias, puedes asignar el 25% (una instancia) a una revisión nueva y el 75% (tres instancias) a una revisión estable.
Los grupos de trabajadores admiten la entrada y salida de VPC directa, y no tienen un extremo ni una URL con balanceo de cargas. Para obtener más información sobre la compatibilidad con el servidor de metadatos (MDS) y la recuperación de las direcciones IP privadas de la instancia de tu grupo de trabajadores, consulta el Contrato del entorno de ejecución de contenedores.
Cloud Run solo te cobra por la duración de la ejecución de las instancias de tu grupo de trabajadores.
Cuándo usar grupos de trabajadores de Cloud Run
Los grupos de trabajadores no requieren extremos HTTP públicos. Esto hace que tu red sea más segura y simplifica el código de tu aplicación. Tampoco necesitas administrar puertos para las verificaciones de estado. Los siguientes casos de uso se aplican a los grupos de trabajadores:
Cargas de trabajo basadas en extracción: Implementa una carga de trabajo para extraer mensajes de una cola para su control. Por ejemplo, consumidor de Kafka, extracción de Pub/Sub y RabbitMQ.
En el siguiente diagrama, se muestran casos de uso para implementar grupos de trabajadores para cargas de trabajo basadas en extracción:

En un caso de uso de Pub/Sub, un suscriptor de Cloud Run con ajuste de escala automático extrae mensajes de una suscripción a Pub/Sub. En un caso de uso de Kafka, un consumidor de Cloud Run con ajuste de escala automático extrae mensajes de un tema de Kafka.
Cargas de trabajo genéricas que no son de solicitud: Ejecuta una carga de trabajo basada en contenedores que no está diseñada para controlar solicitudes entrantes.
Instancias de Cloud Run
Una instancia de Cloud Run está diseñada para cargas de trabajo que requieren un entorno de ejecución singleton estable, continuo y direccionable de forma individual, en lugar de un ajuste de escala horizontal controlado por solicitudes.
A diferencia de un servicio, que puede tener varias instancias de contenedores y configurarse para el ajuste de escala automático o manual, una instancia de Cloud Run es solo una instancia.
Una instancia de Cloud Run incluye las siguientes características:
- Administrable de forma individual: Puedes crear, actualizar y borrar cada instancia de forma individual, iniciar y detener la instancia, y supervisar las ejecuciones.
- Direccionable de forma individual: A cada instancia se le asigna una URL única.
- De larga duración: La instancia puede ejecutarse sin interrupciones durante horas o días, o incluso más si está configurada para reiniciarse automáticamente después de las actualizaciones periódicas de la infraestructura (cada 1 o 2 semanas).
- Creación rápida: La instancia se aprovisiona y se ejecuta en aproximadamente 20 segundos o menos.
Cuándo usar instancias de Cloud Run
Las instancias de Cloud Run están diseñadas para cargas de trabajo de procesamiento singleton persistentes diseñadas para ejecutar cargas de trabajo de agentes y flujos de trabajo que no son de IA. Como ejemplo, se incluyen los siguientes casos prácticos:
- Agentes de IA y motores de flujo de trabajo de IA de larga duración
- Compila agentes en segundo plano de larga duración que ejecuten planes de ejecución de varios pasos, ejecuten asistentes de codificación asíncronos o administren flujos de trabajo con estado que requieran un entorno de una sola instancia.
- Procesamiento sin servidores de larga duración
- Implementa servidores ligeros y siempre activos, similares a un servidor privado virtual (VPS) que se ejecutan de forma continua. Esto es ideal si deseas cargas de trabajo que no requieran ajuste de escala automático ni controlen el tráfico a gran escala web, y deseas priorizar un costo más bajo y una longevidad singleton por sobre la alta disponibilidad.
- Entornos de desarrolladores y bucles de depuración
- Implementa entornos dedicados para depurar procesos de contenedores de forma remota, sincronizar cambios de código y solucionar problemas de fallas sin la finalización automática del contenedor.
Google Cloud integraciones
Cloud Run se integra al ecosistema más amplio de Google Cloud, lo que te permite compilar aplicaciones con todas las funciones.
Las integraciones esenciales incluyen las siguientes:
- Almacenamiento de datos
- Cloud Run se integra a Cloud SQL (MySQL administrado, PostgreSQL y SQL Server), Memorystore (Redis y Memcached administrados), Firestore, Spanner, Cloud Storage y más. Consulta Almacenamiento de datos para obtener una lista completa.
- Logging y Error Reporting
- Cloud Logging transfiere de forma automática los registros de contenedor. Si hay excepciones en los registros, Error Reporting las agrega y, luego, te notifica. Se admiten los siguientes lenguajes: Go, Java, Node.js, PHP, Python, Ruby y .NET.
- Identidad del servicio
- Cada revisión de Cloud Run está vinculada a una cuenta de servicio, y las Google Cloud bibliotecas cliente usan esta cuenta de servicio con transparencia para autenticarse con Google Cloud las APIs.
- Entrega continua
- Si almacenas tu código fuente en GitHub, puedes configurar Cloud Run para implementar confirmaciones nuevas de forma automática.
- Herramientas de redes privadas
- Las instancias de Cloud Run pueden alcanzar recursos en la red de nube privada virtual (VPC) a través delconector de Acceso a VPC sin servidores. Así es como tu servicio se puede conectar con máquinas virtuales o productos de Compute Engine basados en Compute Engine, como Google Kubernetes Engine o Memorystore.
- Google Cloud API de
- El código de tu servicio se autentica con transparencia con Google Cloud las APIs. Esto incluye las APIs de IA y aprendizaje automático, como la API de Cloud Vision, la API de Speech-to-Text, la API de Natural Language de AutoML, la API de Cloud Translation y muchas más.
- Tareas en segundo plano
- Puedes programar el código para que se ejecute de forma posterior o inmediata después de mostrar una solicitud web. Cloud Run funciona bien con Cloud Tasks a fin de proporcionar una ejecución asíncrona escalable y confiable.
Consulta Conéctate a los Google Cloud servicios para obtener una lista de los muchos Google Cloud servicios que funcionan bien con Cloud Run.
El código se ejecuta en una imagen de contenedor
Si bien no es necesario estar familiarizado con los contenedores para implementar tu código en Cloud Run, tu código siempre termina ejecutándose en instancias de contenedores en zona de pruebas.
En caso de que no esté familiarizado con los contenedores, aquí hay una breve introducción conceptual.
Como se muestra en el diagrama, usas código fuente, recursos y dependencias de bibliotecas para compilar una imagen de contenedor. Esta imagen es un paquete que contiene todo lo que tu servicio necesita para ejecutarse, incluidos artefactos de compilación, recursos, paquetes del sistema y, de manera opcional, un entorno de ejecución. Las aplicaciones alojadas en contenedores son inherentemente portátiles y se ejecutan en cualquier lugar donde se pueda ejecutar un contenedor. Los artefactos de compilación incluyen archivos binarios o archivos de secuencias de comandos compilados, y los entornos de ejecución incluyen el entorno de ejecución de JavaScript de Node.js o una máquina virtual Java.
Los profesionales avanzados valoran el hecho de que Cloud Run no impone cargas adicionales en la ejecución de código, y puedes ejecutar cualquier objeto binario en Cloud Run.
Si deseas más comodidad o delegar la creación de contenedores de aplicaciones a Google, Cloud Run se integra con los paquetes de código abierto de Google Cloud's buildpacks para ofrecer una implementación basada en la fuente.
¿Qué sigue?
- Implementa un servicio de Cloud Run
- Crea y ejecuta un trabajo de Cloud Run
- Obtén más información para ejecutar trabajos según un programa
- Implementa un grupo de trabajadores
- Implementa una instancia de Cloud Run
- Explora el modelo de recursos
- Obtén más información sobre el contrato del entorno de ejecución de contenedores