Migración a Rust
Los sistemas en cuyo lenguaje original ya no puede confiar, trasladados a Rust mientras siguen funcionando.
El mandato
En febrero de 2024 la Oficina del Director Nacional de Ciberseguridad de la Casa Blanca pidió al sector tecnológico que adoptara lenguajes con seguridad de memoria, siguiendo las directrices de CISA, la NSA y agencias aliadas. Los marcos de contratación pública y de infraestructuras críticas empiezan a exigir hojas de ruta de seguridad de memoria. La dirección está decidida. La pregunta para toda organización con sistemas importantes en PHP, C++, Java, Node o Python es si la migración se planifica según su propio calendario o se le impone según el de otros.
Cómo migramos sin tiempo de inactividad
Mapa del sistema.
Cada servicio, dependencia, flujo de datos y consumidor, documentado. La mayoría de las organizaciones descubren sistemas que habían olvidado que tenían.
Secuenciación.
Servicios ordenados por riesgo, valor y acoplamiento. La primera migración se elige para demostrar el método, no para hacer una proeza.
Patrón strangler.
Nuevos servicios en Rust situados junto a los antiguos, que reciben tráfico replicado y producen resultados que se comparan automáticamente.
Verificación de paridad.
La migración solo avanza cuando el sistema antiguo y el nuevo coinciden con tráfico real de producción, durante el tiempo que haga falta.
Transición, un servicio cada vez.
El tráfico pasa a Rust detrás de un interruptor que se puede revertir en segundos.
Retirada y traspaso.
El servicio antiguo se retira, la documentación está completa y su equipo ha recibido formación sobre el nuevo.
Qué migra bien
- Monolitos PHP (Laravel, Symfony, heredados) convertidos en servicios Rust detrás de un API gateway
- Servicios Node.js con problemas de rendimiento o de memoria
- Servicios Java y C# en los que los costes de licencias, memoria o latencia se han vuelto estructurales
- Componentes en C y C++ con un historial de incidentes de seguridad de memoria
- Pipelines de datos e inferencia en Python en los que el propio Python es el cuello de botella
Lo que decimos a los clientes con honestidad
No todo debe migrarse.
Una herramienta de informes que usan cuatro personas en finanzas se queda en PHP. Una ruta de pagos que gestiona sus ingresos, no. El mapa del sistema que elaboramos en la segunda semana es donde se tiene esa conversación, y es el documento más valioso del proyecto.