32. Gestión de configuración, ambientes y versiones

32.1 Introducción

A medida que un sistema de software evoluciona, aparecen múltiples archivos, versiones, ambientes, configuraciones, dependencias, datos, scripts y decisiones que deben mantenerse bajo control. Si no existe una gestión ordenada, el equipo puede perder trazabilidad, desplegar una versión incorrecta o no poder reconstruir el estado de un producto.

La gestión de configuración, ambientes y versiones ayuda a controlar qué cambia, cuándo cambia, quién lo cambia, dónde se ejecuta y qué versión del software está disponible en cada contexto.

32.2 ¿Qué es la gestión de configuración?

La gestión de configuración es el conjunto de prácticas que permite identificar, organizar, controlar y auditar los elementos que forman parte de un sistema de software. Su objetivo es que el producto pueda construirse, desplegarse, mantenerse y recuperarse de manera confiable.

No se limita al código fuente. También incluye configuraciones, documentación, scripts de base de datos, dependencias, archivos de despliegue, parámetros de ambiente, plantillas y otros artefactos necesarios para que el sistema funcione.

Idea central: gestionar la configuración significa saber con precisión qué elementos componen el sistema y cómo se relacionan con cada versión entregada.

32.3 Elementos de configuración

Un elemento de configuración es cualquier componente relevante que debe ser identificado, versionado o controlado para mantener la integridad del producto.

  • Código fuente de la aplicación.
  • Archivos de configuración.
  • Scripts de creación o migración de bases de datos.
  • Documentación técnica y funcional.
  • Dependencias externas y librerías utilizadas.
  • Plantillas, recursos estáticos e imágenes.
  • Configuraciones de servidores, contenedores o servicios.
  • Casos de prueba, datos de prueba y automatizaciones.

32.4 ¿Por qué es importante?

Sin control de configuración, el equipo puede enfrentar problemas difíciles de diagnosticar: una función funciona en una computadora pero falla en producción, una dependencia cambia sin aviso, un archivo se modifica sin registro o no se sabe qué versión está usando un cliente.

La gestión de configuración reduce incertidumbre y permite trabajar de forma más ordenada, especialmente cuando participan varias personas, existen varios ambientes o se entregan versiones frecuentes.

32.5 Control de versiones

El control de versiones permite registrar la evolución de los archivos del proyecto. Cada cambio puede asociarse a una fecha, una persona, una descripción y un conjunto concreto de modificaciones.

Herramientas como Git permiten recuperar versiones anteriores, comparar cambios, trabajar en ramas, integrar aportes de varias personas y mantener una historia del desarrollo.

32.6 Versiones del producto

Una versión del producto representa un estado identificable del sistema que puede ser probado, entregado, desplegado o mantenido. Nombrar correctamente las versiones facilita la comunicación entre desarrollo, pruebas, soporte, operaciones, clientes y usuarios.

Por ejemplo, decir "se corrigió en la versión 2.4.1" es más claro que decir "se corrigió en la última versión", porque la palabra "última" cambia con el tiempo y puede generar confusión.

32.7 Tipos de versionado

Tipo Descripción Ejemplo
Secuencial Usa números simples y consecutivos. Versión 1, versión 2, versión 3.
Por fecha Identifica la entrega con una fecha. 2026.05.18.
Semántico Diferencia cambios mayores, menores y correcciones. 2.4.1.
Por compilación Asocia la versión a un número de construcción o integración. Build 1847.

32.8 Ambientes de software

Un ambiente es un contexto donde el sistema se ejecuta con determinada configuración, datos, servicios y propósito. Separar ambientes permite desarrollar, probar y operar sin mezclar trabajos en curso con sistemas usados por usuarios reales.

Ambiente Propósito
Desarrollo Construir y probar cambios de manera local o interna.
Pruebas Verificar funcionalidades, correcciones e integraciones.
Homologación Validar una versión antes de pasarla a producción.
Producción Ejecutar el sistema usado por usuarios reales.

32.9 Configuración por ambiente

Una misma aplicación puede necesitar valores distintos según el ambiente: direcciones de servicios, credenciales, bases de datos, niveles de registro, límites, claves, rutas de archivos o parámetros de integración.

Es importante separar la configuración del código. De esa manera, el mismo código puede ejecutarse en distintos ambientes sin modificar archivos fuente para cada caso.

32.10 Dependencias

