Blog · Arquitetura
Sistema legado: reescrever ou não?
Três sinais para decidir, e o caminho do meio: trocar por partes, sem parar o negócio.
Todo sistema antigo chega no ponto em que alguém, numa reunião, sugere reescrever tudo do zero. A proposta é sedutora: código limpo, tecnologia nova, nenhum dos remendos de hoje. Às vezes é a decisão certa. Muitas vezes, não.
O problema raramente é a ideia. É o caminho. Antes de decidir, vale entender o que exatamente está doendo, e se reescrever é mesmo o remédio para essa dor.
Três sinais que importam
Ninguém mais entende o código. Quem escreveu saiu, a documentação não existe, e qualquer mudança começa com dias de investigação.
Cada mudança pequena quebra outra coisa. É o sintoma de um sistema sem testes e com partes muito presas umas às outras. O time passa a ter medo de mexer, e as entregas ficam cada vez mais lentas.
A tecnologia não tem mais suporte. A versão da linguagem, do framework ou do banco parou de receber correções de segurança, e está cada vez mais difícil achar gente que saiba mexer.
Para avaliar
- Quanto tempo leva para colocar uma mudança pequena no ar?
- Quantas pessoas do time conseguem mexer em cada parte do sistema?
- A tecnologia ainda recebe correções de segurança?
Com um sinal só, conserte
Reescrever do zero costuma sair mais caro do que parece. Durante meses, o time constrói o sistema novo enquanto o antigo continua rodando e precisando de correções, sem que nada novo chegue para quem usa. Quando o novo fica pronto, as regras do negócio já mudaram, e ele nasce desatualizado.
Com um sinal só, o caminho quase sempre é evoluir o que existe: escrever testes em volta das partes críticas, documentar enquanto investiga, refatorar aos poucos e manter o ritmo de entregas pequenas. É menos glamouroso, e funciona.
Sinal de alerta: um plano de reescrita sem nenhuma entrega no meio do caminho, só uma data de virada no fim.
Com os três sinais, troque por partes
Quando os três sinais aparecem juntos, consertar por dentro já não basta. Mas ainda existe um caminho melhor que a reescrita total: trocar o sistema por partes.
A ideia é escolher um módulo, construir a versão nova ao lado da antiga e colocar na frente um roteador que decide quem atende cada pedido. O tráfego vai mudando aos poucos (10%, metade, tudo) e, se algo der errado, volta para o antigo em minutos. Quando o módulo novo está estável, passa-se ao próximo.
O sistema nunca para, e cada etapa entrega valor sozinha. O antigo vai encolhendo até poder ser desligado. Em engenharia, esse padrão tem nome: strangler fig, a figueira que cresce em volta da árvore antiga até substituí-la.
Por onde começar
- Pelo módulo que mais dói: o que mais quebra ou mais trava o negócio.
- Ou pelo mais isolado, para o time aprender o processo com pouco risco.
- Sempre com testes e monitoramento antes, para comparar o antigo e o novo.
A pergunta certa
Reescrever ou não raramente é a pergunta certa. A pergunta é: qual parte dói mais, e por onde começar? Respondida essa, o resto vira plano.
Mais do blog
Apresentamos a Grafaze Certifica
Certificados em lote, com a sua marca, que qualquer pessoa consegue conferir. Por enquanto, só para uso interno.
Quanto custa manter um sistema
Construir é uma vez. Manter é todo mês, e esse número precisa vir antes.
Conciliação de PIX e boleto
O que costuma dar errado, e como fazer cada pagamento encontrar sua cobrança sozinho.