Despliegue en Google Cloud
Cómo desplegué Data Dashboard en Google Cloud App Engine. Guía paso a paso basada en mi experiencia real.
Google Cloud: servicios relevantes
| Servicio | Tipo | Cuándo usarlo |
|---|---|---|
| App Engine | PaaS | Apps web simples, scaling automático |
| Cloud Functions | FaaS | Funciones serverless, eventos |
| Compute Engine | IaaS | Máquinas virtuales, control total |
| Cloud Run | Contenedores | Containers en serverless |
| Kubernetes Engine | CaaS | Orquestación de contenedores |
Elegí App Engine porque:
- No quiero gestionar servidores
- Scaling automático incluido
- Fácil deployment con
gcloud
1. Crear proyecto en Google Cloud Console
GUI (consola web)
- Ve a console.cloud.google.com
- Crea nuevo proyecto:
data-dashboard-mmoreno - Anota el Project ID
CLI (gcloud)
gcloud projects create data-dashboard-mmoreno --name="Data Dashboard"
gcloud config set project data-dashboard-mmoreno2. Habilitar App Engine
gcloud app create --region=us-central1Elegir región: afecta latencia. Para España,
europe-west1ous-central1si no hay opción europea.
3. Configurar app.yaml
# backend/app.yaml
runtime: python312
entrypoint: gunicorn -b :$PORT main:app
env_variables:
ENV: production
automatic_scaling:
min_instances: 1
max_instances: 10$PORT es Provided por App Engine—tu app debe escuchar en esa variable.
4. Desplegar
gcloud app deployTiempo típico: 2-5 minutos.
# Ver el estado
gcloud app describe
# Abrir en navegador
gcloud app browse5. Configurar variables de entorno
Desde CLI
gcloud app services set-env-vars DATA_API_KEY=tu-key --service=backendDesde GitHub Actions
- name: Deploy to Google Cloud
run: |
echo ${{ secrets.GCP_SA_KEY }} | base64 -d > key.json
gcloud auth activate-service-account --key-file=key.json
gcloud app deploySecrets en GitHub
- Ve a GitHub → Settings → Secrets and variables → Actions
- Añade
GCP_SA_KEYcon el contenido del service account key (base64 encoded)
# Crear service account
gcloud iam service-accounts create deployer --display-name="Deployer"
# Asignar rol
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:deployer@$PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/appengine.deployer"
# Crear key y codificar
gcloud iam service-accounts keys create key.json \
--iam-account=deployer@$PROJECT_ID.iam.gserviceaccount.com
base64 key.json | tr -d '\n' # Copiar este valor a GitHub SecretErrores comunes
"Permission denied" al deploy
gcloud auth login
gcloud auth configure-dockerRegion incorrecta
Error: The region us-central1 is not a valid region.Solución: verificar la región válida:
gcloud app regions listApp Engine vs Cloud Run vs Compute Engine
| Característica | App Engine | Cloud Run | Compute Engine |
|---|---|---|---|
| Servidores | Gestionados | Gestionados | Tú los gestionas |
| Scaling | Automático | Automático | Manual |
| Contenedores | No | Sí | No |
| Precio | Por instancia | Por request | Por hora |
Monitorización básica
# Ver logs
gcloud app logs read --service=default
# Logs en tiempo real
gcloud app logs tailDespués del deploy: Cloud Run
Si quieres container-based deployment (ej: FastAPI en Docker):
# Construir y empujar a Artifact Registry
gcloud builds submit --tag gcr.io/$PROJECT_ID/data-dashboard
# Desplegar
gcloud run deploy data-dashboard --image gcr.io/$PROJECT_ID/data-dashboard --platform managedLecciones aprendidas
App Engine Standard es más barato que Flexible para proyectos pequeños. Standard usa instancias pre-pagadas, Flexible es más flexible (valga la redundancia) pero más caro.
El scaling automático es impresionante: si tu app tiene mucho tráfico de golpe, App Engine crea instancias adicionales automáticamente. No tienes que preocuparte por capacidad.
Google Cloud tiene banyak productos: no intentes usar todo. Aprende App Engine primero, luego expande a Cloud Functions o Cloud Run si los necesitas.
Desplegar en Google Cloud me enseñó que la nube no es magia—son servidores gestionados. Entender qué servicio usar para qué caso es medio trabajo.
Más guías y proyectos en mmoreno.dev.