بنك كبير ينتقل من Java إلى C++: النتائج بعد عام
في بداية عام 2021، اتخذ أحد البنوك الروسية ذات الأهمية النظامية (تشير المصادر إلى "ألفا-بنك") قرارًا جذريًا: استبدال نواة نظام المعاملات عالي التحميل، المكتوب بلغة Java، بكود C++ أصلي. بعد عام من اكتمال عملية الترحيل، شاركت الإدارة النتائج الأولى. الأرقام مثيرة للإعجاب.
وفقًا لتقرير داخلي، ارتفعت أداء الخدمات الحرجة بنسبة 40-60%. انخفض متوسط وقت معالجة المعاملة الواحدة (P99) من 12 مللي ثانية إلى 4.5 مللي ثانية. السبب الرئيسي يُعزى إلى التخلي عن الآلة الافتراضية لجافا (JVM) وجامع القمامة، الذي كان يسبب "تأخيرات" تصل إلى 200 مللي ثانية في أوقات الذروة. "في C++ حصلنا على إدارة حتمية للذاكرة - مما سمح بإزالة 90% من مشاكل التأخير في ساعات الذروة"، نقلت الخدمة الصحفية عن المدير التقني لقسم التطوير.
ومع ذلك، لم يكن الانتقال سهلاً. من بين 120 مطورًا في الفريق، استقال 35 شخصًا لعدم رغبتهم في إعادة التعلم. اضطر البنك إلى توظيف 50 مهندس C++ من سوق التكنولوجيا المالية وألعاب الفيديو، وارتفع متوسط الراتب بنسبة 25%. استغرق الترحيل 14 شهرًا وحوالي 2.3 مليار روبل (بما في ذلك إعادة كتابة الكود والاختبار والتصحيح).
الأثر الاقتصادي: انخفضت التكاليف التشغيلية للبنية التحتية بنسبة 30% - لتقديم نفس حجم المعاملات، تطلب الأمر عددًا أقل من الخوادم بنسبة 40%. من المتوقع أن يسترد المشروع تكاليفه خلال 2.5 سنة. "لن نعيد كتابة كل شيء. الواجهة الأمامية والتطبيقات المحمولة ستبقى على Java/Kotlin. لكن النواة - فقط كود أصلي"، أضاف ممثل البنك في مؤتمر HighLoad++ 2022.
انقسم الخبراء. يعتقد البعض أن C++ مبرر للتداول عالي التردد والحسابات. ويذكر آخرون المخاطر: تسرب الذاكرة وصعوبة صيانة الكود القديم. "Java هي حل وسط بين سرعة التطوير والأداء. اختار البنك سرعة التنفيذ على حساب سرعة التطوير. سنرى ما سيحدث بعد 5 سنوات"، يعلق المحلل الرئيسي في TAdviser.
ومع ذلك، فإن هذه الحالة قيد الدراسة بالفعل من قبل لاعبين آخرين في السوق. وفقًا للشائعات، أطلق كل من سبيربنك و VTB أيضًا مشاريع تجريبية لترحيل بعض الخدمات المصغرة إلى C++ و Rust.