Migrare la Rust
Mutăm în Rust sistemele care nu mai pot rămâne în limbajul în care au fost scrise. Fără să le opriți.
Direcția e clară
În februarie 2024, Casa Albă, prin biroul care coordonează securitatea cibernetică la nivel național, a cerut industriei să treacă la limbaje memory-safe, adică limbaje care elimină din start erorile de memorie. Cererea a venit după recomandările CISA, NSA și ale agențiilor aliate. Achizițiile din administrație și din infrastructura critică încep să ceară planuri pentru siguranța memoriei. Direcția e stabilită. Pentru orice organizație cu sisteme importante în PHP, C++, Java, Node sau Python, întrebarea e dacă migrarea se face când decide ea sau când i se impune.
Cum migrăm fără să opriți sistemul
Harta sistemului.
Documentăm fiecare serviciu, dependență, flux de date și cine le folosește. Majoritatea firmelor descoperă sisteme de care uitaseră.
Ordinea.
Ordonăm serviciile după risc, valoare și cât de legate sunt de restul. Prima migrare e aleasă ca să demonstreze metoda, nu ca să impresioneze.
Strangler pattern.
Noile servicii în Rust stau lângă cele vechi, primesc o copie a traficului, iar rezultatele lor sunt comparate automat.
Verificăm că rezultatele sunt identice.
Migrarea merge mai departe doar când vechiul și noul dau aceleași rezultate pe traficul real, oricât ar dura asta.
Trecerea, câte un serviciu pe rând.
Traficul trece pe Rust printr-un comutator care poate fi întors în câteva secunde.
Închidere și predare.
Oprim serviciul vechi, completăm documentația și pregătim echipa voastră să lucreze cu cel nou.
Ce se mută bine în Rust
- Aplicații monolitice în PHP (Laravel, Symfony sau cod mai vechi), împărțite în servicii Rust în spatele unui API gateway
- Servicii Node.js cu probleme de throughput sau de memorie
- Servicii Java și C# la care licențele, memoria sau latența au ajuns să coste constant prea mult
- Componente C și C++ cu un istoric de incidente legate de memorie
- Procesări de date și de inferență în Python, acolo unde chiar Python e gâtul de sticlă
Ce le spunem clienților, sincer
Nu tot trebuie mutat.
Un raport intern folosit de patru oameni de la financiar rămâne în PHP. Fluxul de plăți prin care intră banii voștri, nu. Harta sistemului, gata în a doua săptămână, stă la baza acestei decizii și e cel mai valoros document din tot proiectul.