Migración de Symfony 5.4 a Symfony 8 en producción
Migración completa de una plataforma de gestión de gimnasios (MasMusculo/MMfit, Osunasport S.L.) a lo largo de cuatro versiones mayores de Symfony, sobre una base de código casi obsoleta, sin interrumpir el servicio en producción.
Contexto
MasMusculo/MMfit es la plataforma de gestión de gimnasios de Osunasport, usada a diario en producción por gimnasios reales. Estaba construida sobre Symfony 5.4, una versión que se acercaba al fin de su soporte, sobre una base de código con años de atajos acumulados.
Alcance
Cuatro versiones mayores de Symfony seguidas (5.4 → 6 → 7 → 8), cada una con sus propias deprecaciones, componentes eliminados y nuevas convenciones, abordadas por un único desarrollador mientras la plataforma seguía dando servicio a clientes reales.
Planteamiento
- Subir de una versión mayor en una, en vez de saltar directamente a la 8, para que cada paso fuera lo bastante pequeño como para verificarlo.
- Corregir las deprecaciones que el propio log de deprecaciones de Symfony iba señalando antes de subir a la siguiente versión mayor, en vez de descubrirlas en producción.
- Apoyarse en tests de regresión y pruebas manuales dirigidas a los flujos críticos de gestión de gimnasios antes de cada despliegue, ya que la base de código heredada partía de una cobertura automática irregular.
Resultado
La plataforma corre hoy sobre Symfony 8 sin ninguna interrupción de servicio durante todo el proceso y sin regresiones reportadas por los gimnasios que la usan a diario.