trilha

System Design/04 - Cloud Design Patterns/Design & Implementation2 min

Strangler Fig

Perguntas-guia
  • Que problema isso resolve?
  • Quando usar / quando NÃO usar?
  • Qual o principal trade-off?
  • Como isso falha em produção?

Conceito

Substituir um sistema legado gradualmente, interceptando as chamadas e redirecionando funcionalidade por funcionalidade para o sistema novo, até que o antigo possa ser desligado.

fase 1:  cliente → fachada → legado (100%)
fase 2:  cliente → fachada ┬→ novo (pedidos)
                           └→ legado (o resto)
fase 3:  cliente → fachada → novo (100%)   → legado desligado

O nome vem da figueira estranguladora, que cresce em volta da árvore hospedeira até substituí-la.

As três peças

  1. Fachada que intercepta o tráfego — Gateway Routing
  2. Sistema novo assumindo uma fatia por vez
  3. Anti-Corruption Layer protegendo o modelo novo enquanto os dois coexistem

Trade-offs

A alternativa é a reescrita completa — o big bang — e a experiência da indústria é consistente sobre ela: prazos estouram, o legado continua evoluindo durante a reescrita, e a troca acontece de uma vez, com risco concentrado num único dia.

O strangler entrega valor incrementalmente e permite reverter uma fatia sem reverter tudo.

O preço é o período de coexistência, que é longo e desconfortável:

Custo Detalhe
Dois sistemas para operar, monitorar e manter
Sincronização de dados Quem é dono de qual tabela durante a transição
Consistência Escritas que atravessam a fronteira
Disciplina A tentação de "só mais um recurso no legado"

O risco mais real não é técnico: é a migração que para no meio. Depois de mover as partes fáceis, a prioridade muda, o time é realocado, e a organização fica permanentemente com dois sistemas — o pior dos dois mundos.

A defesa é planejar por fatias verticais de negócio que entregam valor sozinhas, e tratar o desligamento do legado como entrega, não como consequência.

Exemplo prático

Um monolito de e-commerce sendo substituído ao longo de um ano:

mês 1   fachada na frente, 100% legado — nada mudou para o cliente
mês 2   /produtos      → serviço novo
mês 4   /carrinho      → serviço novo
mês 7   /checkout      → serviço novo (a fatia mais arriscada, com canário)
mês 11  /admin         → serviço novo
mês 12  legado desligado

Cada passo é reversível: se /carrinho apresenta problema, a fachada volta a rotear para o legado em segundos.

A ordem não é arbitrária — começa pelo que é mais simples e menos crítico, para amadurecer a infraestrutura nova antes de mover o checkout, que é onde o erro custa dinheiro.

Relacionado


Parte de Design & Implementation · roadmap.sh/system-design

Buscar

Busca por título, seção e texto das notas