A modernização de sistemas legados raramente é um processo “big bang”. Em vez de uma substituição total e imediata, a abordagem mais segura e escalável é migrar aos poucos, mantendo o sistema em funcionamento enquanto partes antigas vão sendo substituídas.
Um dos padrões mais eficazes para isso é o Strangler Fig Pattern, especialmente quando combinado com um API Gateway para gerenciar o tráfego e orquestrar a transição.
Se você acompanha o blog, já viu que falamos sobre Arquitetura Evolutiva, Design Modular e Monólitos Modulares.
Este artigo se conecta diretamente a esses conceitos — porque o Strangler Fig é, na prática, uma das formas mais controladas de aplicar arquitetura evolutiva.
O que é o Strangler Fig Pattern?
Inspirado na planta “estranguladora” que cresce em volta de outra árvore até substituí-la completamente, o padrão consiste em envolver um sistema legado com uma camada intermediária, redirecionando chamadas para módulos novos à medida que eles são criados.
No contexto moderno, essa camada intermediária é quase sempre um API Gateway.
Quando aplicar
- Legado complexo que não pode ser reescrito do zero.
- Sistemas críticos com SLA alto e risco de downtime.
- Necessidade de migração gradual, por equipes diferentes e em prazos distintos.
- Desejo de aplicar arquitetura modular sem interromper operações.
Passo a passo detalhado
1. Mapeamento de domínio e rotas
Antes de mexer no código, entenda o sistema.
- Levante todas as rotas e contratos de API expostos.
- Classifique endpoints por criticidade e dependências.
- Identifique pontos de integração com sistemas externos.
Dica: Use ferramentas como Swagger/OpenAPI generators ou sniffing de tráfego para mapear endpoints quando a documentação for inexistente.
2. Implementação do API Gateway
O API Gateway será o único ponto de entrada do tráfego.
- Configure-o para encaminhar chamadas para o legado sem alterar o comportamento.
- Adicione métricas, logging estruturado e tracing distribuído desde o início — isso será vital para identificar gargalos e falhas na transição.
- Ferramentas comuns: Kong, NGINX, AWS API Gateway, Traefik.
3. Primeira extração
Escolha um módulo de baixo risco, mas com valor de negócio claro.
- Reimplemente-o em um novo serviço (ex: microservice ou módulo independente).
- No API Gateway, crie rota que direcione chamadas desse endpoint para o novo serviço.
- Mantenha a interface idêntica para evitar impacto nos consumidores.
4. Execução em paralelo (canary release)
Para módulos mais críticos:
- Encaminhe parte do tráfego para o novo serviço e monitore resultados.
- Compare latência, taxas de erro e logs entre legado e novo módulo.
- Ferramentas como Istio ou Linkerd podem ajudar em roteamento dinâmico.
5. Migração incremental
Repita o processo:
- Migrar um endpoint ou conjunto de endpoints por vez.
- Cada migração deve ter rollback rápido configurado.
- O API Gateway centraliza a lógica de roteamento, isolando consumidores da mudança.
6. Desativação do legado
Quando todas as rotas de um módulo estiverem migradas:
- Desabilite endpoints antigos.
- Monitore por tentativas de acesso para identificar clientes desatualizados.
- Planeje o desligamento definitivo apenas quando o tráfego no módulo for zero.
Benefícios da abordagem
- Zero downtime: clientes não percebem a transição.
- Mitigação de risco: rollback rápido e granular.
- Escalabilidade organizacional: várias equipes podem migrar partes diferentes do sistema em paralelo.
- Evolução contínua: mantém o alinhamento com princípios de arquitetura evolutiva.
Exemplos práticos de aplicação
- Uma fintech migrando seu módulo de cálculo de juros sem alterar a API pública.
- Um e-commerce substituindo gradualmente seu carrinho de compras por um microservice, mantendo rotas idênticas no Gateway.
- Uma operadora de telecom modernizando seu sistema de billing por etapas.
Riscos e armadilhas
- Gateway como gargalo: sem monitoramento e escalabilidade, o API Gateway pode se tornar o ponto único de falha.
- Débitos técnicos persistentes: se a migração não tiver cronograma, o legado pode nunca ser eliminado.
- Complexidade de roteamento: múltiplas regras e exceções podem dificultar manutenção.
Conexão com arquitetura evolutiva
O Strangler Fig com API Gateway é, na prática, uma implementação concreta de princípios de arquitetura evolutiva e design modular.
Ele permite que sistemas sejam transformados de forma contínua, aproveitando a base existente, mas abrindo espaço para novos módulos e tecnologias — exatamente como discutimos nos artigos: