Configuración de Entornos
Información General
INFORMACIÓN
Propósito: Esta sección documenta la configuración específica para cada entorno del sistema, incluyendo variables de entorno, parámetros de conexión y ajustes específicos.
Entornos Disponibles
Desarrollo (Development)
- URL: http://localhost:5173
- Propósito: Desarrollo local y pruebas unitarias
- Datos: Datos de prueba anonimizados
Variables de Entorno
bash
# Configuración de servidor
NODE_ENV=development
PORT=5173
HOST=localhost
# Base de datos
DB_HOST=localhost
DB_PORT=5432
DB_NAME=procesar_dev
DB_USER=dev_user
DB_PASSWORD=dev_password
# APIs externas
API_BASE_URL=http://localhost:3000/api
RENAPO_URL=http://172.21.66.90/ServiciosInternos/ServicioRenapo?wsdl
# Logging
LOG_LEVEL=debug
LOG_TO_CONSOLE=truePreproducción (Staging)
- URL: https://staging.procesar.com
- Propósito: Pruebas de aceptación y validación final
- Datos: Datos reales controlados
Variables de Entorno
bash
# Configuración de servidor
NODE_ENV=staging
PORT=3000
HOST=0.0.0.0
# Base de datos
DB_HOST=staging-db.procesar.com
DB_PORT=5432
DB_NAME=procesar_staging
DB_USER=staging_user
DB_PASSWORD=${STAGING_DB_PASSWORD}
# APIs externas
API_BASE_URL=https://staging-api.procesar.com
RENAPO_URL=http://172.21.62.1/ServiciosInternos/ServicioRenapo?wsdl
# Logging
LOG_LEVEL=info
LOG_TO_CONSOLE=false
LOG_TO_FILE=trueProducción (Production)
- URL: https://procesar.com
- Propósito: Ambiente para usuarios finales
- Datos: Datos reales
Variables de Entorno
bash
# Configuración de servidor
NODE_ENV=production
PORT=3000
HOST=0.0.0.0
# Base de datos
DB_HOST=prod-db.procesar.com
DB_PORT=5432
DB_NAME=procesar_prod
DB_USER=prod_user
DB_PASSWORD=${PROD_DB_PASSWORD}
# APIs externas
API_BASE_URL=https://api.procesar.com
RENAPO_URL=http://172.21.62.1/ServiciosInternos/ServicioRenapo?wsdl
# Logging
LOG_LEVEL=error
LOG_TO_CONSOLE=false
LOG_TO_FILE=trueConfiguración por Servicio
RENAPO - Consulta CURP
Desarrollo
javascript
const renapoConfig = {
development: {
url: 'http://172.21.66.90/ServiciosInternos/ServicioRenapo?wsdl',
timeout: 30000,
retries: 3,
logLevel: 'debug'
}
}Preproducción
javascript
const renapoConfig = {
staging: {
url: 'http://172.21.62.1/ServiciosInternos/ServicioRenapo?wsdl',
timeout: 20000,
retries: 2,
logLevel: 'info'
}
}Producción
javascript
const renapoConfig = {
production: {
url: 'http://172.21.62.1/ServiciosInternos/ServicioRenapo?wsdl',
timeout: 15000,
retries: 1,
logLevel: 'error'
}
}Portal Servicios Banamex
Desarrollo
javascript
const banamexConfig = {
development: {
baseUrl: 'http://172.21.62.1/portalserviciosint',
timeout: 30000,
retries: 3,
mockData: true
}
}Preproducción y Producción
javascript
const banamexConfig = {
staging: {
baseUrl: 'http://172.21.62.1/portalserviciosint',
timeout: 20000,
retries: 2,
mockData: false
},
production: {
baseUrl: 'http://172.21.62.1/portalserviciosint',
timeout: 15000,
retries: 1,
mockData: false
}
}Gestión de Secrets
Secrets Management
ADVERTENCIA
Principios de Seguridad
- Nunca almacenar secrets en código fuente
- Utilizar gestores de secrets especializados
- Rotar secrets periódicamente
- Aplicar principle of least privilege
Métodos Recomendados
Variables de Entorno
bashexport DATABASE_PASSWORD="secure_password"Archivos .env (solo para desarrollo)
bash# .env.development DATABASE_PASSWORD=dev_password API_KEY=dev_api_keyGestores de Secrets (producción)
- AWS Secrets Manager
- Azure Key Vault
- HashiCorp Vault
Configuración de CI/CD
GitHub Secrets
yaml
# .github/workflows/deploy.yml
env:
DATABASE_PASSWORD: ${{ secrets.DATABASE_PASSWORD }}
API_KEY: ${{ secrets.API_KEY }}Monitoreo y Logging
Configuración de Logging por Entorno
Desarrollo
javascript
const loggingConfig = {
development: {
level: 'debug',
format: 'dev',
colorize: true,
timestamp: true
}
}Staging
javascript
const loggingConfig = {
staging: {
level: 'info',
format: 'json',
colorize: false,
timestamp: true,
file: 'logs/staging.log'
}
}Producción
javascript
const loggingConfig = {
production: {
level: 'error',
format: 'json',
colorize: false,
timestamp: true,
file: 'logs/production.log',
maxSize: '10MB',
maxFiles: 5
}
}Métricas de Monitoreo
Métricas Básicas
- Tiempo de respuesta
- Tasa de errores
- Uso de CPU y memoria
- Requests por segundo
Métricas de Negocio
- Usuarios activos
- Procesos completados
- Tiempo de procesamiento
- Tasa de éxito
Validación de Configuración
Checklist de Validación
Antes de Despliegue
- [ ] Variables de entorno configuradas
- [ ] Conexión a base de datos verificada
- [ ] APIs externas accesibles
- [ ] Secrets cargados correctamente
- [ ] Logging funcionando
- [ ] Monitoreo configurado
Después de Despliegue
- [ ] Aplicación responde correctamente
- [ ] Logs generándose sin errores
- [ ] Métricas registrándose
- [ ] Conexiones a servicios estables
- [ ] Rendimiento dentro de límites aceptables
Troubleshooting
Problemas Comunes
Error: Conexión a Base de Datos
bash
# Verificar conexión
psql -h $DB_HOST -p $DB_PORT -U $DB_USER -d $DB_NAME
# Verificar credenciales
echo $DB_PASSWORDError: API No Responde
bash
# Verificar conectividad
curl -v $API_BASE_URL/health
# Verificar timeout
curl --connect-timeout 5 $API_BASE_URLError: Variable de Entorno Faltante
bash
# Listar variables de entorno
env | grep -E "(DB_|API_|LOG_)"
# Verificar archivo .env
cat .envBuenas Prácticas
Documentación
- Mantener documentación actualizada de configuraciones
- Documentar cambios en variables de entorno
- Mantener registro de cambios de configuración
Seguridad
- Usar nombres descriptivos para variables
- Evitar secrets en nombres de variables
- Implementar validación de configuración
Mantenimiento
- Revisar periódicamente configuraciones obsoletas
- Limpiar variables no utilizadas
- Actualizar documentación regularmente
CONSEJO
Consejo: Utiliza scripts de validación automática para verificar que todas las configuraciones necesarias estén presentes antes de cada despliegue.