Skip to content
StackPractices
beginner Por Mathias Paulenko

GCP Básico: Servicios Core para Desarrolladores

Guía práctica de servicios core de Google Cloud Platform para desarrolladores: compute, storage, bases de datos, networking y data analytics con ejemplos hands-on.

Nota para desarrolladores hispanohablantes: Esta guía incluye ejemplos y convenciones de nomenclatura adaptadas a equipos que trabajan en español. Cuando existen diferencias significativas en terminología técnica entre el inglés y el español, se indican explícitamente para facilitar la comunicación en equipos multiculturales.

Overview

Google Cloud Platform (GCP) es conocido por su liderazgo en data analytics, AI/ML y Kubernetes. Construido sobre la misma infraestructura que potencia Google Search y YouTube, GCP ofrece a desarrolladores herramientas poderosas para compute, storage, bases de datos y big data. A continuación: los servicios core que necesitas para construir y desplegar aplicaciones en GCP.

When to Use

  • For alternatives, see AWS Basics — Core Services for Developers.

  • Necesitas servicios de data analytics y AI/ML líderes

  • Estás construyendo aplicaciones containerizadas o serverless

  • Quieres integración profunda con herramientas open-source (Kubernetes, TensorFlow, Apache Beam)

  • Tus workloads se benefician de la red global de Google y su modelo de pricing

Compute: GCE, GKE y Cloud Run

Compute Engine (GCE)

Virtual machines con sizing flexible y pricing (descuentos por uso sostenido, committed use discounts).

# Crear una instancia VM
gcloud compute instances create my-vm \
  --zone=us-central1-a \
  --machine-type=e2-medium \
  --image-family=ubuntu-2204-lts \
  --image-project=ubuntu-os-cloud \
  --boot-disk-size=20GB
Familia de MáquinaCaso de Uso
E2Propósito general optimizado en costo
N2/N2DBalance entre rendimiento y costo
C2/C2DWorkloads intensivos en compute
M1/M2Intensivos en memoria (ultramem)

Google Kubernetes Engine (GKE)

Kubernetes gestionado con modos autopilot y standard.

# Crear un cluster GKE
gcloud container clusters create my-cluster \
  --zone=us-central1-a \
  --num-nodes=3 \
  --enable-autoscaling \
  --min-nodes=1 \
  --max-nodes=10

# Desplegar una aplicación
kubectl create deployment hello-app --image=gcr.io/project/hello-app:v1
kubectl expose deployment hello-app --type=LoadBalancer --port=80

Cloud Run

Containers serverless: despliega cualquier aplicación containerizada sin gestionar servidores.

# Desplegar un container a Cloud Run
gcloud run deploy hello-service \
  --image=gcr.io/project/hello-app:v1 \
  --platform=managed \
  --region=us-central1 \
  --allow-unauthenticated

Cloud Run escala automáticamente a cero y maneja HTTPS termination.

Storage: Cloud Storage y Persistent Disks

Cloud Storage

Storage de objetos unificado con caching global de edge.

# Crear un bucket
gsutil mb -l us-central1 gs://my-app-bucket

# Subir un archivo
gsutil cp app.zip gs://my-app-bucket/builds/

# Hacer público (con precaución)
gsutil iam ch allUsers:objectViewer gs://my-app-bucket
ClaseCaso de UsoAlmacenamiento Mínimo
StandardAcceso frecuenteNinguno
NearlineAcceso mensual30 días
ColdlineAcceso trimestral90 días
ArchiveAcceso anual365 días

Persistent Disks

Block storage para Compute Engine y GKE.

# Crear y adjuntar un disco
gcloud compute disks create my-disk --size=100GB --type=pd-ssd --zone=us-central1-a
gcloud compute instances attach-disk my-vm --disk=my-disk --zone=us-central1-a
Tipo de DiscoIOPSThroughputCaso de Uso
pd-standard500120 MB/sBoot disks, bajo I/O
pd-balanced15,000240 MB/sPropósito general
pd-ssd30,000480 MB/sBases de datos, alto I/O
pd-extreme120,0002,200 MB/sSAP, HPC

Bases de Datos: Cloud SQL, Firestore y BigQuery

Cloud SQL

