El patrón Strangler Fig, descrito por Martin Fowler en 2004, toma su nombre de una especie de higuera tropical que crece alrededor de un árbol huésped hasta acabar reemplazándolo por completo. Aplicado al software, es la estrategia más segura para modernizar sistemas legacy grandes: en vez de reescribir todo de golpe (con el riesgo enorme que conlleva), se construye el sistema nuevo alrededor del viejo y se le van redirigiendo funcionalidades hasta que el legacy puede apagarse.
El flujo típico tiene tres pasos. Primero, se coloca una "fachada" delante del sistema legacy: un reverse proxy, un API gateway o un router que recibe todas las peticiones. Inicialmente esa fachada delega todo en el legacy. Segundo, se identifica una funcionalidad acotada que se quiere modernizar, se reimplementa en el nuevo sistema y se cambia la fachada para que rute esa funcionalidad al nuevo. Tercero, se repite el proceso funcionalidad a funcionalidad hasta que el legacy queda sin tráfico y puede apagarse.
La virtud del patrón es que el riesgo está distribuido en el tiempo y siempre hay un sistema funcionando. Si un paso falla, se vuelve a rutar al legacy y se itera. Los datos pueden migrarse gradualmente con CDC (change data capture) o doble escritura. Las dependencias entre módulos se resuelven con anti-corruption layers que aíslan el modelo nuevo del viejo.
En 10Code usamos Strangler Fig en prácticamente todos nuestros proyectos de modernización de sistemas legacy: monolitos PHP antiguos, ERPs heredados, intranets en frameworks descontinuados. Empezamos por una fachada moderna, identificamos los bounded contexts del legacy y vamos extrayendo y reescribiendo módulo a módulo en Laravel/Node moderno. La regla: nunca prometer una reescritura "big bang"; siempre proponer un Strangler Fig con valor entregable cada pocas semanas.
En 10Code llevamos más de una década aplicando estas tecnologías a productos reales. Si quieres comentarnos tu caso, escríbenos y te respondemos personalmente.
Hablar con un ingeniero