SCREAMING_SNAKE_CASE: la convención POSIX
En shells Unix, las variables de entorno se nombran en mayúsculas con underscore por
convención desde los años 70. PATH, HOME, USER.
Mantener esa convención asegura compatibilidad con cualquier lenguaje, framework y
herramienta de orquestación.
El factor III de 12-factor
El manifiesto 12-factor define que la configuración debe vivir en variables de entorno, no en archivos hardcodeados. Esto separa código de config y permite el mismo binario correr en dev, staging y prod cambiando solo las variables.
Estructura recomendada
<APP>_<ÁREA>_<PROPÓSITO>. Ejemplos:
APP_DB_URL, APP_REDIS_HOST, APP_AWS_REGION,
APP_MAIL_SMTP_HOST. El prefijo evita colisiones; el área agrupa
visualmente; el propósito identifica.
Variables convencionales
- NODE_ENV: development, production, test (Node).
- DATABASE_URL: cadena de conexión completa.
- PORT: puerto a escuchar (PaaS lo setea).
- LOG_LEVEL: debug, info, warn, error.
- TZ: zona horaria (default UTC).
- HTTP_PROXY, HTTPS_PROXY: proxies salientes.
Booleanos en strings
Las env vars son siempre strings. Para booleanos, la convención es "true" /
"false" o "1" / "0". Nunca compares con
== true en JavaScript: el string "false" es truthy. Usá
funciones como parseBool(env.FEATURE_FLAG).
Secrets vs config
Los secrets (passwords, API keys, tokens) no deberían vivir en archivos
.env commiteables. Usá .env.local (gitignored) en dev y un
secret manager (Vault, AWS Secrets Manager, GCP Secret Manager) en prod. La rotación
debería ser parte del proceso operativo.
Validación al boot
Tu app debería fallar rápido si falta una variable crítica. Librerías como
envalid (Node), pydantic-settings (Python),
dotenv-rb + validators (Ruby) chequean tipos y presencia al iniciar. Mejor
un crash claro que un null pointer en el primer request.
Variables específicas por entorno
Mantené la lista de variables idéntica entre entornos; cambiá los valores. Si
APP_FEATURE_BETA existe en prod pero no en staging, agregalo aunque sea con
false. Esto previene comportamiento divergente entre ambientes.