Conceptos

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.

seed#strangler-fig#migration#legacy#pattern#modernization#architecture

¿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

  1. Colocar un proxy/facade frente al sistema legacy — este es el punto de control que permite enrutar tráfico
  2. Implementar nueva funcionalidad en el sistema nuevo para una ruta o feature específica
  3. Enrutar tráfico gradualmente al sistema nuevo (por porcentaje, por usuario, por región)
  4. Validar y monitorear — comparar comportamiento entre ambos sistemas
  5. Repetir hasta que el legacy no reciba tráfico
  6. 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

VarianteMecanismoCuándo usar
Strangler Fig (clásico)Proxy HTTP redirige tráfico gradualmenteMigración de monolito web a microservicios
Branch by AbstractionAbstracción interna en el códigoReemplazar componentes internos sin cambiar la API
Parallel RunEjecutar ambos sistemas y compararCuando la corrección es crítica (pagos, cálculos)
Feature ToggleFeature flags controlan qué usuarios ven el nuevo sistemaMigración gradual por segmento de usuarios

Referencias

Conceptos