PostgreSQL, MySQL y SQL Server gestionados con backups automatizados y réplicas.

# Crear una instancia PostgreSQL
gcloud sql instances create mydb \
  --database-version=POSTGRES_15 \
  --tier=db-f1-micro \
  --region=us-central1 \
  --storage-size=10GB

gcloud sql databases create myapp --instance=mydb

Firestore

Base de datos NoSQL serverless con sync en tiempo real y SDKs mobile.

import { getFirestore, doc, setDoc } from 'firebase/firestore';

const db = getFirestore();
await setDoc(doc(db, 'users', 'user-1'), { name: 'Alice', email: 'alice@example.com' });

BigQuery

Data warehouse serverless para analytics a escala petabyte.

-- Query dataset público
SELECT
  name,
  SUM(number) AS total_births
FROM `bigquery-public-data.usa_names.usa_1910_2013`
WHERE gender = 'F'
GROUP BY name
ORDER BY total_births DESC
LIMIT 10;

Networking: VPC

Global Virtual Private Cloud con routing automático.

┌─────────────────────────────────────────────┐
│              Global VPC                       │
│  ┌─────────────┐    ┌─────────────────────┐ │
│  │  Subnet A   │    │     Subnet B        │ │
│  │  (us-east)  │    │     (europe-west)   │ │
│  │  ┌───────┐  │    │  ┌───────┐ ┌─────┐ │ │
│  │  │  VM   │  │    │  │  VM   │ │SQL  │ │ │
│  │  └───┬───┘  │    │  └───┬───┘ └──┬──┘ │ │
│  │      │      │    │      │        │    │ │
│  │  Cloud Load  │    │   Cloud NAT        │ │
│  │  Balancer    │    │   (egress only)    │ │
│  └──────────────┘    └────────────────────┘ │
└─────────────────────────────────────────────┘

Capacidades clave de networking:

  • Cloud Load Balancing: Global, anycast-based load balancing
  • Cloud CDN: Content delivery con 140+ edge locations
  • Cloud Armor: Protección DDoS y WAF
  • Private Service Connect: Acceso seguro a servicios gestionados

Seguridad: IAM y Cloud KMS

Identity and Access Management con políticas basadas en recursos.

bindings:
  - members:
      - serviceAccount:my-app@project.iam.gserviceaccount.com
    role: roles/storage.objectViewer
  - members:
      - serviceAccount:my-app@project.iam.gserviceaccount.com
    role: roles/cloudsql.client

Lo que funciona:

  • Usa service accounts, no credenciales de usuario
  • Habilita VPC Service Controls para prevención de exfiltración de datos
  • Usa Cloud KMS para key management y encryption
  • Habilita Cloud Audit Logs para todos los servicios

Errores Comunes

  • Usar VPC default sin segmentación. Crea networks custom con subnets por environment
  • Sobreaprovisionar Compute Engine. Usa recomendaciones de rightsizing
  • Ignorar costos de egress. Transferencia de datos entre regiones es cara
  • No usar Cloud NAT para instancias privadas. Instancias privadas necesitan internet outbound para updates
  • Guardar secrets en variables de entorno. Usa Secret Manager en su lugar

Troubleshooting

  • Pipeline fails silently: enable verbose logging and store pipeline artifacts between stages so you can inspect the exact state that failed.
  • Container crashes on startup: check that environment variables, secrets, and config files are mounted correctly. Read the first 50 lines of logs before scaling replicas.
  • Deployment rolls back repeatedly: verify health checks, resource limits, and startup probes. A failing readiness probe is a common cause of rolling restarts.
  • Slow CI builds: cache dependencies and docker layers. Split large test suites into parallel jobs to reduce wall-clock time.
  • Drift between environments: use infrastructure-as-code and immutable artifacts. Compare deployed versions with the declared source of truth before debugging behavior differences.

FAQ

¿Es GCP gratis?

GCP ofrece un Free Tier con 300 USD de crédito por 90 días y límites always-free en Compute Engine, Cloud Storage y BigQuery.

¿GCP vs AWS vs Azure?

  • GCP: Mejor para data analytics, AI/ML, Kubernetes, open-source
  • AWS: Servicios más amplios, ecosistema más grande
  • Azure: Mejor para integración Microsoft, cloud híbrido

