Migration vers Rust
Les systèmes dont le langage d'origine ne vous inspire plus confiance, migrés vers Rust, sans cesser de fonctionner.
L'impératif
En février 2024, l'Office of the National Cyber Director de la Maison-Blanche a appelé l'industrie technologique à adopter des langages à mémoire sûre, dans le prolongement des recommandations de la CISA, de la NSA et d'agences alliées. Les cadres d'achat public et ceux des infrastructures critiques commencent à exiger des feuilles de route de sûreté mémoire. La direction est fixée. La question, pour toute organisation qui exploite des systèmes importants en PHP, C++, Java, Node ou Python, est de savoir si la migration sera planifiée selon son propre calendrier ou imposée selon celui d'un autre.
Comment nous migrons sans interruption de service
Cartographie du système.
Chaque service, dépendance, flux de données et consommateur, documenté. La plupart des organisations découvrent des systèmes qu'elles avaient oubliés.
Séquencement.
Les services sont classés par risque, valeur et couplage. La première migration est choisie pour prouver la méthode, pas pour jouer les héros.
Modèle strangler.
De nouveaux services Rust sont placés à côté des anciens, reçoivent un trafic dupliqué et produisent des résultats comparés automatiquement.
Vérification de parité.
La migration n'avance que lorsque l'ancien et le nouveau concordent sur le trafic réel de production, aussi longtemps que nécessaire.
Bascule, un service à la fois.
Le trafic passe sur Rust derrière un aiguillage réversible en quelques secondes.
Décommissionnement et passation.
L'ancien service est retiré, la documentation est complète et votre équipe a été formée sur le nouveau.
Ce qui se migre bien
- Les monolithes PHP (Laravel, Symfony, code historique) vers des services Rust derrière une passerelle d'API
- Les services Node.js qui ont des problèmes de débit ou de mémoire
- Les services Java et C# dont les coûts de licence, de mémoire ou de latence sont devenus structurels
- Les composants C et C++ ayant un historique d'incidents de sûreté mémoire
- Les pipelines de données et d'inférence Python où Python lui-même est le goulot d'étranglement
Ce que nous disons franchement à nos clients
Tout ne doit pas migrer.
Un outil de reporting utilisé par quatre personnes à la direction financière reste en PHP. Un chemin de paiement qui traite votre chiffre d'affaires, non. La cartographie du système que nous produisons en deuxième semaine est le lieu de cette discussion, et c'est le document le plus précieux de la mission.