تُعد Go هدفًا عمليًا لترحيل COBOL عندما تكون البساطة وسرعة البناء وسهولة النشر أهم من وجود منظومة أطر عمل مؤسسية ضخمة. فهي تُترجَم إلى ملف تنفيذي ثابت واحد بلا تبعيات وقت تشغيل، وتعمل في أي مكان، ونموذج التزامن المدمج فيها يناسب بشكل طبيعي تحديث المعالجة الدفعية في COBOL إلى أحمال عمل متوازية.
يوضح هذا الدليل ما ينطوي عليه فعليًا ترحيل COBOL إلى Go، والأساليب المتاحة للمؤسسات في المملكة المتحدة، وتكلفته، ومسألة الدقة الوحيدة التي يجب أن تخطط لها منذ البداية.
الخلاصة
- تناسب Go عمليات ترحيل COBOL التي تُقدّر البساطة والترجمة السريعة والنشر بملف ثنائي واحد والتزامن السهل على حزمة أطر عمل مؤسسية ثقيلة
- لا تملك Go نوعًا عشريًا أصليًا: تُعيَّن حقول packed-decimal في COBOL (
COMP-3) افتراضيًا إلىfloat64، لذا تحتاج الحسابات المالية إلى مكتبة عشرية مثلshopspring/decimal - تحمل الأساليب الثلاثة الرئيسية (التحويل الآلي، وإعادة الكتابة المتوازية، والترحيل التدريجي «strangler fig») ملفات مخاطر وتكلفة مختلفة
- يكلّف الترحيل متوسط الحجم عادةً من 200,000 إلى 800,000 جنيه إسترليني ويستغرق من سنة إلى سنتين؛ ويُعد قرار الدقة العشرية وطبقة الوصول إلى البيانات من بنود التخطيط الحرجة
لماذا تختار Go لترحيل COBOL
Go ليست أكبر منظومة مؤسسية، لكنها لغة مدروسة ومركّزة تناسب جيدًا بعض عمليات تحديث COBOL:
البساطة وسهولة القراءة. تملك Go مجموعة ميزات صغيرة ومتسقة. يبقى منطق COBOL المُترجَم مقروءًا، ويصبح أعضاء الفريق الجدد منتجين بسرعة، مما يقلل مخاطر الصيانة طويلة الأمد.
النشر بملف ثنائي واحد. تُترجَم Go إلى ملف تنفيذي واحد قائم بذاته بلا وقت تشغيل يُثبَّت. بالنسبة للفرق المنتقلة من الحاسوب المركزي إلى خوادم Linux أو الحاويات، يصبح النشر بسيطًا للغاية.
التزامن المدمج. تجعل goroutines والقنوات من السهل موازاة المعالجة الدفعية التسلسلية سجلًا بسجل التي تهيمن على أنظمة COBOL. غالبًا ما يمكن إعادة هيكلة مهمة دفعية ليلية كانت تعمل تسلسليًا على الحاسوب المركزي لمعالجة الأقسام بشكل متزامن.
الترجمة السريعة والملاءمة السحابية الأصلية. تناسب عمليات البناء السريعة في Go وصور الحاويات الصغيرة أنظمة CI/CD الحديثة والنشر السحابي على Azure أو AWS أو GCP.
قرار الدقة العشرية الذي يجب اتخاذه مبكرًا
هذه أهم نقطة تخطيط في ترحيل COBOL إلى Go. تحتوي حقول COBOL من نوع PIC 9 وCOMP-3 على قيم عشرية دقيقة بالأساس 10، وهو ما تعتمد عليه الأنظمة المالية. لا تملك Go أي نوع عشري أصلي. التعيين الافتراضي لحقل عشري هو float64، الذي يستخدم الفاصلة العائمة الثنائية IEEE 754 وقد يُدخل أخطاء تقريب في الحسابات النقدية.
بالنسبة لأي منطق مالي أو حساس للأرقام العشرية، النهج الصحيح هو استخدام حزمة عشرية مثل shopspring/decimal
بدلًا من float64. يجعل المحوِّل الجيد هذا القرار مرئيًا بدلًا من أن يكون صامتًا: أداة Mecanik لترحيل COBOL إلى Go
تعيّن الحقول العشرية إلى float64 افتراضيًا، لكنها تعلّم كل واحد منها في تقريرها Migration Report، حتى تتمكن من تحديد حقلًا بحقل أين تكون الحسابات العشرية الدقيقة مطلوبة. لا تُطلق أبدًا شيفرة نقدية على float64 دون تلك المراجعة. إذا كانت الدقة العشرية الدقيقة دون أي مكتبة إضافية أولوية، فقد تكون C#
(نوع decimal الأصلي) أو Java
(نوع BigDecimal) خيارًا أفضل.
بُنى COBOL التي تحتاج إلى ترجمة حقيقية
يترجم الترحيل الآمن دلالات COBOL إلى Go اصطلاحية، لا النص:
- عناصر المجموعة (تسلسلات هرمية من المستوى 01-49) تصبح أنواع
structفي Go بحقول مُصدَّرة بأسلوب PascalCase (يصبحACCOUNT-BALANCEهوAccountBalance). - عبارات
PICتُعيَّن إلى نوع Go الصحيح:stringللأبجدي الرقمي، وint16/int32/int64للعددي حسب عدد الأرقام، وfloat64(أو حزمة عشرية) للحقول العشرية. - نطاقات
PERFORMتصبح استدعاءات دوال؛ وتتحلل الفقرات والأقسام إلى دوال. EVALUATE/WHENتُعيَّن إلى عباراتswitch.COPYوREPLACE(دفاتر النسخ) يجب حلّها، بما في ذلك دفاتر النسخ المتداخلة.EXEC SQL(DB2) وEXEC CICSوVSAM تحتاج إلى إعادة تصميم علىdatabase/sqlأوsqlxأو أداة ORM مثل GORM في Go، وعلى أنماط خدمات حديثة.- ترميز EBCDIC والتخطيطات ثابتة العرض تحتاج إلى تحويل صريح إلى Unicode ونماذج مُنمَّطة، عادةً باستخدام إدخال/إخراج مُخزَّن مؤقتًا (
bufio).
أساليب الترحيل
توجد ثلاثة أساليب رئيسية، لكلٍّ منها ملف مخاطر وتكلفة مختلف.
1. التحويل الآلي
تُحلّل الأدوات COBOL وتولّد Go ببنية حزم وبُنى مُنمَّطة وأعداد صحيحة محددة الحجم وإدخال/إخراج ملفات مُخزَّن مؤقتًا. تزيل العمل الميكانيكي بسرعة. لكنها لا تتخذ القرارات المعمارية نيابةً عنك.
الأفضل لـ: قواعد الشيفرة الكبيرة حيث تكون الأولوية للتخلص من الاعتماد على COBOL بسرعة.
المخاطر: تحتاج الحقول العشرية وSQL المضمَّن وتفاعلات CICS والاستدعاءات الديناميكية جميعها إلى مراجعة بشرية. ووجود Migration Report هو تحديدًا لإبراز هذه العناصر.
2. إعادة الكتابة المتوازية
يعمل نظام Go جنبًا إلى جنب مع نظام COBOL، ويعالج كلاهما المدخلات ذاتها، مع التحقق من المخرجات كل تجاه الآخر حتى ينجح Go ويُوقَف تشغيل COBOL.
الأفضل لـ: الأنظمة الحرجة للمهام حيث لا يمكن المخاطرة بالاستمرارية.
المخاطر: يضاعف تشغيل نظامين بالتوازي التكلفة التشغيلية أثناء الترحيل ويتطلب تسوية منضبطة.
3. الترحيل التدريجي (Strangler Fig)
تُستبدل برامج COBOL بمكافئات Go واحدًا تلو الآخر. يصبح النظام هجينًا، ثم في النهاية Go خالصة.
الأفضل لـ: أنظمة COBOL الأحادية الكبيرة حيث تكون إعادة الكتابة الكاملة غير عملية.
المخاطر: قد تستمر الحالة الهجينة لفترة أطول من المخطط لها وتتطلب تصميم واجهات دقيقًا.
بالنسبة لمعظم عمليات الترحيل في المملكة المتحدة، يوفر أسلوب strangler fig مقترنًا بتحويل آلي انتقائي أفضل توازن بين المخاطر والسرعة.
تكاليف ترحيل COBOL إلى Go في المملكة المتحدة
تعتمد التكلفة بشدة على حجم قاعدة الشيفرة وتعقيدها والأسلوب المتبع. نطاقات إرشادية لمشاريع المؤسسات في المملكة المتحدة:
| حجم النظام | الأسلوب | التكلفة التقديرية |
|---|---|---|
| صغير (أقل من 50,000 سطر) | إعادة الكتابة المتوازية | 80,000 إلى 200,000 جنيه |
| متوسط (50,000 إلى 500,000 سطر) | Strangler fig | 200,000 إلى 800,000 جنيه |
| كبير (أكثر من 500,000 سطر) | آلي + إعادة هيكلة تدريجية | 500,000 إلى 2,000,000+ جنيه |
| إيقاف حاسوب مركزي قديم | برنامج كامل | 1,000,000 إلى 10,000,000+ جنيه |
تغطي هذه الأرقام التحليل والترحيل والاختبار ودعم الإطلاق. وهي تستثني التكاليف التشغيلية المستمرة والتدريب وأعمال التكامل النهائية التي تظهر غالبًا في منتصف المشروع.
تتخصص خدمة Mecanik لترحيل COBOL إلى Go في عمليات ترحيل المؤسسات بالمملكة المتحدة، وتغطي التقييم والتحويل وتنفيذ طبقة الوصول إلى البيانات واختبار تكافؤ المخرجات. وبالنسبة للمؤسسات التي توازن بين اللغات المستهدفة، تعرض نظرة عامة على ترحيل COBOL النطاق الكامل بما في ذلك C# وJava وPython وC++ وRust. وبالنسبة لعمليات الترحيل من IBM z/OS، تغطي خدمة ترحيل الحاسوب المركزي القديم إيقاف البنية التحتية إلى جانب ترحيل الشيفرة.
المخاطر الرئيسية وكيفية إدارتها
الدقة العشرية. المخاطرة المحوّرية لترحيل Go. راجع كل حقل مُعيَّن إلى float64 مُعلَّم في Migration Report وحوّل الحقول المالية إلى حزمة عشرية قبل الإطلاق.
منطق الأعمال غير الموثّق. عقود من قواعد الأعمال المضمَّنة دون توثيق خارجي. يُعد الاكتشاف والتوثيق الجزء الأكثر استهلاكًا للوقت والأكثر خطورة في أي عملية ترحيل.
طبقة الوصول إلى البيانات. يجب إعادة تصميم EXEC SQL مقابل DB2 ومعالجة VSAM على database/sql أو أداة ORM. غالبًا ما يكون هذا أكبر بند عمل منفرد.
الأداء والتزامن. تؤدي Go أداءً جيدًا ويمكن أن يتفوق تزامنها على معالجة COBOL الدفعية التسلسلية، لكن إعادة هيكلة المنطق التسلسلي إلى أحمال عمل متوازية يجب أن تحافظ على ضمانات الترتيب والصحة.
تغطية اختبار الانحدار. أثبت أن مخرجات Go تطابق مخرجات COBOL عبر اختبار انحدار شامل على بيانات حقيقية (مجهولة الهوية)، مع إيلاء اهتمام خاص للحسابات الحساسة للأرقام العشرية. ابنِ مجموعة الاختبارات قبل بدء الترحيل.
مخاطر التحوّل. يُعد وجود خطة تحوّل مفصلة مع التراجع والتسوية أمرًا إلزاميًا.
النقاط الرئيسية
- تناسب Go عمليات ترحيل COBOL التي تعطي الأولوية للبساطة والنشر بملف ثنائي واحد والتزامن.
- لا تملك Go نوعًا عشريًا أصليًا؛ خطط لقرار
float64مقابل مكتبة عشرية لكل حقل مالي منذ البداية. - تستخدم معظم مشاريع المؤسسات في المملكة المتحدة أسلوب strangler fig مع أتمتة انتقائية.
- أكبر المخاطر هي الدقة العشرية ومنطق الأعمال غير الموثّق وطبقة الوصول إلى البيانات.
الأسئلة الشائعة (FAQ)
لماذا نختار Go بدلًا من Java أو C# لترحيل COBOL؟ اختر Go من أجل البساطة والترجمة السريعة والنشر بملف ثنائي واحد والتزامن المدمج لموازاة العمل الدفعي. اختر Java أو C# عندما تحتاج إلى منظومة أطر عمل مؤسسية أكبر أو دعم عشري أصلي/مكتبي مع مراجعة يدوية أقل.
كيف تتعامل Go مع حقول packed-decimal في COBOL؟
لا تملك Go نوعًا عشريًا أصليًا، لذا تُعيَّن الحقول العشرية افتراضيًا إلى float64، مما قد يُدخل تقريبًا في الحسابات المالية. يعلّم المحوِّل الجيد كل حقل عشري حتى تتمكن من استبدال float64 بحزمة مثل shopspring/decimal حيث تكون الحسابات الدقيقة مطلوبة.
هل يمكن تحويل منطق COBOL إلى Go تلقائيًا؟ نعم، بالأدوات. يُنتج المحوِّل الجيد Go قائمة على الحزم ببُنى مُنمَّطة وأعداد صحيحة محددة الحجم وإدخال/إخراج مُخزَّن مؤقتًا، ويعلّم SQL المضمَّن وتفاعلات CICS والاستدعاءات الديناميكية والحقول ذات الدقة العشرية للعمل اليدوي. وتبقى القرارات المعمارية مهامًا بشرية.
ماذا يحدث لصيغ بيانات COBOL مثل COMP-3 وEBCDIC؟
تُعيَّن COMP-3 إلى float64 افتراضيًا (تُراجَع لاحتياجات الدقة العشرية). ويتطلب نص EBCDIC والتخطيطات ثابتة العرض تحويلًا صريحًا إلى Unicode ونماذج مُنمَّطة، مُختبَرة مقابل بيانات حقيقية قبل الاستخدام في الإنتاج.
كم يستغرق ترحيل COBOL إلى Go؟ تستغرق الأنظمة الصغيرة الموثّقة جيدًا من ثلاثة إلى تسعة أشهر. وتستمر أنظمة المؤسسات المتوسطة من اثني عشر إلى أربعة وعشرين شهرًا. ويمكن أن تستغرق برامج الحاسوب المركزي الكبيرة من ثلاث إلى خمس سنوات للإيقاف الكامل.
التعليقات