Patrón strangler fig (higuera estranguladora)
El patrón strangler fig reemplaza un sistema legacy gradualmente: el código nuevo toma una parte a la vez detrás de una capa de enrutamiento hasta poder retirar el sistema viejo.
El nombre viene de Martin Fowler, que comparó este enfoque con una higuera que crece alrededor de un árbol y termina por reemplazarlo. En software, construyes el sistema nuevo alrededor de los bordes del viejo. Una capa de enrutamiento se ubica delante de ambos y decide, ruta por ruta, cuál responde. Con el tiempo, más tráfico va al sistema nuevo y el viejo se reduce hasta que se puede apagar.
Los dos sistemas están en producción todo el tiempo. Los usuarios siguen trabajando, y cada paso es lo bastante pequeño para publicarlo y para deshacerlo.
Ejemplo
Una empresa de logística tiene una aplicación AngularJS con cuarenta pantallas. El equipo pone un shell delante. Al principio todas las rutas van a la aplicación AngularJS. Luego:
/trackingse reconstruye en Angular y el shell la dirige al código nuevo./facturassigue un mes después.- Cuando la última ruta se movió, se elimina el bundle de AngularJS.
En cada paso el producto funciona completo, y una ruta puede volver al código viejo si la versión nueva tiene un problema.
Confusión frecuente
A veces el patrón se entiende como "agregar código nuevo al lado del viejo". Sin la capa de enrutamiento y sin un plan para retirar el sistema viejo, terminas con dos sistemas que mantener para siempre.
El patrón tiene tres partes: interceptar, reemplazar y retirar. La última es la que se omite cuando se acaba el presupuesto, así que las pantallas más difíciles y menos usadas deben quedar planificadas de forma explícita. La guía Cómo migrar de AngularJS a Angular sin downtime aplica este patrón paso a paso.
Por qué importa. Es el razonamiento detrás de casi toda migración de frontend de bajo riesgo: la aplicación legacy sigue funcionando mientras las rutas pasan a la nueva, y cada paso se puede revertir.
Términos relacionados
¿Planeas una migración o una plataforma de microfrontends?
En una llamada de 20 minutos me cuentas tu situación y te digo cómo la abordaría. Si todavía no vale la pena, también te lo digo.
Escríbeme por LinkedIn