beginner Por Mathias Paulenko

Plantilla de Configuracion de Entornos

Una plantilla para documentar variables de entorno, secretos, endpoints y configuraciones de infraestructura para cada entorno de despliegue.

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.

Descripcion General

Toda aplicacion se ejecuta en multiples entornos como desarrollo, staging y produccion. Cada entorno tiene su propia configuracion, endpoints, secretos y ajustes de infraestructura. Esta plantilla ayuda a los equipos a documentar esos ajustes en un solo lugar, facilitando la incorporacion, la depuracion y la recuperacion ante desastres.

Cuando Usar

  • For alternatives, see Blue-Green Deployment.

  • Configurar una nueva aplicacion o servicio.

  • Incorporar un nuevo miembro del equipo o contratista.

  • Preparar un plan de despliegue o migracion.

  • Solucionar errores especificos de un entorno.

  • Auditar la desviacion de configuracion entre entornos.

  • Crear un runbook para respuesta a incidentes.

Prerequisitos

  • Acceso a la plataforma de despliegue o consola cloud.
  • Lista de servicios, bases de datos e integraciones de terceros que usa la aplicacion.
  • Permiso para ver secretos y credenciales, o un proceso de entrega seguro.
  • Una convencion de nombres para variables de entorno y claves de configuracion.
  • Comprension de los requisitos de cumplimiento y seguridad para cada entorno.

Solucion

Plantilla

1. Identificacion del Entorno

CampoDescripcionEjemplo
Aplicacion / ServicioNombre del sistemaPayment API
Entornodev, staging, production, etc.production
Region / ZonaDespliegue geograficous-east-1
Cluster / InstanciaDonde corre la appprod-k8s-cluster-01
Version desplegadaRelease actualv2.4.1
DuenoEquipo responsableEquipo de pagos
Ultima revisionFecha de ultima actualizacion2026-06-27

2. Variables de Entorno Principales

VariablePropositoValor devValor stagingValor productionSecreto
APP_ENVEntorno de ejecuciondevelopmentstagingproductionNo
LOG_LEVELVerbosidad de logsdebuginfowarnNo
API_PORTPuerto donde escucha el servicio80808080443No
DATABASE_URLCadena de conexion a la base de datos principalpostgres://dev-dbpostgres://staging-dbpostgres://prod-dbSi
REDIS_URLCadena de conexion al cacheredis://dev-redisredis://staging-redisredis://prod-redisSi
JWT_SECRETSecreto para firma de tokensdev-secretstaging-secretprod-secretSi
EXTERNAL_API_KEYClave para integracion de tercerostest-keytest-keylive-keySi
FEATURE_FLAG_XInterruptor para nueva featuretruetruefalseNo

3. Endpoints de Servicios

ServicioEntornoURL / HostPuertoProtocoloNotas
Aplicacionproductionapi.payments.example.com443HTTPSDetras del load balancer
Base de datosproductionprod-db.internal.example.com5432PostgreSQLSubred privada
Cacheproductionprod-redis.internal.example.com6379RedisSubred privada
Cola de mensajesproductionprod-rabbit.internal.example.com5672AMQPSubred privada
Almacenamiento de objetosproductions3://prod-payments-data443HTTPSCifrado en reposo

4. Configuracion de Infraestructura

Recursodev/testproductionNotas
Computo1 contenedor pequeno4 contenedores grandesAuto-scaling en production
CPU / memoria0.5 vCPU / 1 GB2 vCPU / 4 GBPor contenedor
Base de datosInstancia compartida devCluster Multi-AZCon replicas de lectura en production
Cache1 nodo3 nodosModo cluster Redis
Cola de mensajes1 nodo3 nodosMisma configuracion
AlmacenamientoClase estandarTier de acceso infrecuentePolitica de ciclo de vida aplicada
RedPublica para herramientas devSubred privada + NATAcceso VPN requerido

5. Secretos y Credenciales

Nombre del SecretoUsado PorUbicacion de AlmacenamientoPrograma de RotacionUltima Rotacion
DATABASE_PASSWORDAplicacionAWS Secrets ManagerTrimestral2026-06-01
JWT_SECRETAplicacionHashiCorp VaultTrimestral2026-06-01
EXTERNAL_API_KEYServicio de integracionAzure Key VaultEn rotacion del proveedor2026-05-15
TLS_CERTIFICATELoad balancerAWS ACMAnual2026-04-20

6. Registro de Cambios de Configuracion

