الترحيل إلى Rust
الأنظمة التي لم تعد تثق باللغة التي كُتبت بها، تُنقل إلى Rust، وهي مستمرة في العمل.
التوجّه الإلزامي
في فبراير 2024 دعا مكتب المدير الوطني للأمن السيبراني في البيت الأبيض قطاع التكنولوجيا إلى اعتماد اللغات الآمنة للذاكرة، استنادًا إلى توجيهات من CISA وNSA ووكالات حليفة. وبدأت أطر المشتريات في الحكومات والبنية التحتية الحيوية تشترط خرائط طريق لأمان الذاكرة. الاتجاه محسوم. والسؤال أمام كل مؤسسة تشغّل أنظمة كبيرة بلغات PHP أو C++ أو Java أو Node أو Python هو: هل يُخطَّط الترحيل وفق جدولها الزمني، أم يُفرض عليها وفق جدول غيرها؟
كيف نرحّل من دون توقف
رسم خريطة النظام.
كل خدمة، وكل اعتمادية، وكل تدفق بيانات، وكل مستهلك، موثّقة. تكتشف معظم المؤسسات أنظمة نسيت أنها تملكها.
ترتيب التسلسل.
تُرتَّب الخدمات وفق المخاطر والقيمة ودرجة الترابط. تُختار عملية الترحيل الأولى لإثبات المنهجية، لا لاستعراض البطولة.
نمط Strangler.
توضع خدمات Rust الجديدة بجانب الخدمات القديمة، وتستقبل حركة مرور منسوخة، وتنتج نتائج تُقارن آليًا.
التحقق من التطابق.
لا يتقدم الترحيل إلا حين يتوافق القديم والجديد على حركة مرور التشغيل الحقيقية، مهما استغرق ذلك من وقت.
التحويل، خدمةً واحدة في كل مرة.
تنتقل حركة المرور إلى Rust خلف مفتاح يمكن عكسه في ثوانٍ.
الإيقاف النهائي والتسليم.
تُحال الخدمة القديمة إلى التقاعد، وتكتمل الوثائق، ويكون فريقك قد تدرّب على الخدمة الجديدة.
ما الذي يُرحَّل بنجاح
- أنظمة PHP الأحادية (Laravel وSymfony والقديمة) إلى خدمات Rust خلف بوابة API
- خدمات Node.js التي تعاني مشكلات في الإنتاجية أو الذاكرة
- خدمات Java وC# التي أصبحت فيها تكاليف التراخيص أو الذاكرة أو زمن الاستجابة مشكلة هيكلية
- مكونات C وC++ ذات السجل الحافل بحوادث أمان الذاكرة
- مسارات البيانات والاستدلال المكتوبة بلغة Python حيث تكون Python نفسها عنق الزجاجة
ما نقوله للعملاء بصراحة
ليس كل شيء يجب أن يُنقل.
أداة تقارير يستخدمها أربعة أشخاص في قسم المالية تبقى على PHP. أما مسار الدفع الذي يتعامل مع إيراداتك فلا. خريطة النظام التي نُعدّها في الأسبوع الثاني هي المكان الذي يدور فيه هذا النقاش، وهي أثمن وثيقة في التعاقد.