Las dependencias son bibliotecas, frameworks, servicios o componentes externos que el sistema necesita para funcionar. Deben controlarse porque un cambio en una dependencia puede afectar seguridad, rendimiento, compatibilidad o comportamiento.

  • Registrar qué dependencias se usan y en qué versión.
  • Evitar actualizaciones no controladas en ambientes críticos.
  • Revisar vulnerabilidades conocidas.
  • Probar el sistema después de actualizar componentes.
  • Eliminar dependencias que ya no se utilizan.

32.11 Gestión de cambios

La gestión de cambios permite evaluar, aprobar, construir, probar y desplegar modificaciones de manera controlada. No todo cambio tiene el mismo impacto: corregir un texto no tiene el mismo riesgo que modificar una regla de facturación o una estructura de base de datos.

Un proceso de cambio debe dejar claro qué se solicita, por qué, qué componentes afecta, cómo se probará, cuándo se entregará y cómo se revertirá si aparece un problema.

32.12 Líneas base

Una línea base es un estado aprobado y controlado de un conjunto de artefactos. Sirve como punto de referencia para continuar el trabajo, realizar pruebas, entregar una versión o comparar cambios posteriores.

Por ejemplo, una versión homologada puede convertirse en línea base para producción. A partir de allí, cualquier modificación debería estar registrada y controlada.

32.13 Trazabilidad de versiones

La trazabilidad permite relacionar una versión con los cambios que contiene, los requerimientos que implementa, los defectos que corrige, las pruebas realizadas y los ambientes donde fue desplegada.

Esta información es valiosa para soporte, auditoría, diagnóstico de problemas y planificación de nuevas entregas.

32.14 Construcción y despliegue repetibles

Una construcción repetible permite generar el mismo resultado a partir del mismo código, configuración y dependencias. Un despliegue repetible permite instalar o actualizar el sistema de manera previsible.

Automatizar pasos reduce errores manuales, mejora la velocidad de entrega y permite reconstruir una versión con mayor confianza.

32.15 Configuración sensible

Algunas configuraciones contienen información sensible, como contraseñas, claves de API, tokens, certificados o datos de conexión. Estos valores no deben quedar expuestos en repositorios públicos, mensajes de error, registros innecesarios o documentación visible para personas no autorizadas.

La protección de configuraciones sensibles forma parte de la seguridad del software y debe gestionarse con mecanismos adecuados de acceso, almacenamiento y rotación.

32.16 Ejemplo práctico

Supongamos un sistema de turnos médicos. Para gestionarlo correctamente, el equipo necesita saber qué versión está en producción, qué versión se está probando, qué base de datos usa cada ambiente y qué cambios incluye cada entrega.

  • La versión 1.3.0 agrega recordatorios por correo electrónico.
  • La versión 1.3.1 corrige un error en la cancelación de turnos.
  • El ambiente de pruebas usa datos ficticios.
  • El ambiente de producción usa credenciales protegidas y datos reales.
  • Los scripts de base de datos se ejecutan en orden y quedan versionados.
  • Cada despliegue registra fecha, responsable, versión y resultado.

32.17 Errores comunes

  • No saber qué versión está ejecutándose en producción.
  • Modificar configuraciones directamente sin registro.
  • Mezclar datos reales con ambientes de prueba sin control.
  • Guardar credenciales en archivos visibles del repositorio.
  • Actualizar dependencias sin probar el impacto.
  • No poder reconstruir una versión entregada anteriormente.
  • Desplegar cambios manualmente sin procedimiento claro.

32.18 Buenas prácticas

  • Versionar código, documentación técnica y scripts relevantes.
  • Identificar claramente cada versión entregada.
  • Separar configuraciones por ambiente.
  • Proteger configuraciones sensibles y credenciales.
  • Automatizar construcciones, pruebas y despliegues cuando sea posible.
  • Registrar cambios, responsables, fecha y motivo.
  • Mantener trazabilidad entre requerimientos, cambios, pruebas y versiones.

32.19 Qué debes recordar

  • La gestión de configuración permite controlar los elementos que forman el sistema.
  • El control de versiones registra la evolución del producto y facilita la colaboración.
  • Los ambientes separan desarrollo, prueba, validación y uso real.
  • Las configuraciones deben administrarse sin mezclarse con el código sensible.
  • Una versión debe poder identificarse, reconstruirse, probarse y desplegarse con confianza.

32.20 Conclusión

La gestión de configuración, ambientes y versiones aporta orden y trazabilidad al desarrollo de software. Permite saber qué se entregó, cómo se construyó, dónde se ejecuta y qué cambios contiene cada versión.

En el próximo tema veremos estimación, riesgos y seguimiento del proyecto, aspectos esenciales para planificar el trabajo, anticipar problemas y tomar decisiones informadas durante el desarrollo.

Volver al índice