Saltar al contenido principal

Especificaciones por Ambiente

Esta guía define las configuraciones recomendadas para instancias de Cloud SQL según el ambiente de despliegue (Dev, QA, Prod).


Resumen de Configuración

ParámetroDevQAProd
vCPU224+
RAM8 GB8 GB16+ GB
Storage10 GB20 GB50+ GB
Auto-increase
Alta DisponibilidadOpcionalRegionalRegional (Obligatoria)
IP Pública✅ (whitelist)
IP Privada
Backups Automáticos✅ (7 días)✅ (7 días)✅ (30 días)
PITROpcional

Desarrollo (Dev)

Propósito

Ambiente para desarrollo y pruebas locales. Prioriza accesibilidad y bajo costo sobre alta disponibilidad.

Configuración

gcloud sql instances create myapp-usersdb-dev \
--database-version=POSTGRES_17 \
--edition=ENTERPRISE \
--cpu=2 \
--memory=8GB \
--region=us-central1 \
--availability-type=ZONAL \
--storage-size=10 \
--storage-auto-increase \
--root-password=$(gcloud secrets versions access latest --secret=SUPERADMIN_PASSWORD) \
--network=projects/$PROJECT_ID/global/networks/$VPC_NAME \
--assign-ip \
--authorized-networks="$DEV_IP_1/32,$DEV_IP_2/32"

Características

CaracterísticaConfiguración
DisponibilidadZonal (sin failover)
IP PúblicaHabilitada con whitelist de IPs de desarrolladores
IP PrivadaHabilitada
BackupsAutomáticos, retención 7 días
PITROpcional

Conectividad

Los desarrolladores pueden conectarse directamente desde sus máquinas locales usando la IP pública.

# Conexión directa
psql -h 34.x.x.x -U developer@company.com -d myapp_users_dev
Seguridad

Solo agregar IPs estáticas conocidas al whitelist. Revisar y limpiar IPs no utilizadas regularmente.


Calidad / UAT (QA)

Propósito

Ambiente para pruebas de integración, QA y validación de usuario. Simula la configuración de producción pero con menor escala.

Configuración

gcloud sql instances create myapp-usersdb-qa \
--database-version=POSTGRES_17 \
--edition=ENTERPRISE \
--cpu=2 \
--memory=8GB \
--region=us-central1 \
--availability-type=REGIONAL \
--storage-size=20 \
--storage-auto-increase \
--root-password=$(gcloud secrets versions access latest --secret=SUPERADMIN_PASSWORD) \
--network=projects/$PROJECT_ID/global/networks/$VPC_NAME \
--no-assign-ip

Características

CaracterísticaConfiguración
DisponibilidadRegional (con failover automático)
IP PúblicaDeshabilitada
IP PrivadaHabilitada (única forma de conexión)
BackupsAutomáticos, retención 7 días
PITRHabilitado

Conectividad

Solo accesible desde dentro de la VPC (Cloud Run, GKE, VMs en la misma red).

# Conexión desde Cloud Shell o VM en la VPC
psql -h 10.x.x.x -U cloudrun_user -d myapp_users_qa

Producción (Prod)

Propósito

Ambiente de producción con máxima disponibilidad, seguridad y capacidad de recuperación.

Configuración

gcloud sql instances create myapp-usersdb-prod \
--database-version=POSTGRES_17 \
--edition=ENTERPRISE \
--cpu=4 \
--memory=16GB \
--region=us-central1 \
--availability-type=REGIONAL \
--storage-size=50 \
--storage-auto-increase \
--root-password=$(gcloud secrets versions access latest --secret=SUPERADMIN_PASSWORD) \
--network=projects/$PROJECT_ID/global/networks/$VPC_NAME \
--no-assign-ip

Características

CaracterísticaConfiguración
DisponibilidadRegional (con failover automático) - Obligatoria
IP PúblicaDeshabilitada - Prohibida
IP PrivadaHabilitada (única forma de conexión)
BackupsAutomáticos, retención 30 días
PITRHabilitado (recuperación a cualquier punto)

Conectividad

Ningún acceso directo permitido. Solo los servicios de Cloud Run con la identidad de servicio correcta pueden conectarse.

# Conexión desde Cloud Run usando Cloud SQL Connector
from google.cloud.sql.connector import Connector

connector = Connector()

def get_connection():
return connector.connect(
"project:region:myapp-usersdb-prod",
"pg8000",
user="cloudrun_user",
password=os.getenv("DB_PASSWORD"),
db="myapp_users_prod"
)

Backups y Recuperación

Configuración por Ambiente

AmbienteRetenciónPITRBackup On-demand
Dev7 díasOpcionalAntes de cambios mayores
QA7 díasAntes de tests destructivos
Prod30 díasSí (Obligatorio)Antes de deploys

Point-in-Time Recovery (PITR)

PITR permite recuperar la base de datos a cualquier momento dentro del período de retención de transaction logs.

# Restaurar a un momento específico
gcloud sql instances restore-backup myapp-usersdb-prod \
--restore-time="2024-01-15T10:30:00Z"

Monitoreo y Alertas

Métricas Recomendadas

MétricaUmbral WarningUmbral Critical
CPU Utilization> 70% por 5 min> 90% por 5 min
Memory Utilization> 80% por 5 min> 95% por 5 min
Disk Usage> 80%> 90%
Connections> 80% del max> 95% del max
Replication Lag (HA)> 10 segundos> 60 segundos

Configurar Alertas

gcloud monitoring alerting-policies create \
--display-name="DB CPU High" \
--condition="metric.type=\"cloudsql.googleapis.com/database/cpu/utilization\" > 0.9"

Checklist de Creación por Ambiente

Dev

  • Alta disponibilidad opcional (para reducir costos).
  • IP pública habilitada con whitelist actualizado.
  • Backups automáticos configurados.
  • Secretos en Secret Manager.

QA

  • Alta disponibilidad regional habilitada.
  • IP pública deshabilitada.
  • PITR habilitado.
  • Datos de prueba cargados.

Prod

  • Alta disponibilidad regional obligatoria.
  • IP pública prohibida.
  • PITR obligatorio.
  • Alertas de monitoreo configuradas.
  • Backup on-demand antes del primer deploy.

Temas Relacionados