Curso
Corre por las nubes: Guía para desplegar aplicaciones en contenedores en GCP
Cloud Run es la plataforma de servidores totalmente gestionada de Google Cloudless que te permite desplegar aplicaciones sin preocuparte de la gestión de la infraestructura. Es superflexible, y una gran elección para una gran variedad de proyectos, desde aficiones hasta empresas.
En este artículo, te explicaré qué es Cloud Run, cómo funciona, qué casos de uso puede resolver y cómo se compara con otras soluciones sin servidor. ¡También te mostraré paso a paso cómo desplegar tu primera aplicación Cloud Run!
Yantes de empezar Si eres completamente nuevo en la computación en nube, te recomendaría que siguieras nuestro curso Introducción a la computación en nube. Este curso desglosa los conceptos básicos de la nube, explica términos clave como escalabilidad y latencia, y cubre las ventajas de las herramientas en la nube de proveedores como GCP.
¿Qué es Cloud Run?
Cloud Run es una plataforma de ejecución de contenedores sin servidor que te permite desplegar aplicaciones sin preocuparte de la gestión de la infraestructura.
Con las implantaciones tradicionales basadas en servidores, normalmente tienes que aprovisionar y mantener máquinas virtuales. Cloud Run funciona de forma ligeramente distinta, y abstrae todo eso para ofrecer un entorno totalmente gestionado.
Está construido sobre Knative (unaplataforma de código abierto basada en Kubernetes que permite una carga de trabajo sin servidor), lo que significa que tu aplicación escala automáticamente en función de la demanda. Cuando aumenta el tráfico, Cloud Run pone en marcha más instancias para gestionarlo. Cuando disminuye el tráfico, se reduce. Incluso puede llegar a cero, para que no pagues nada cuando tu aplicación no esté funcionando activamente.
La ejecución en la nube es rentable, pero también es superflexible. Puedes desplegar aplicaciones escritas en cualquier lenguaje y utilizar cualquier framework o binario, siempre que se ejecute en un contenedor. Puedes trabajar con tecnologías comunes como Node.js, Python, Go, Java, o con otras más oscuras. En la práctica, eso significa que Cloud Run puede alimentar servicios backend, API, cargas de trabajo de IA, aplicaciones web e incluso trabajos por lotes programados.
Eso fue por el adelanto. Profundicemos un poco más en las características clave de Cloud Run.
Características principales de Cloud Run
Sólo hemos mencionado un par, pero aquí tienes un resumen completo de las principales características de Cloud Run.
Lenguaje y marco agnósticos
Una de las mayores ventajas de Cloud Run es que no te encierra en un lenguaje o marco específico. Siempre que tu aplicación se ejecute en un contenedor, puedes desplegarla. Si eres un equipo que trabaja con una pila tecnológica diversa, puedes utilizar Cloud Run en todos tus servicios. ¡Una herramienta para gobernarlos a todos!
Escalado automático
Cloud Run escala horizontal y dinámicamente en función del tráfico. Si tu aplicación recibe más peticiones, Cloud Run pone en marcha automáticamente más instancias. Cuando baja la demanda, se reduce, hasta cero si es necesario.
Seguridad y conformidad incorporadas
Cloud Run viene con HTTPS automático para todos los servicios desplegados, identidad de servicio gestionada por google para una autenticación segura, conectividad VPC para redes privadas y certificaciones de cumplimiento integradas como SOC 2, ISO 27001 e HIPAA (para aplicaciones sanitarias). Básicamente, estás en buenas manos.
Integración con los servicios de Google Cloud
Como Cloud Run forma parte del ecosistema de Google Cloud, funciona bien con otros servicios de GCP. Puedes conectarlo fácilmente a Cloud SQL para bases de datos, transmitir datos con Pub/Sub, almacenar archivos en Cloud Storage o utilizarlo con BigQuery, Firebase y servicios AI/ML.
Soporte GPU a la carta
Para las cargas de trabajo de IA, Cloud Run ofrece ahora soporte de GPU bajo demanda. Esto supone una gran mejora para la inferencia del aprendizaje automático, el procesamiento de vídeo y la computación científica, porque te permite ejecutar cualquier carga de trabajo acelerada por GPU sin tener que gestionar el hardware que hay detrás.
Funciones de Ejecución en la Nube: Un modelo de Función como Servicio (FaaS)
Si no quieres gestionar contenedores completos, Cloud Run Functions proporciona una forma simplificada, basada en eventos, de ejecutar pequeñas funciones de un solo propósito. Es similar a AWS Lambda o Google Cloud Functions, pero se ejecuta en la infraestructura de Cloud Run.
Cómo funciona Cloud Run: Paso a paso
En esta sección, te explicaré cómo desplegar una aplicación sencilla en Cloud Run. Te guiaré a través del proceso de contenerizar tu aplicación, desplegarla en Cloud Run y escalarla automáticamente en función de la demanda.
Utilizaremos Docker para contenerizar nuestra aplicación, pero no tienes por qué hacerlo necesariamente. Más sobre esto al final.
Paso 1: Configura tu entorno
Antes de desplegar nada, necesitas tener instaladas las siguientes herramientas:
- Google Cloud SDK: Se trata de una interfaz de línea de comandos (CLI) comque te permite interactuar con los servicios de Google Cloud, incluido Cloud Run. Puedes instalarlo desde aquí.
- Docker: Si tu aplicación no está ya en contenedores, necesitarás Docker para empaquetar tu aplicación. Instala Docker desde aquí.
- Proyecto Google Cloud: Asegúrate de que tienes configurado un proyecto de Google Cloud. Puedes crear uno desde la Consola de Google Cloud.
Paso 2: Escribe el código de tu aplicación
Ahora, vamos a escribir una sencilla aplicación Node.js "Hola Mundo".
Crea un directorio para tu aplicación:
mkdir hello-world-app
cd hello-world-app
Crea un archivo index.js dentro del directorio con el siguiente contenido:
const http = require('http');
const requestListener = (req, res) => {
res.writeHead(200);
res.end('Hello, Cloud Run!');
};
const server = http.createServer(requestListener);
server.listen(8080, () => {
console.log('Server is running on port 8080');
});
Crea un paquete.json para definir las dependencias de tu aplicación:
{
"name": "hello-world-app",
"version": "1.0.0",
"main": "index.js",
"dependencies": {}
}
Ahora que la aplicación está lista, procederemos a contenerizarla.
Paso 3: Containerizar la aplicación
Crea un Dockerfile para definir la imagen del contenedor
En el directorio de tu proyecto, crea un archivo llamado "Dockerfile" con el siguiente contenido:
# Use the official Node.js image as a base
FROM node:16-alpine
# Set the working directory inside the container
WORKDIR /usr/src/app
# Copy package.json and install dependencies (if any)
COPY package*.json ./
# Copy the rest of the application code
COPY . .
# Expose port 8080 for Cloud Run
EXPOSE 8080
# Start the app
CMD ["node", "index.js"]
Construye la imagen Docker
Ejecuta el siguiente comando para construir tu imagen Docker:
docker build -t gcr.io/your-project-id/hello-world-app .
Nota: Sustituye your-project-id por el ID de tu proyecto de Google Cloud.
Prueba la imagen localmente
Puedes probar tu contenedor Docker localmente ejecutando:
docker run -p 8080:8080 gcr.io/your-project-id/hello-world-app
Visita http://localhost:8080 en tu navegador para comprobar que la aplicación se está ejecutando.
Paso 4: Empuja la imagen al Registro de Artefactos de Google
Habilita el Registro de Artefactos para tu proyecto
Si aún no has activado el Registro de Artefactos, ejecuta el siguiente comando
gcloud services enable artifactregistry.googleapis.com
Nota: Tendrás que activar la facturación para completar este paso.
Crear un repositorio en el Registro de Artefactos
Crea un nuevo repositorio Docker en el Registro de Artefactos:
gcloud artifacts repositories create hello-world-repo \
--repository-format=docker \
--location=us-central1
Autentificar Docker en el Registro de Artefactos
Configura Docker para autenticarse con el Registro de Artefactos:
gcloud auth configure-docker us-central1-docker.pkg.dev
Etiqueta la imagen Docker para el Registro de Artefactos
Etiqueta tu imagen Docker con la URL del repositorio del Registro de Artefactos:
docker tag gcr.io/your-project-id/hello-world-app us-central1-docker.pkg.dev/your-project-id/hello-world-repo/hello-world-app
Empuja la imagen al Registro de Artefactos
Empuja la imagen Docker etiquetada a tu repositorio del Registro de Artefactos:
docker push us-central1-docker.pkg.dev/your-project-id/hello-world-repo/hello-world-app
Paso 5: Desplegar en la nube Ejecutar
Una vez que tu imagen haya sido enviada a Registro de artefactospuedes desplegarla en Ejecución en la nube directamente desde el Registro de Artefactos.
Despliega tu imagen en Cloud Run utilizando el siguiente comando:
gcloud run deploy hello-world-app \
--image us-central1-docker.pkg.dev/your-project-id/hello-world-repo/hello-world-app \
--platform managed \
--region us-central1 \
--allow-unauthenticated
- hola-mundo-app: Este es el nombre de tu servicio Cloud Run.
- us-central1-docker.pkg.dev/your-project-id/hello-world-repo/hello-world-app: La URL de tu imagen almacenada en el Registro de Artefactos.
- --plataforma gestionada: Garantiza que el despliegue utiliza la plataforma totalmente gestionada de Cloud Run (no un clúster GKE).
- --region us-central1: Especifica la región en la que Cloud Run debe desplegar el servicio.
- --allow-unauthenticated: Esto permite el acceso público al servicio. Si necesitas un acceso restringido, puedes ajustar esta bandera en consecuencia.
Tras ejecutar este comando, Cloud Run desplegará tu aplicación en contenedores y te proporcionará una URL para acceder a ella.
¡Y ya está! Echa un vistazo en la consola de GCP, deberías ver tu nueva instancia.
Paso 6: Limpiar
Para evitar cargos continuos, asegúrate de eliminar el servicio una vez que hayas terminado las pruebas.
1. Eliminar el servicio Cloud Run
Ejecuta el siguiente comando para eliminar tu servicio Cloud Run desplegado:
gcloud run services delete hello-world-app --region us-central1
Esto elimina la instancia de Cloud Run, pero no borra la imagen del contenedor.
2. Eliminar la imagen del Registro de Artefactos
Para eliminar la imagen del Registro de Artefactosprimero haz una lista de las imágenes:
gcloud artifacts docker images list us-central1-docker.pkg.dev/your-project-id/hello-world-repo
Después, borra la imagen con:
gcloud artifacts docker images delete us-central1-docker.pkg.dev/your-project-id/hello-world-repo/hello-world-app --delete-tags
Ahora tu Registro de Artefactos también está limpio.
3. Elimina el repositorio del Registro de Artefactos (si ya no lo necesitas)
Si quieres eliminar completamente el repositorio del Registro de Artefactos, ejecuta
gcloud artifacts repositories delete hello-world-repo --location=us-central1
Este paso sólo es necesario si has terminado por completo con el repositorio, de lo contrario, puedes reutilizarlo para futuras implantaciones.
4. (Opcional) Elimina el proyecto de Google Cloud
Si se trataba de un proyecto de prueba y ya no lo necesitas, puedes borrar todo el proyecto para eliminar todos los recursos asociados:
gcloud projects delete your-project-id
Despliegues en origen
¿Recuerdas cuando dije que no siempre tienes que contenerizar tu aplicación manualmente?
Cloud Run ahora admite despliegues de código fuente, lo que significa que puede construir el contenedor por ti a partir de tu código fuente, utilizando Cloud Build.
Puedes utilizar el comando
gcloud run deploy hello-world-app \
--source . \
--region us-central1 \
--allow-unauthenticated
Cloud Build detecta automáticamente el lenguaje de tu aplicación (Node.js, Python, Go, Java, etc.), construye una imagen de contenedor por ti y la almacena en Artifact Registry. Cloud Run despliega entonces la imagen creada como si hubieras creado manualmente un contenedor. Definitivamente, recomendaría utilizarlo para aplicaciones sencillas con lenguajes compatibles (Node.js, Python, Go, Java, etc.), pero no si necesitas un control total sobre el contenedor (por ejemplo, dependencias personalizadas, ajustes a nivel de sistema operativo, compilaciones en varios pasos).
Consejos para utilizar Cloud Run de forma eficiente
Vale, desplegar una aplicación en Cloud Run es bastante fácil, pero conseguir que funcione eficazmente requiere un poco de ajuste. Pasé por una fase de prueba y error cuando empecé a utilizarlo, y esto es lo que he aprendido:
1. Los arranques en frío son reales
Sobre todo si trabajas con una imagen de contenedor grande. Cuanto más pequeña sea tu imagen, más rápido girará tu servicio. Utilizar una imagen base mínima como distroless puede suponer una gran diferencia. Si estás construyendo aplicaciones Python, intenta utilizar slim versiones de imágenes oficiales. O si no te preocupan demasiado los costes, fija tu número mínimo de instancia en 1.
2. La mejor variable con la que jugar es la cantidad de concurrencia de solicitudes
Cloud Run permite que cada instancia gestione varias peticiones simultáneamente, pero el valor por defecto (80 peticiones por contenedor) no suele ser la cantidad óptima. Para las tareas que requieren mucha CPU, he descubierto que reducir la concurrencia a 1 ó 2 hace las cosas mucho más fluidas. Por otro lado, las API suelen poder manejar un número mayor. Cuanto mayor sea el número, más podrás reducir el número de instancias que necesitas y, por tanto, menos pagarás, así que merece la pena experimentar con distintos valores para encontrar el punto óptimo para tu aplicación.
3. ¡Establece los límites de tu instancia!
Súper útil cuando alguien (yo) decide hacer alguna prueba de carga e inicia un número tonto de peticiones. Yo aprendí esa lección para que tú no tengas que hacerlo. Establece tu número máximo de instancias.
4. Asegúrate de permitir el acceso a tu instancia a las personas adecuadas
Por defecto, cualquierapuede acceder a los servicios de Cloud Run con la URL, lo que está muy bien para demostraciones rápidas, pero no tanto para producción. Si tu aplicación no está destinada a ser pública, bloquéala con permisos IAM.
5. Cloud Logging y Cloud Trace se convertirán en tus mejores amigos
Si, como yo, tiendes a depurar los problemas accediendo por SSH a las máquinas virtuales, te sentirás decepcionado. Los registros de Cloud Run se transmiten directamente al panel de control de Google Cloud, para que puedas verlo todo allí. Asegúrate de añadir un registro estructurado a tu aplicación, te facilitará mucho la resolución de problemas.
Casos de uso de Cloud Run
Hemos hablado de algunos casos de uso de Cloud Run, como la ejecución de aplicaciones web, APIs o cron jobs, pero obviamente hay muchos más.
Análisis de vídeo e imágenes
Puedes desplegar un modelo de reconocimiento de imágenes para procesar imágenes subidas en tiempo real para una plataforma de medios sociales, o ejecutar tareas de transcodificación de vídeo cuando se sube un vídeo. Cloud Run puede gestionar picos de demanda (como el contenido viral) con su escalado automatizado, al tiempo que garantiza la rentabilidad cuando la demanda es baja.
Fuente: Google Cloud
Procesamiento de flujos en tiempo real
Imagina que estás construyendo un sistema que controla el comportamiento de los usuarios en un mercado online. Al procesar flujos de eventos desde Pub/Sub o BigQuery, puedes desencadenar instantáneamente acciones basadas en la actividad del usuario, como enviar notificaciones push o analizar tendencias en tiempo real. Cloud Run se amplía automáticamente para gestionar los eventos entrantes durante los periodos punta y se reduce cuando disminuye el volumen de flujos.
Fuente: Google Cloud
Procesamiento de archivos en tiempo real
Un caso de uso podría ser el análisis de archivos de registro en tiempo real para una gran empresa. Cada vez que se sube un archivo de registro al Almacenamiento en la Nube, Cloud Run puede activar un contenedor para que analice el archivo, ejecute el análisis y almacene los resultados, todo ello escalando dinámicamente en función del tamaño del archivo y de la complejidad de la tarea de procesamiento.
Fuente: Google Cloud
Backends IoT sin servidor
Cloud Run es ideal para gestionar los servicios backend de las aplicaciones IoT. Por ejemplo, en una solución IoT que rastrea datos medioambientales de miles de sensores, Cloud Run puede procesar los datos entrantes de cada dispositivo en tiempo real.
Fuente: Google Cloud
Precios de Google Cloud Run
Cloud Run sigue un modelo de pago por uso, lo que significa que sólo pagas por los recursos informáticos utilizados mientras tu aplicación se ejecuta activamente. Cuando tu aplicación no está atendiendo peticiones, puede reducirse a cero, lo que significa que no pagas costes innecesarios.
Desglose de precios
A partir de marzo de 2025, Cloud Run cobra en función de dos factores principales:
Recursos | Coste | Nivel gratuito |
---|---|---|
CPU | 0,000018 $ por vCPU-segundo | 240.000 vCPU-segundos/mes |
Memoria | 0,000002 $ por GiB-segundo | 450.000 GiB-segundos/mes |
Esta tarificación es para la facturación basada en instancias, pero funciona de forma diferente para la facturación basada en solicitudes. El precio anterior y el nivel gratuito también son ligeramente diferentes según la región en la que te encuentres, así que consulta la página oficial de Google Cloud para conocer las cifras exactas. Tienen una calculadora de precios para ayudarte a calcular los costes, y también ofrecen descuentos por uso comprometido.
Un pequeño consejo: El tráfico con otros servicios de Google Cloud en la misma región es gratuito, así que intenta utilizar Cloud Storage, Cloud SQL o Pub/Sub en lugar de servicios externos para el intercambio de datos.
Cloud Run vs. Funciones de ejecución en la nube
Google ofrece dos opciones de computación sin servidor: Cloud Run y Cloud Run Functions (antes Cloud Functions). Ambos te permiten ejecutar código sin gestionar la infraestructura, pero son ligeramente diferentes.
Función | Carrera en las nubes | Funciones en la nube |
---|---|---|
Modelo de ejecución | Ejecuta aplicaciones completas en contenedores | Ejecuta funciones individuales (modelo FaaS) |
Control de tiempo de ejecución | Cualquier lenguaje, cualquier framework, binarios personalizados | Tiempos de ejecución predefinidos (Node.js, Python, Go, etc.) |
Estado | Sin estado, pero puede mantener conexiones dentro de una solicitud | Sin estado, diseñado para cargas de trabajo basadas en eventos |
Escalado | Escala por instancia de contenedor | Escalas por invocación de función |
Activar | Peticiones HTTP, Pub/Sub, basadas en eventos | Basado en eventos (Pub/Sub, Almacenamiento en la nube, HTTP, etc.) |
Arranques en frío | Mínimo con instancias precalentadas | Puede tener retrasos notables en el escalado |
Lo mejor para | API, microservicios, servicios backend, cargas de trabajo de IA | Funciones ligeras, basadas en eventos, automatización |
Cuándo utilizar Cloud Run
- ✅ Necesitas un control total sobre el tiempo de ejecución y las dependencias.
- ✅ Estás ejecutando un servicio web, API o microservicio que gestiona peticiones persistentes.
- ✅ Quieres desplegar una aplicación existente en contenedores con una modificación mínima.
- ✅ Necesitas procesamiento en segundo plano o tareas de larga duración (como inferencia de IA, trabajos por lotes).
Cuándo utilizar las funciones de ejecución en la nube
- ✅ Quieres funciones sencillas, basadas en eventos, que se activen con eventos como mensajes Pub/Sub o subidas al Almacenamiento en la Nube.
- ✅ Manejas operaciones de corta duración, como enviar notificaciones, procesar pequeños trabajos o transformar datos.
- ✅ No quieres gestionar contenedores y prefieres tiempos de ejecución predefinidos para JavaScript, Python, Go, etc.
Sin embargo, no tienes por qué elegir, ¡puedes utilizar ambos a la vez! Por ejemplo, tu backend Cloud Run podría activar Funciones Cloud Run para tareas específicas como enviar correos electrónicos o procesar imágenes de forma asíncrona.
Comparaciones con otros servicios en la nube de Google
Hemos comparado Cloud Run y Cloud Run Functions bastante a fondo, pero puede que haya un par de servicios más de Google Cloud que merezca la pena mencionar aquí: GKE y App Engine.
Función | Carrera en las nubes | Motor Google Kubernetes (GKE) | Motor de aplicaciones |
---|---|---|---|
Tipo de gestión | Totalmente gestionado sin servidor | Clústeres Kubernetes autogestionados | Plataforma como servicio totalmente gestionada |
Escalado | Escala automática, hasta cero | Escalado manual o autoescalado mediante Kubernetes | Escala automática (pero no hasta cero) |
Despliegue | Despliega contenedores (en cualquier idioma) | Despliega contenedores a través de Kubernetes | Despliega código (admite tiempos de ejecución específicos) |
Casos prácticos | APIs, microservicios, aplicaciones web, trabajos por lotes, IA | Aplicaciones complejas, microservicios a gran escala, cargas de trabajo ML | Aplicaciones web, backends móviles, API |
Lenguas admitidas | Cualquiera (basado en contenedores) | Cualquiera (basado en contenedores) | Tiempos de ejecución específicos compatibles |
Evidentemente hay más matices, pero en resumen: Si necesitas una solución en contenedores totalmente gestionada, con escalado automático y flexibilidad, opta por Cloud Run. Si quieres crear una aplicación web con una configuración mínima, opta por App Engine. Y si quieres un control total sobre tus clusters Kubernetes para aplicaciones complejas a gran escala, elige GKE.
Conclusión
Ahora que lo sabes todo sobre Cloud Run, prueba a lanzar tu primera instancia o echa un vistazo a otros Servicios en la Nube de Google para encontrar el nivel de control y automatización más adecuado para ti.
Preguntas frecuentes sobre Cloud Run
¿Cómo manejo las conexiones a bases de datos en Cloud Run?
Puedes utilizar el proxy de autenticación de SQL en la nube, activar la agrupación de conexiones (por ejemplo, PgBouncer para PostgreSQL) o utilizar bases de datos sin servidor como Firestore para evitar los límites de conexión.
¿Puedo utilizar un dominio personalizado con Cloud Run?
Sí. Configúralo en la consola Cloud Run en Gestionar dominios personalizados, verifica la propiedad y actualiza los registros DNS. SSL se proporciona automáticamente.
¿Admite Cloud Run WebSockets y conexiones de larga duración?
Sí, pero las instancias pueden apagarse si están inactivas. Para mantener las conexiones, establece instancias mínimas o utiliza Pub/Sub para la comunicación basada en eventos.
¿Puede Cloud Run gestionar trabajos en segundo plano?
No directamente, ya que se basa en peticiones. Utiliza Tareas en la Nube, Pub/Sub o Flujos de Trabajo para activar y gestionar el procesamiento en segundo plano.
¿Puedo ejecutar aplicaciones con estado en Cloud Run?
No se recomienda, ya que las instancias no tienen estado. Utiliza Cloud Storage, Firestore o una base de datos externa para persistir el estado.
Ingeniero superior de software, redactor técnico y asesor con formación en física. Comprometidos a ayudar a las startups en fase inicial a alcanzar su potencial y a hacer que los conceptos complejos sean accesibles a todo el mundo.
Aprende Cloud con DataCamp
Curso
Data Warehousing Concepts
Curso
Introduction to GCP
blog
AWS Certified Cloud Practitioner: guía completa

Srujana Maddula
13 min
blog
Los 13 mejores proyectos de AWS: De principiante a profesional
Tutorial
Cuentas de almacenamiento Azure: Tutorial paso a paso para principiantes

Anneleen Rummens
11 min
Tutorial
Base de datos Azure SQL: Configuración y gestión paso a paso

Anneleen Rummens
12 min

Tutorial
Cómo instalar y configurar MySQL en Docker
Tutorial