Resumen:
Este artículo estudia y mejora los procesos de control de versiones para bases de datos evolutivas, cruciales para la ingeniería de software moderna. Las bases de datos evolucionan para adaptarse a nuevas necesidades, pero la falta de un registro estructurado de cambios puede causar errores, inconsistencias y conflictos en los equipos de desarrollo, afectando la calidad del sistema.
El proyecto propone una arquitectura para el control de versiones en bases de datos, basada en un ecosistema de aplicaciones como Liquibase, Flyway, SQLFluff y su integración con entornos de integración y entrega continua (CI/CD), donde el control y la trazabilidad de cambios son esenciales. La metodología organiza los objetos de la base de datos en carpetas, siguiendo una nomenclatura simple que separa aquellos que pueden modificarse fácilmente (como vistas y funciones) de los que requieren un manejo más cuidadoso (como índices, tablas o llaves). Además, se define un esquema claro para estructurar scripts de migración, utilizando convenciones que facilitan la trazabilidad y el trabajo colaborativo, como la división por fases, sprints y equipos.
Asimismo, el proyecto propone una integración completa de un ecosistema de herramientas para el control de versiones y la prevención de errores en la gestión de bases de datos dentro de un proceso CI/CD. Para ello, se emplean herramientas como SQLFluff y pre-commit a nivel local, asegurando que el código cumpla con los estándares antes de ser enviado al repositorio. Posteriormente, en el mismo repositorio, GitHub Actions valida los cambios aplicando las configuraciones establecidas, impidiendo la ejecución de modificaciones que no cumplan con los estándares definidos. Esto permite realizar despliegues automáticos y seguros en entornos de PostgreSQL.
Este proyecto busca mejorar los procesos de desarrollo proporcionando una guía práctica y replicable para la gestión de cambios en bases de datos, reduciendo errores y aumentando la trazabilidad, en alineación con las mejores prácticas del desarrollo ágil.