System Design/04 - Cloud Design Patterns/Design & Implementation2 min
Strangler Fig
- 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
- Fachada que intercepta o tráfego — Gateway Routing
- Sistema novo assumindo uma fatia por vez
- 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