Patrón Strangler Fig
Estrategia de migración incremental que reemplaza gradualmente un sistema legacy con componentes nuevos, enrutando tráfico progresivamente hasta que el sistema antiguo se puede retirar.
¿Qué es?
El patrón Strangler Fig (nombrado por la higuera estranguladora) es una estrategia para migrar sistemas legacy de forma incremental. En lugar de un rewrite completo — el temido «big bang» que falla más de lo que funciona — se construyen componentes nuevos que gradualmente reemplazan funcionalidad del sistema antiguo mientras este sigue operando.
Martin Fowler lo describió en 2004 inspirado por las higueras estranguladoras de Australia: semillas que germinan en la copa de un árbol huésped, crecen raíces hacia abajo, y eventualmente envuelven y reemplazan al árbol original.
¿Por qué importa?
Los rewrites completos son el cementerio de proyectos de software. El patrón Strangler Fig ofrece una alternativa pragmática:
- Riesgo controlado — cada migración es pequeña y reversible
- Valor continuo — el sistema legacy sigue funcionando mientras se construye el nuevo
- Aprendizaje incremental — el equipo descubre requisitos ocultos del legacy gradualmente, no al final
- Financiamiento sostenible — se puede justificar inversión continua porque cada iteración entrega valor
Proceso
- Colocar un proxy/facade frente al sistema legacy — este es el punto de control que permite enrutar tráfico
- Implementar nueva funcionalidad en el sistema nuevo para una ruta o feature específica
- Enrutar tráfico gradualmente al sistema nuevo (por porcentaje, por usuario, por región)
- Validar y monitorear — comparar comportamiento entre ambos sistemas
- Repetir hasta que el legacy no reciba tráfico
- Retirar el sistema legacy cuando ya no sea necesario
¿Cuándo usarlo?
- Sistemas monolíticos que necesitan modernizarse pero no pueden detenerse
- Migraciones de bases de datos donde la consistencia es crítica
- Transiciones de on-premise a cloud
- Reemplazo de frameworks o lenguajes obsoletos
¿Cuándo no usarlo?
- Sistemas pequeños donde un rewrite toma menos de un sprint
- Cuando el sistema legacy no tiene una interfaz clara para interceptar
- Si no hay forma de enrutar tráfico selectivamente
Variantes
| Variante | Mecanismo | Cuándo usar |
|---|---|---|
| Strangler Fig (clásico) | Proxy HTTP redirige tráfico gradualmente | Migración de monolito web a microservicios |
| Branch by Abstraction | Abstracción interna en el código | Reemplazar componentes internos sin cambiar la API |
| Parallel Run | Ejecutar ambos sistemas y comparar | Cuando la corrección es crítica (pagos, cálculos) |
| Feature Toggle | Feature flags controlan qué usuarios ven el nuevo sistema | Migración gradual por segmento de usuarios |
Referencias
- Strangler Fig Application — Martin Fowler, 2004. El artículo original que nombró el patrón.
- Legacy Application Strangulation — Paul Hammant, 2013. Casos de estudio reales de aplicación del patrón.
- Strangler Fig Pattern — Azure — Microsoft, 2024. Guía de implementación del patrón.