"SKYLOGIQ" The moon can't shine on its own.
prática carro-chefe

Migração para Rust

Os sistemas que você já não pode confiar à linguagem em que foram escritos, levados para Rust enquanto continuam funcionando.

o mandato

O mandato

Em fevereiro de 2024, o Office of the National Cyber Director da Casa Branca convocou o setor de tecnologia a adotar linguagens com segurança de memória, seguindo orientações da CISA, da NSA e de agências aliadas. Os processos de compra em governo e infraestrutura crítica começam a exigir roadmaps de segurança de memória. A direção está definida. A pergunta para toda organização que mantém sistemas relevantes em PHP, C++, Java, Node ou Python é se a migração será planejada no seu próprio prazo ou imposta no prazo de outra pessoa.

zero downtime

Como migramos sem downtime

gatewayuma chave, reversível em segundos
legacy::servicePHP · Node · Java · C++ · Python
rust::servicetráfego espelhado
parity::verifyantigo == novo com tráfego de produção
cut_over()depois, desativação
  1. Mapeamento do sistema.

    Cada serviço, dependência, fluxo de dados e consumidor, documentado. A maioria das organizações descobre sistemas que tinha esquecido que existiam.

  2. Sequenciamento.

    Serviços classificados por risco, valor e acoplamento. A primeira migração é escolhida para provar o método, não para ser heroica.

  3. Padrão strangler.

    Novos serviços em Rust colocados ao lado dos antigos, recebendo tráfego espelhado e produzindo resultados que são comparados automaticamente.

  4. Verificação de paridade.

    A migração só avança quando o antigo e o novo concordam com tráfego real de produção, pelo tempo que for necessário.

  5. Troca, um serviço por vez.

    O tráfego passa para Rust por trás de uma chave que pode ser revertida em segundos.

  6. Desativação e repasse.

    O serviço antigo é aposentado, a documentação está completa e sua equipe foi treinada no novo.

origem → destino

O que migra bem

  • Monólitos em PHP (Laravel, Symfony, legado) para serviços em Rust atrás de um API gateway
  • Serviços Node.js com problemas de throughput ou de memória
  • Serviços em Java e C# em que os custos de licenciamento, memória ou latência se tornaram estruturais
  • Componentes em C e C++ com histórico de incidentes de segurança de memória
  • Pipelines de dados e de inferência em Python em que o próprio Python é o gargalo
honestidade

O que dizemos aos clientes com honestidade

Nem tudo deve migrar.

Uma ferramenta de relatórios usada por quatro pessoas do financeiro continua em PHP. Um fluxo de pagamento que processa a sua receita, não. O mapa do sistema que produzimos na segunda semana é onde essa conversa acontece, e é o documento mais valioso do projeto.

Os sistemas que fazem sua empresa funcionar devem ser construídos por quem já operou sistemas como eles.

The moon can't shine on its own.