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.
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 y trabajos
En Cloud Run, tu código puede ejecutarse como unservicio o un trabajo.
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, utilizando instancias de contenedores sin estado que se ajustan automáticamente según una variedad de métricas clave, y también responde a eventos y funciones. |
| Trabajo | Ejecuta tareas paralelizadas que se ejecutan de forma manual o según un programa, y se ejecutan hasta su finalización. |
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 maneje las solicitudes HTTP entrantes.
En el siguiente diagrama, se ilustra cómo un servicio de Cloud Run ejecuta varias instancias de contenedor 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
*.s3nsrun.fr, 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 realizar un lanzamiento gradual, lo que incluye enrutar el tráfico entrante a la revisión más reciente, revertir a una revisión anterior y dividir el 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:
- 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 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.
Reducción de escala a cero
Si no hay solicitudes entrantes en tu servicio, se quitará incluso 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.
Cómo cambiar el comportamiento del 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.
- Ajuste de escala manual: Usa el ajuste de escala manual para mantener un mayor control sobre el comportamiento del ajuste de escala 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.
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 vacíe 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.
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.
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.