Un site de por si ya complejo, lleno de interacciones e integraciones con otros sistemas y con grandes expectativas para dar un buen servicio a los ciudadanos de la ciudad.
La web principal del Ayuntamiento de Barcelona se realizó por Digrup en Drupal 7 hace ya varios años, no estaba en el horizonte aún ni siquiera Drupal 8.
Un site de por si ya complejo, lleno de interacciones e integraciones con otros sistemas y con grandes expectativas para dar un buen servicio a los ciudadanos de la ciudad.
Con esta meta superada, y ya con la fecha oficial del fin de Drupal 7, Digrup se encargó de migrar el site completo a Drupal 10.
Los objetivos principales de esta migración eran:
Una de las premisas era que obviamente la introducción de contenidos, debido a la actualidad viva del propio del site, no podía detenerse, con lo que la dualidad de versiones de Drupal 7 y Drupal 10 no podía extenderse mucho tiempo.
Se planificó en varias etapas:
Antes de empezar la migración, se analizó a fondo el site. Se clasificaron todos los tipos de contenido, taxonomías, vistas, bloques, files, módulos contrib y custom..para tener una idea clara de la dimensión del proyecto y una vez aquí hacer la primera estimación del coste en tiempo y recursos que llevará. También se listaron todas las páginas públicas de la web para tenerlas controladas y poder compararlas una vez migradas.
Drupal nos facilita un módulo de análisis de compatibilidad llamado upgrade_status que puede ser de utilidad, ya que analiza varios aspectos técnicos del core y módulos a tener en cuenta para la migración: https://www.drupal.org/project/upgrade_status
A partir de aquí se calendarizó el proyecto y se estimaron las fases que tendrían, teniendo en cuenta que en una migración de este tipo siempre puedes encontrarte con alguna sorpresa a posteriori.
La primera fase más técnica consistió en preparar el Drupal 7 actual para compatibilizarlo al máximo con el futuro Drupal 10.
De esta fase se tuvo en cuenta:
Este paso es el más simple de todos, instalar un Drupal 10 y añadir en el settings del site los datos de la BD del Drupal 7, para que al ejecutar la migración tenga el acceso ya configurado.
Antes de empezar la migración, es conveniente tener instalada en el Drupal 10 la correspondiente versión del módulo contrib del 7.
Una vez comprobado que el Drupal 9 tiene acceso a nuestra copia de Drupal 7 en local, ejecutamos la primera migración test a través de los módulos core de migración.
Este punto hizo que programaramos unas migraciones custom de files (documentación , imagenes, pdf.. ) haciendo unos .yml personalizados.
Una vez probamos que la fase de migración era un éxito y teníamos todo el contenido que queríamos en Drupal 10, comenzamos la fase de adaptación.
A grandes rasgos la fase de adaptación consistió en maquetar de nuevo el site al sistema de templating Twig de Drupal 10, rehacer views y refactorizar los módulos custom que se hicieron en Drupal 7.
Una vez tuvimos ya una copia en un servidor de desarrollo del web en Drupal 10, ejecutamos de nuevo varias migraciones para testear que todo funcionaba correctamente, asegurándonos de tener la última versión de contenido productivo.
Se aprovechó para actualizar el código a php 8.1 y se adaptó el site para incorporarlo a un sistema de integración continua para mejorar los despliegues.
Previo a la publicación se revisó página por página, tanto el path de las mismas como sus metatags, para que no tuviera afectación en el SEO.
Una vez publicado el nuevo Drupal 10 se monotorizó de nuevo el site y se hizo el seguimiento pertinente.. y aunque al ser un site tan grande y relevante tuvo su complejidad, todo fue perfectamente.
En los posteriores análisis se constató que se mejoró tanto el rendimiento como en el SEO, y se preparó el site dejándolo preparado para futuros evolutivos.
Gracias a todo el equipo que intervino en el proyecto por su profesionalidad y liderazgo para llevar un proyecto tan complejo adelante.