¿Cómo evitar el "Es que en mi computadora sí funciona"?
Los procesos de gestión de la configuración son críticos y muchos equipos suelen ignorar definirlos, pero si nombramos a un responsable, el Líder de Gestión de Configuración correremos menos riesgos.
En una ocasión, trabajaba en la actualización de la base de datos de una aplicación web. Debía agregar varias columnas en algunas tablas y probar la inserción de la información. Mi procedimiento habitual, en ese entonces, era conectarme al administrador de la BD de testing, vaciar la BD y hacer los cambios. Esa vez, me conecté, abrí la BD y ejecuté los comandos para borrar todos los datos. Di clic en Ejecutar.
Antes de comenzar a agregar las nuevas columnas, me percaté de algo: era la Base de Datos del servidor de Producción.
Borré todos los datos de mi cliente; en un segundo, eliminé la información de meses de registros. Entré en pánico porque no había hecho un respaldo y no podía deshacer el borrado. Eran las 8:30 AM.
Quizás varios se identificaron con esto y han vivido algo similar: borraron algo donde no debían hacerlo, pusieron archivos donde no correspondían, hicieron pruebas en producción sin darse cuenta, etc. “A cualquiera le pasa, es normal” dirán algunos. Es una situación común en donde no existen procedimientos sólidos de gestión de la configuración. De eso te quiero hablar hoy.
“Es que en mi computadora sí funciona”
He visto proyectos técnicamente asombrosos fracasar por una mala gestión de la configuración. La aplicación funciona maravillosamente, pero solo en sus computadoras; en producción, las cosas son muy diferentes y no funcionan; también, basta con un pequeño cambio para echar todo a perder.
La gestión de la configuración se encarga de controlar los elementos que definen un producto de software en su versión actual y anteriores, el acceso a ellos para actualizarlos y modificarlos, y manejar adecuadamente la modificación concurrente.
“Eso lo hace Git (el repositorio), entonces hago gestión de configuración”. Podrías estar pensando eso, pero solo es parcialmente correcto. El código es solo uno de los elementos de la configuración y la herramienta de repositorio, una en un ecosistema de reglas, políticas y herramientas. Aun teniendo un repositorio como Git puede haber fallas graves si faltan los procedimientos y políticas definidas. Sobre todo, si nunca se ha definido la Línea Base.
¿Qué hay en esta versión del software?
Algunos equipos mantienen múltiples versiones de un mismo producto de software para diferentes clientes. A veces, alguno reporta una incidencia en su sistema y es necesario replicar su instalación exactamente para diagnosticar y arreglar. El problema es: nadie recuerda qué tiene instalado ni qué variantes tiene con la versión actual.
La Línea Base es la definición de la versión del software e incluye:
Los archivos de código
Librerías, ubicación y versión
Documentación de respaldo
Información del diseño
Información de los requerimientos
Casos de prueba
Versiones de las bases de datos
Respaldos de los datos
Usuarios y credenciales
Tablas de permisos
Todo esto para cada versión; cada vez que la versión cambia, la definición de la Línea Base debe actualizarse y guardarse un archivo con las versiones anteriores. Los mecanismos para tomar algo de la Línea Base, modificarlo e integrarlo para una nueva versión es lo que llamamos Gestión de la Configuración. Esto es asegurado por el Líder de Gestión de Configuración
Líder de Gestión de Configuración, el guardián de las versiones
El rol de Líder de Gestión de la configuración es el encargado de que existen los procedimientos, políticas y herramientas para mantener la Línea Base y el ambiente de desarrollo. El propósito es que existan réplicas idénticas del sistema en todos los ambientes donde este corre: producción, pruebas, las computadoras de los desarrolladores.
Es importante mencionar que no se trata de un Ingeniero de Soporte, ni se encargará de reparar cada incidencia técnica. Su labor es que el equipo defina sus procedimientos de gestión de la configuración, los respeten y eviten problemas.
Sus objetivos son:
Asegurar que el equipo tiene definido el ambiente de trabajo (herramientas, métodos)
Asegurar que el equipo tiene una política de gestión de la configuración de productos y ambiente de trabajo y procesos para conducirlos
Un miembro del equipo, que quiere desempeñar este rol, debe tener:
Interés y gusto por el uso de herramientas de apoyo para el desarrollo de software
Habilidad y competencia para dar soporte técnico a sus compañeros
Experiencia en la Administración de Sistemas
Familiaridad con las herramientas de trabajo que se usarán en los proyectos
A las 11:30 de la mañana había restaurado una versión de la base de datos que borré. Tenía una réplica del día anterior en mi computadora (sin datos de prueba, por suerte), pero tuve que cotejar los registros faltantes uno por uno mediante reportes que me enviaron. Costó dos días recuperar la información íntegra. El problema se resolvió, sin embargo, pudo causar problemas legales para la empresa.
Los procesos de gestión de la configuración son críticos y muchos equipos suelen ignorar definirlos, pero si nombramos a un responsable, el Líder de Gestión de Configuración correremos menos riesgos.
Este es el último rol de los ocho que mencionamos en esta serie; sin embargo, aún no hemos concluido el tema de Gestión del Trabajo. Continuaremos con ello en las siguientes entregas.
¡Hasta pronto!