reescrita de legado
Modernização de sistemas legados: reescrito e no ar em 30 dias
Tem um servidor no seu prédio que ninguém ousa reiniciar, e todo mundo sabe qual é. Nós o pegamos e reescrevemos em Go, Rust e TypeScript com engenheiros que colocam código em produção há mais de 25 anos. Em 30 dias você está no ar.
Mande a stack hoje. Em 48 horas um engenheiro volta com um preço fechado e uma data de início.
PHP 5.6, um cliente VB6, um núcleo Java que só um notebook consegue compilar e o servidor que ninguém reinicia.
- app.phpPHP 5.6
- legacy.dllVB6
- reports.cfmColdFusion
- crystal reportsunsupported
- ftp-dropplaintext
30 dias, com o sistema antigo atendendo a produção em cada um deles
Go no núcleo, TypeScript na frente, Postgres embaixo e os servidores antigos desligados.
- coreGo
- reportingGo · read replica
- webTypeScript
- transferSFTP · signed
Do seu repositório à produção em 30 dias
- 01dias 1–4
Mapear o sistema inteiro
A plataforma lê cada linha: grafo de chamadas, jobs agendados, interfaces externas e o código morto, medido. No dia 4 você tem um mapa de módulos e um plano com data em cada fase.
- 02dias 3–7
Instalar a costura
Uma fronteira por onde passa o tráfego de produção, para que o código antigo e o novo rodem lado a lado e a gente compare os dois. Os seus usuários não percebem mudança nenhuma.
- 03dias 6–25
Reescrever módulo por módulo
Cada módulo sobe atrás da costura, reexecuta o seu tráfego gravado e assume quando as saídas batem. O seu time continua entregando funcionalidades o tempo todo.
- 04dias 24–30
Desligar o sistema antigo
Apagamos o código antigo, cancelamos as licenças e desligamos os servidores. A partir do dia 30 você mantém um sistema só, e as faturas do antigo param.
A plataforma traduz, os nossos engenheiros decidem
Ler a base inteira e montar o grafo de chamadas
Plataforma
Inclusive o dialeto que ninguém mais suporta e o arquivo que é gerado desde 2009.
Medir o código morto
Plataforma
Alcançabilidade estática mais os seus traces de produção. O que nunca roda é apagado, e o preço cai junto.
Traduzir cada módulo para Go idiomático
Plataforma
Primeira passada da máquina, revisada como pull request e reescrita à mão onde o revisor deixa de acompanhar.
Decidir qual comportamento é bug e qual é regra
Engenheiro
O sistema arredonda do mesmo jeito há doze anos e alguém lá na frente construiu em cima disso. Nós achamos esse alguém.
Bancada de paridade e conciliação de dados
Os dois
Captura, reexecução e conciliação linha a linha ficam com a gente. O seu lado assina quais diferenças são intencionais.
Virada e rollback
Engenheiro
Escolhemos a noite, ficamos de plantão e escrevemos o rollback antes de alguém precisar dele.
Cada módulo passa por um engenheiro sênior antes de receber uma única requisição, então no dia 31 o seu time é dono de um código que consegue ler.
Os melhores engenheiros para este sistema
Os nossos engenheiros colocam código em produção há mais de 25 anos, e são os melhores que você pode pôr neste sistema. Desktops em VB6 e Delphi, Classic ASP e ColdFusion, monólitos em PHP 4, cron jobs em Perl, pacotes PL/SQL, Oracle Forms, Java anterior ao Maven: dezenas de migrações, todas entregues em Go, Rust e TypeScript. O seu dialeto é um que eles já reescreveram.
Preço fechado antes de começar, data de entrada no ar no contrato, e o código é seu. Fase que não atinge paridade no seu próprio tráfego gravado não é aceita.
O que os CTOs perguntam antes de assinar
O meu time pode continuar entregando funcionalidades durante a reescrita?
Sim. As funcionalidades entram no módulo antigo até o dia em que ele é portado, e a bancada de paridade pega qualquer coisa que tenha mudado embaixo de nós. O seu calendário de releases continua como está. Mande a stack hoje, e o plano que volta mostra qual módulo muda em qual dia.
Por que reescrever se dá para refatorar o que temos?
Refatorar mantém o runtime sem suporte, o toolchain que vive numa máquina só e o problema de contratação que vem com os dois. A reescrita tira tudo isso do caminho em 30 dias. Mande a stack hoje e em 48 horas você põe o nosso preço fechado ao lado de mais um ano de remendos.
Código traduzido por máquina vai ser algo que a gente consegue manter?
Sim. Cada módulo é gerado como Go idiomático, revisado como qualquer pull request e reescrito à mão onde o revisor deixa de acompanhar. Os seus engenheiros revisam o primeiro módulo antes de seguirmos. Peça o orçamento e escolha o módulo pelo qual eles vão nos julgar.
O nosso sistema passa bem de um milhão de linhas. Os 30 dias continuam valendo?
Sim. A plataforma lê um milhão de linhas numa passada, e dividimos o trabalho em fases que chegam cada uma numa data. O tamanho muda quantos engenheiros colocamos no projeto. Os 30 dias ficam. Mande hoje a contagem de linhas e receba em 48 horas o plano de fases com preço em cada uma.
Como vocês fecham preço num código que mal viram?
A plataforma mede o tamanho dos módulos, o acoplamento e quanto do código ainda roda, e o preço sai desses números. Engenheiros com mais de 25 anos em produção conferem antes de o valor chegar a você. Mande o sistema hoje e o preço e a data de início estão na sua caixa de entrada em até 48 horas.
Mande o sistema hoje
Conte a stack, o tamanho e a data que está forçando a mudança. Em 48 horas você tem um preço fechado e uma data de início. Em 30 dias o sistema novo roda em produção e o antigo está desligado.
Dez minutos para preencher. Um engenheiro com mais de 25 anos em produção lê e responde.