FechaCambioAutorRazonAprobado Por
2026-06-10Aumento del cluster de cache en produccionalice@example.comPreparar venta flashbob@example.com
2026-05-22Agregado FEATURE_FLAG_Xcarol@example.comDesplegar nuevo flujo de checkoutdave@example.com
2026-05-01Rotacion de credenciales de base de datosplatform-teamRotacion trimestralsecurity-team

Explicacion

Una unica fuente de verdad para la configuracion de entornos reduce la confusion y los errores. Cuando las variables, endpoints y secretos estan documentados, los equipos pueden desplegar mas rapido, depurar problemas entre entornos y recuperarse de incidentes sin adivinar. La plantilla tambien ayuda a identificar diferencias entre entornos, una fuente comun de errores en produccion.

Ejemplo de ConfigMap y Secret en Kubernetes

apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
  namespace: production
data:
  DATABASE_HOST: "db.production.svc.cluster.local"
  DATABASE_PORT: "5432"
  REDIS_URL: "redis://redis.production.svc.cluster.local:6379"
  LOG_LEVEL: "info"
  FEATURE_FLAGS: "checkout-v2,search-v3"
  API_RATE_LIMIT: "1000"
  CORS_ORIGINS: "https://app.example.com,https://admin.example.com"
---
apiVersion: v1
kind: Secret
metadata:
  name: app-secrets
  namespace: production
type: Opaque
stringData:
  DATABASE_PASSWORD: "rotated-2026-06"
  JWT_SECRET: "rotated-2026-06"
  STRIPE_API_KEY: "sk_live_..."
  SENTRY_DSN: "https://..."

Matriz de Comparacion de Entornos

VariableDesarrolloStagingProduccionNotas
DATABASE_HOSTlocalhostdb.staging.svcdb.prod.svcDiferente por entorno
DATABASE_PORT543254325432Igual
LOG_LEVELdebuginfowarnMas verbose en dev
API_RATE_LIMIT1005001000Escala con trafico
FEATURE_FLAGStodasselectivasconservadorasDev habilita todas
CORS_ORIGINS*staging.example.comapp.example.comRestringido en prod
REDIS_URLlocalhost:6379redis.staging:6379redis.prod:6379Diferente por entorno
SENTRY_DSNdeshabilitadoDSN stagingDSN prodTracking de errores

Plantilla de Calendario de Rotacion de Secretos

=== Calendario de Rotacion de Secretos ===

Credenciales de base de datos:
  - Frecuencia de rotacion: Trimestral
  - Responsable: Equipo de plataforma
  - Metodo: Auto-rotacion de AWS Secrets Manager
  - Ultima rotacion: 2026-06-01
  - Proxima rotacion: 2026-09-01

Clave de firma JWT:
  - Frecuencia de rotacion: Cada 6 meses
  - Responsable: Equipo de seguridad
  - Metodo: Manual con superposicion de doble clave
  - Ultima rotacion: 2026-04-15
  - Proxima rotacion: 2026-10-15

Stripe API key:
  - Frecuencia de rotacion: Anual
  - Responsable: Ingenieria de finanzas
  - Metodo: Manual via dashboard de Stripe
  - Ultima rotacion: 2026-01-10
  - Proxima rotacion: 2027-01-10

Sentry DSN:
  - Frecuencia de rotacion: Al salida de miembro del equipo
  - Responsable: Equipo SRE
  - Metodo: Manual via dashboard de Sentry

Variantes

  • Configuracion de entornos para microservicios: Un documento por servicio con referencias cruzadas a endpoints de otros servicios.
  • Configuracion de entornos con infraestructura como codigo: Enlaces a archivos de variables de Terraform o CloudFormation.
  • Configuracion de entornos para contenedores: Enfoque en Docker compose, Kubernetes ConfigMaps y Secrets.
  • Configuracion de entornos serverless: Documenta variables a nivel de funcion, ajustes de API Gateway y fuentes de eventos.
  • Configuracion de entornos para app movil: Documenta endpoints backend, API keys y feature flags por variante de build.
  • Configuracion de entornos para base de datos: Enfoque en cadenas de conexion, endpoints de replicas y ajustes de backup.

Lo que funciona

  • Manten los secretos fuera del control de versiones y almacenalos en un vault seguro.
  • Usa los mismos nombres de variables en todos los entornos cuando sea posible.
  • Documenta por que un valor difiere entre entornos.
  • Revisa y actualiza el documento despues de cada despliegue o cambio de infraestructura mayor.
  • Separa valores sensibles de la configuracion no sensible.
  • Automatiza la generacion de este documento desde infraestructura como codigo cuando sea posible.
  • Usa una convencion de nombres consistente para variables de entorno.
  • Incluye informacion de contacto del dueno del entorno.

