Strangler Fig (patrón)
Patrón que reemplaza un sistema legacy por partes: lo nuevo crece alrededor de lo viejo hasta que este puede apagarse, sin un corte de golpe.
Pronunciación
Qué es
El patrón Strangler Fig (higuera estranguladora) es una forma de modernizar un sistema legacy por partes, en lugar de reescribirlo completo y cambiarlo de un día para otro. El sistema nuevo se construye alrededor del viejo, toma sus funciones una a una y, cuando ya no queda nada en el sistema original, este se apaga.
Para un gerente: es la diferencia entre cambiar el motor de un avión en pleno vuelo por piezas y dejar el avión en tierra un año esperando uno nuevo.
De dónde viene el nombre
Martin Fowler tomó la metáfora de las higueras estranguladoras que vio durante unas vacaciones en los bosques tropicales de Queensland, Australia, en 2001. Estas plantas germinan en una rama de un árbol, crecen tomando nutrientes del huésped hasta echar raíces en el suelo y, con el tiempo, se vuelven autosuficientes.
Fowler publicó la idea en su bliki unos años después con el nombre Strangler Application. Luego lo cambió a Strangler Fig Application para resaltar el origen botánico de la metáfora. La versión actual del artículo es de agosto de 2024.
Cómo funciona
La guía de Azure Architecture Center lo describe en cuatro fases, con una fachada (proxy) que decide a dónde va cada petición:
Fase 1 Fase 2 Fase 3-4
Cliente Cliente Cliente
↓ ↓ ↓
[Fachada] [Fachada] [Sistema nuevo]
↓90% ↘10% ↓30% ↘70%
[Legacy] [Nuevo] [Legacy] [Nuevo] (legacy apagado,
fachada retirada)
- Introducir la fachada entre los clientes, el sistema legacy y el nuevo. Al inicio casi todo va al legacy.
- Migrar por incrementos: cada funcionalidad reimplementada hace que la fachada envíe más tráfico al sistema nuevo.
- Retirar el legacy cuando ya no tiene funciones ni dependencias.
- Quitar la fachada y conectar los clientes directamente al sistema nuevo.
La fachada suele ser un API gateway, un proxy inverso o una capa de APIs. Cuando el sistema nuevo y el viejo necesitan llamarse entre sí, se recomienda una capa anticorrupción que traduzca entre ambos modelos para que el diseño nuevo no herede los vicios del legacy.
Por qué importa para empresas en Latinoamérica
Muchas organizaciones de la región dependen de sistemas en COBOL, VB6, Delphi o PowerBuilder que no pueden detenerse: facturan, liquidan nómina o atienden clientes todos los días. El Strangler Fig permite:
- Entregar valor desde los primeros meses, no al final de un proyecto de años
- Reducir el riesgo: cada paso es pequeño y reversible
- Priorizar por retorno: migrar primero lo que más duele o más valor genera
- Repartir la inversión en el tiempo
Cuándo no conviene
Según la misma guía de Azure, el patrón puede no ser adecuado cuando:
- No es posible interceptar las peticiones al sistema legacy
- No hay acceso al código fuente del legacy para desactivar lo migrado
- El sistema es pequeño y reemplazarlo completo es simple
- Se necesita apagar el sistema original rápidamente
Errores comunes
❌ Buscar paridad total de funcionalidades antes de salir a producción → Replicar todo lo que hace el sistema viejo antes de lanzar lleva de vuelta al “big bang”; muchas funciones ya no se usan
❌ Convertir la fachada en un cuello de botella → La fachada no debe ser un punto único de falla ni degradar el rendimiento
❌ Olvidar los datos → Decidir desde el inicio cómo ambos sistemas comparten o sincronizan la información
❌ Transición eterna → Sin un plan para apagar el legacy, se terminan manteniendo dos sistemas para siempre
Ejemplo práctico (ilustrativo)
Una cooperativa financiera tiene un sistema de créditos en VB6 y quiere llevarlo a .NET + Angular:
- Se instala un API gateway como fachada frente a las funciones del sistema actual
- Se reimplementa primero la consulta de estado de crédito (bajo riesgo, alto uso) como un servicio .NET
- El portal web nuevo usa ese servicio; el resto sigue en VB6
- Luego se migran simulación, solicitud y desembolso, cada uno con pruebas que comparan resultados contra el sistema viejo y despliegues automatizados con CI/CD
- Cuando la última función sale del VB6, se apaga el sistema
¿Estás evaluando este enfoque para tu sistema? En Nextsoft acompañamos estos proyectos junto con aliados estratégicos especializados en migración: el aliado realiza la migración y Nextsoft ejecuta nuevos módulos, integraciones, frontend y QA. Conoce el servicio de modernización de sistemas legacy. Conversemos sobre tu caso.
Términos relacionados
- Microservicios - Arquitectura destino frecuente al extraer funciones del legacy
- API - La fachada y los servicios nuevos se exponen como APIs
- Deuda técnica - Lo que el patrón permite pagar por partes
- Rehost, Replatform, Refactor - Estrategias de migración a la nube que se combinan con este patrón
- CI/CD - Imprescindible para desplegar muchos incrementos pequeños con seguridad
Recursos adicionales:
- Martin Fowler - Strangler Fig Application - El artículo original de la metáfora (en inglés)
- Microsoft - Patrón Strangler Fig - Fases, consideraciones y cuándo usarlo
- Microsoft - Patrón de capa anticorrupción - Cómo convivir con el sistema legacy
- Cartwright, Horn y Lewis - Patterns of Legacy Displacement - Patrones complementarios para reemplazar sistemas legacy (en inglés)