El mantenimiento de un framework siempre es una cuestión sensible en todo desarrollo. Crear actualizaciones y distribuirlas de modo sencillo, a través de un sistema claro y previsible, puede marcar la diferencia en un proyecto importante.
El siguiente artículo es continuación de las cuestiones abordadas en Análisis de un sistema de actualización para aplicaciones web.
Por si alguien no comprende aún de lo que hablamos, explicaremos que, con un framework como el nuestro, del tipo CMS (del inglés Content Manager System) se pueden hacer muchos sitios webs, cada uno será una copia o distribución, personalizada de manera única. Ahora bien, el framework todo el tiempo es mejorado, y esas mejoras deberían llegar a cada distribución sin mayores dificultades y siempre respetando las particularidades de cada una de ellas. Las mejoras se llaman «actualizaciones».
Para nuestro framework, en la versión 4, partimos de la idea de que en una actualización debemos distribuir solo tres tipos de elementos: archivos (con sus directorios), estructuras para la base de datos y datos. Y, para estos tres elementos, utilizamos los conceptos de «components»
, «SQL queries»
y «xdata»
respectivamente.
Los componentes, son directorios donde se guardan archivos de un mismo tipo, por ejemplo: librerías, scripts, plugins, vistas, recursos del frente, o de la administración, etc. Mover estos directorios no trae demasiadas complicaciones.
Las consultas SQL se utilizan para mover sólo estructuras, no datos. Las estructuras pueden ser tablas, procedimientos, funciones. Se hace a través de un json que contiene la estructura descompuesta en partes, lo que permite compararla con la existente en la distribución y, de surgir diferencias, realizar las modificaciones necesarias. Esto último significa que, si modificamos la base de datos de nuestro proyecto y lo distribuimos, se modificarán automáticamente todas las distribuciones al ser actualizadas.
Por último, nos quedan los datos, que se moverán utilizando el sistema de plugins y una librería de soporte, llamada xdata
.
Mover los datos utilizando plugins nos brinda una capa intermedia, que sirve para verificar los datos, brindar seguridad y, fundamentalmente, para mezclar de manera conveniente los datos importados con los existentes, de manera de preservar las individualidades de cada distribución.
Como observación, diremos que los datos pueden tener como destino:
- una base de datos, como en la extensión
«menus»
; - un archivo, como en la extensión
«settings»
.
Por otra parte, son varios los plugins que se activan en una actualización, lo que permite, por ejemplo, luego de ingresado los datos, resetear un caché.
Conclusión
Siempre son bienvenidas las ideas que unifican criterios, brindando sencillez y claridad. Ese tipo de ideas son las que intentamos compartir hoy en este artículo. Sin más, esperamos haber sido útiles.