¿Qué es Cloud Run?

Cloud Run es una plataforma de procesamiento administrada que te permite ejecutar contenedores directamente sobre la infraestructura 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 Core, 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 en 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 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 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 trabajadores. 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 proporciona una descripción general de las opciones que ofrece cada tipo de recurso de Cloud Run.

Recurso Descripción
Servicio Responde a las solicitudes HTTP enviadas a un extremo único y estable, con instancias efímeras y sin estado que se ajustan automáticamente según una variedad de métricas clave. También responde a eventos y funciones.
Trabajo Controla las tareas paralelizadas que no se basan en solicitudes y que se ejecutan de forma manual o según un programa, y se completan.
Grupo de trabajadores Maneja cargas de trabajo que no se basan en solicitudes, como las cargas de trabajo basadas en extracciones (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 extremo HTTPS confiable. Tu responsabilidad es asegurarte de que tu código escuche en un puerto TCP y maneje las solicitudes HTTP.

En el siguiente diagrama, se muestra un servicio de Cloud Run que ejecuta varias instancias de contenedor para controlar las solicitudes web y los eventos del cliente a través de un extremo HTTPS.

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

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.app, y 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 del ajuste de escala.
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, que incluye 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 acceder a un servicio de Cloud Run desde Internet, o bien puedes restringir el acceso de las siguientes maneras:

Puedes entregar recursos 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 automáticamente para controlar todas las solicitudes entrantes o controlar el aumento del uso de CPU fuera de las solicitudes.

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. Luego, si no hay instancias activas cuando ingresa una solicitud, Cloud Run crea una instancia nueva. Esto aumenta el tiempo de respuesta de estas primeras solicitudes, según la rapidez con la que tu contenedor esté listo para manejar solicitudes.

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

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 Precios para obtener más información.

Puedes habilitar dos parámetros de configuración de facturación:

Basada en solicitudes
Si una instancia no procesa solicitudes, no se te cobrará. Pagas 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 la configuración de facturación para aprender cómo 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, integra con Cloud Storage o activa un sistema de archivos de red (NFS).

Cuándo usar los servicios de Cloud Run

Los servicios de Cloud Run son excelentes para el código que controla 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:

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

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.

Google Cloud integrations

Cloud Run se integra en el 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 automáticamente 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 las Google Cloud APIs.
Entrega continua
Si almacenas tu código fuente en GitHub, Bitbucket o Cloud Source Repositories, 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 a través del conector de Acceso a VPC sin servidores. Así es como tu servicio se puede conectar con máquinas virtuales de Compute Engine o productos basados en Compute Engine, como Google Kubernetes Engine o Memorystore.
APIs deGoogle Cloud
El código de tu servicio se autentica con transparencia con las APIs de Google Cloud . 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 AutoML Natural Language, la API de Cloud Translation y muchas más.
Tareas en segundo plano
Puedes programar el código para que se ejecute más tarde o inmediatamente después de mostrar una solicitud web. Cloud Run funciona bien con Cloud Tasks para proporcionar una ejecución asíncrona escalable y confiable.

Consulta Conéctate a Google Cloud servicios para obtener una lista de los numerosos 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 implementar en Cloud Run, debes empaquetarlo en una imagen de contenedor. En caso de que no esté familiarizado con los contenedores, aquí hay una breve introducción conceptual.

Compila imágenes de contenedores

Como se muestra en el diagrama, usas el código fuente, los recursos y las dependencias de la biblioteca para compilar la imagen de contenedor, que es un paquete con todo lo que tu servicio necesita para ejecutarse. Eso incluye artefactos de compilación, recursos, paquetes del sistema y, de forma opcional, un entorno de ejecución. Esto hace que una aplicación alojada en contenedores sea inherentemente portátil, es decir, se ejecuta en cualquier lugar donde se pueda ejecutar un contenedor. Los ejemplos de artefactos de compilación incluyen archivos binarios o archivos de secuencias de comandos compilados, y ejemplos de entornos de ejecución son el entorno 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 impone cargas adicionales en la ejecución de su código: puedes ejecutar cualquier objeto binario en Cloud Run.

Si quieres más comodidad o delegar la creación de contenedores de tu aplicación a Google, Cloud Run se integra con los paquetes de compilación de código abierto de Google Cloud para ofrecer una implementación basada en la fuente.

¿Qué sigue?