Como modernizar um sistema legado sem parar a operação
Resposta direta: use o padrão Strangler Fig — construa o novo sistema ao lado do velho, migre funcionalidade por funcionalidade, e desligue o antigo gradualmente. Nunca faça rewrite big-bang se a operação depende do sistema.
Por que "desligar e reescrever" é perigoso
O impulso natural é: "esse sistema é tão ruim que vamos jogar fora e fazer do zero." Parece lógico, mas na prática:
- Leva 2-3x mais tempo do que o estimado (sempre)
- Operação fica no limbo — o velho deteriora enquanto o novo não fica pronto
- Conhecimento implícito se perde — regras de negócio que ninguém lembrava estavam no código
- Risco de fracasso total — se o projeto atrasa demais, a empresa fica sem nenhum sistema funcional
O padrão Strangler Fig (migração gradual)
Inspirado em figueiras que crescem ao redor de árvores existentes até substituí-las:
Fase 1: Entender o que existe
- Mapear todas as funcionalidades do sistema atual
- Identificar dependências entre módulos
- Classificar por criticidade e complexidade
- Documentar regras de negócio implícitas
Fase 2: Definir fronteiras
- Escolher o primeiro módulo a migrar (idealmente: alto impacto + baixo risco)
- Definir a interface entre módulo novo e sistema velho
- Criar camada de compatibilidade (adapter/facade)
Fase 3: Construir ao lado
- Desenvolver o módulo novo com arquitetura moderna
- Manter ambos rodando em paralelo (shadow mode)
- Redirecionar tráfego gradualmente (10% → 50% → 100%)
Fase 4: Migrar dados
- Script de migração com validação cruzada
- Período de operação dual (dados escritos nos dois)
- Cutover com rollback garantido
Fase 5: Desligar o velho
- Remover redirecionamento para o módulo antigo
- Manter backup por período de segurança
- Celebrar (sério — o time merece)
Critérios para escolher o primeiro módulo
Comece por algo que seja:
- Isolado — poucas dependências com outros módulos
- Doloroso — gera reclamações frequentes da equipe ou dos clientes
- Mensurável — dá para provar melhoria com números
- Visível — o time percebe o progresso e ganha confiança
Exemplos bons para começar: relatórios, módulo de cadastro, painel administrativo.
Exemplos ruins para começar: core financeiro, processamento de pedidos (alto risco, muitas dependências).
Armadilhas comuns
1. "Vamos melhorar o legado antes de migrar"
Não. Gastar esforço melhorando código que será desligado é desperdício. Mantenha-o estável (correções críticas) mas não invista em melhorias.
2. "O novo sistema precisa ter TUDO antes de migrar"
Não. Migre funcionalidade por funcionalidade. Usuários podem usar dois sistemas temporariamente (não é ideal, mas funciona).
3. "Vamos reescrever e depois migrar os dados"
Migração de dados deveria ser a PRIMEIRA coisa planejada, não a última. É onde mais coisas dão errado.
4. "A equipe interna faz nas horas vagas"
Modernização é projeto — precisa de foco, prazo e recursos dedicados. "Quando sobrar tempo" significa "nunca".
Quanto tempo leva
| Tamanho do sistema | Migração completa | Primeiro módulo em prod |
|---|---|---|
| Pequeno (< 50 funcionalidades) | 3-6 meses | 4-6 semanas |
| Médio (50-200 funcionalidades) | 6-12 meses | 6-10 semanas |
| Grande (200+ funcionalidades) | 12-24 meses | 8-12 semanas |
O importante: valor aparece nas primeiras semanas, não só no final.
Conclusão
Modernização não é um evento — é um processo. O segredo é criar momentum: migrar um módulo, provar valor, ganhar confiança e continuar. Cada funcionalidade migrada reduz a dependência do legado e aproxima a empresa de uma plataforma moderna, segura e evolutível.