Skip to content

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=true

Preproducción (Staging)

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=true

Producción (Production)

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=true

Configuració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

  1. Variables de Entorno

    bash
    export DATABASE_PASSWORD="secure_password"
  2. Archivos .env (solo para desarrollo)

    bash
    # .env.development
    DATABASE_PASSWORD=dev_password
    API_KEY=dev_api_key
  3. Gestores 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_PASSWORD

Error: API No Responde

bash
# Verificar conectividad
curl -v $API_BASE_URL/health

# Verificar timeout
curl --connect-timeout 5 $API_BASE_URL

Error: Variable de Entorno Faltante

bash
# Listar variables de entorno
env | grep -E "(DB_|API_|LOG_)"

# Verificar archivo .env
cat .env

Buenas 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.

Documentación de Procesos