Errores Comunes

  • Hard-codear valores especificos del entorno en el codigo fuente.
  • Almacenar secretos en texto plano o archivos sin cifrar.
  • No actualizar el documento despues de cambios de configuracion.
  • Usar nombres de variables diferentes para el mismo concepto en distintos entornos.
  • Mezclar configuracion de multiples entornos en un solo archivo.
  • Omitir la razon de las diferencias entre entornos.
  • No incluir endpoints o credenciales de servicios de terceros.

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.

Notas de Producción

  • Despliega gradualmente usando canary o blue-green para detectar regresiones temprano.
  • Configura alertas para errores, latencia p99 y tasa de fallos antes de habilitar en producción.
  • Documenta el rollback en el runbook; prueba el procedimiento en staging al menos una vez por trimestre.
  • Revisa logs estructurados con correlation IDs para trazar requests end-to-end en incidentes.

Puntos Clave

  • Aplica plantilla de configuracion de entornos cuando necesites una solución práctica para tu caso de uso.
  • Monitorea el rendimiento después de implementar; mide latencia, errores y uso de recursos antes y después.
  • Revisa la sección de Troubleshooting ante errores comunes; la mayoría tienen causa raíz documentada con solución.
  • Mantén dependencias actualizadas y ejecuta tests en CI para prevenir regresiones en producción.

Errores Comunes en Producción

  • Dejar campos requeridos vacíos o usar respuestas vagas de una palabra.
  • Llenar el documento una vez y nunca actualizarlo cuando cambia el alcance o las decisiones.
  • Guardar el documento donde el equipo no lo busque durante incidentes o revisiones.
  • No asignar un responsable, fecha límite o cadencia de revisión.
  • Copiar texto base sin eliminar secciones que no aplican.
  • Saltar el control de versiones, lo que impide rollback y responsabilidad.
  • No vincular el documento con decisiones relacionadas o acciones de seguimiento.
  • Evitar revisiones trimestrales que retirarían secciones obsoletas o sin uso.

Preguntas frecuentes

Debemos almacenar secretos en este documento?
No. Guarda los nombres de secretos y programas de rotacion aqui, pero manten los valores reales en un vault seguro. Este documento debe referenciar donde encontrar los secretos, no contenerlos.
Como mantenemos este documento actualizado?
Asigna un dueno y revisa el documento despues de cada despliegue, cambio de infraestructura o trimestralmente. Vinculalo al proceso de gestion de cambios.
Cual es la diferencia entre variables de entorno y archivos de configuracion?
Las variables de entorno se usan tipicamente para valores que cambian entre entornos o son sensibles. Los archivos de configuracion son mejores para ajustes estables y estructurados que pueden...
Como gestionamos la configuracion para multiples entornos sin duplicacion?
Usa un archivo de configuracion base con sobrescrituras especificas por entorno. Herramientas como Helm values files, Kustomize overlays o jerarquia dotenv (.env.base, .env.staging, .env.production)...
Que herramientas deberiamos usar para gestion de secretos?
HashiCorp Vault para self-hosted, AWS Secrets Manager o Parameter Store para AWS-nativo, Azure Key Vault para Azure, GCP Secret Manager para Google Cloud. Para Kubernetes, usa External Secrets...
Como manejamos la configuracion para feature flags?
Usa una herramienta dedicada de feature flags (LaunchDarkly, Unleash, Flagsmith) para flags dinamicos que cambian sin despliegue. Para flags estaticos vinculados a releases, usa variables de entorno...
Que es configuration drift y como lo prevenimos?
Configuration drift ocurre cuando el estado real de un entorno difiere de su estado documentado, usualmente por cambios manuales. Previenelo: haciendo todos los cambios a traves de IaC (Terraform,...
Como inicializamos un nuevo entorno?
1. Crea el entorno en IaC con todos los recursos requeridos. 2. Genera o importa secretos al vault. 3. Despliega infraestructura base (red, bases de datos, cache). 4. Ejecuta smoke tests contra todos...
Como gestionamos la configuracion para microservicios?
Cada microservicio debe tener su propio documento de configuracion. Usa un servicio de configuracion compartido (Spring Cloud Config, Consul KV, o AWS AppConfig) para gestion centralizada. Los...
Cual es la aproximacion 12-factor app para configuracion?
La metodologia 12-factor app recomienda almacenar configuracion en variables de entorno. Esto separa config de codigo, haciendo el mismo build desplegable entre entornos. Sin embargo, para...