O GESCON era um sistema de gestão municipal escrito em VB.NET, ainda em uso diário, sem nenhuma forma realista de tirá-lo do ar para uma migração "big bang". O pedido era simples de dizer e difícil de fazer: migrar para Angular e .NET 5 sem que ninguém notasse.
Rodando dois sistemas em paralelo
A abordagem que funcionou foi corte incremental, não reescrever-e-trocar:
- Colocar a nova stack no ar ao lado da antiga, compartilhando o mesmo banco quando possível.
- Migrar um módulo por vez, direcionando só o tráfego daquele módulo para o novo sistema.
- Manter o sistema antigo em VB.NET como fallback até o novo módulo rodar limpo em produção por um ciclo completo de faturamento.
Aproveitando para limpar o caminho
Com a estrutura pronta, usamos a migração como motivo para introduzir Clean Architecture — não como uma iniciativa separada, mas embutida em como cada módulo migrado era reconstruído. Em cerca de um mês, isso significou remover ~900 linhas de código morto e adicionar testes automatizados a trechos que nunca tinham tido nenhum.
Também encontramos um vazamento de dados sensíveis na API antiga durante esse processo — o tipo de coisa que fica muito mais fácil de notar quando você é forçado a ler cada endpoint com atenção porque está reconstruindo ele.
A parte realmente difícil
Tecnicamente, nada disso é exótico. A parte difícil é disciplina: resistir à vontade de "reescrever tudo do jeito certo dessa vez" e em vez disso entregar em passos pequenos e reversíveis que nunca colocam a produção em risco. Zero downtime não é uma tecnologia — é uma decisão de sequenciamento que você toma todos os dias da migração.
Vamos conversar?
Tem um projeto, uma vaga ou só quer trocar uma ideia sobre o assunto? Envie uma mensagem.
Entrar em contato