¿Cómo despliego desde GitHub?

Usa Cloud Build triggers conectados a repositorios GitHub, o GitHub Actions con google-github-actions/setup-gcloud y google-github-actions/deploy-cloudrun.

Temas Avanzados

Escenario: Arquitectura Web en GCP

Sistema: App web escalable, multi-region
Requisitos: 99.95% disponibilidad, auto-scaling, DR

Arquitectura:
  Cloud Load Balancing -> Cloud Run (multi-region)
    Region 1: us-central1
    Region 2: europe-west1

  Cloud Run -> Cloud SQL (regional HA)
  Cloud Run -> Firestore (multi-region)
  Cloud Run -> Memorystore Redis
  Cloud Run -> Cloud Storage (assets)

Servicios clave:
  | Capa | Servicio | Configuracion |
  |------|----------|--------------|
  | DNS/Routing | Cloud Load Balancing | Global, HTTP(S) |
  | Compute | Cloud Run | 2 vCPU / 4GB, min 2 max 20 |
  | DB | Cloud SQL PostgreSQL | db-custom-4-15360, HA |
  | NoSQL | Firestore | multi-region nam-eur |
  | Cache | Memorystore Redis | Standard 1GB |
  | Storage | Cloud Storage | Standard + Nearline lifecycle |
  | Monitoring | Cloud Monitoring + Cloud Trace | |
  | Secrets | Secret Manager | |
  | CDN | Cloud CDN | Edge caches global |

Auto-scaling (Cloud Run):
  - Concurrencia: 80 requests por instancia
  - Min instances: 2 (warm), Max: 20
  - CPU > 70% -> scale out
  - Scale to zero en dev (ahorro de costos)

Disaster Recovery:
  | Componente | RPO | RTO | Estrategia |
  |------------|-----|-----|------------|
  | Cloud SQL | < 1min | < 1min | Regional HA (sync replica) |
  | Firestore | 0 | 0 | Multi-region |
  | Cloud Storage | 0 | 0 | Cross-region replication |
  | Cloud Run | 0 | < 30s | Multi-region LB failover |
  | Memorystore | < 1min | < 5min | Failover a replica |

Costos estimados (mensual):
  | Servicio | Costo |
  |----------|-------|
  | Cloud Run (8 instancias) | $800 |
  | Cloud SQL (4 vCPU HA) | $1,200 |
  | Firestore (1M reads/writes) | $200 |
  | Memorystore (1GB) | $150 |
  | Cloud Storage (1TB) | $25 |
  | Load Balancing + CDN | $200 |
  | Secret Manager | $30 |
  | Total | ~$2,600/mes |

Lecciones:
  - Cloud Run escala a cero: ideal para cargas variables
  - Cloud SQL HA da RPO < 1min con replica sincrona
  - Firestore multi-region elimina DR para NoSQL
  - Cloud CDN + Load Balancing es global y serverless
  - Secret Manager integra con Cloud Run via service account

Como elijo entre Cloud Run y GKE?

Usa Cloud Run para servicios stateless simples que no necesitan Kubernetes. Es serverless, escala a cero y cobra por uso. Usa GKE cuando necesitas control total: service mesh, Helm, operadores, workloads stateful, o multiples servicios con networking complejo. Cloud Run es mas simple y barato; GKE es mas flexible. Empieza con Cloud Run y migra a GKE si lo necesitas.

Errores Comunes en Producción

  • Tratar la guía como un checklist para completar una vez en lugar de una práctica por evolucionar.
  • Adoptar cada recomendación de golpe en lugar de comenzar con un cambio medido.
  • Saltar la evaluación de madurez e imponer prácticas avanzadas a un equipo no preparado.
  • No actualizar runbooks y expectativas de guardia al introducir nuevas prácticas.
  • Ignorar datos reales de incidentes al priorizar qué partes de la guía aplicar primero.
  • No asignar un responsable que revise decisiones trimestralmente.
  • Copiar ejemplos sin adaptarlos a las herramientas y restricciones reales del equipo.
  • Olvidar medir resultados antes de agregar la siguiente mejora.