I / ملاحظات ميدانية
كيف تحدّث منتج React دون الرهان على إعادة كتابة شاملة
إطار تحديث موزون بالمخاطر لاختيار الحدود وإثبات النمط المستهدف وتحسين منتج React تدريجياً مع استمرار تسليم العمل المفيد.
- التحديث التدريجي
- مخاطر التسليم
- عمارة React
تقدم إعادة الكتابة قصة نظيفة: يحمل المنتج الحالي سنوات من القيود، وسيستخدم المنتج الجديد أنماطاً متسقة، ثم يعود تسليم الميزات بعد اكتمال البديل. الخطر هو أن تمول المؤسسة نظامين بينما يعيد الجديد اكتشاف متطلبات مشفرة أصلاً في القديم.
التحديث التدريجي أقل درامية. فهو يستبدل سلسلة من المخاطر المحدودة مع استمرار التسليم المفيد. يحتاج ذلك إلى اتجاه مستهدف واضح، لكنه لا يتطلب الادعاء بأن المنتج كله يستطيع الانتقال دفعة واحدة.
I-01
ابنِ خريطة مخاطر قبل خطة الاستبدال
احصر المناطق التي تسبب احتكاكاً حقيقياً في التسليم، ثم قيّم كلاً منها بأربعة عوامل:
- ضغط التغيير: كم مرة سيمس عمل المنتج هذه المنطقة في أفق التخطيط المقبل؟
- كلفة الفشل: ما الأثر على العميل أو التشغيل أو الأمن أو الإيرادات عند الخطأ؟
- اتساع الاعتماد: كم مساراً أو ميزة أو حزمة أو فريقاً يعتمد عليها؟
- قيمة التعلم: هل يثبت تغييرها نمطاً يستطيع الفريق استعماله في مناطق أخرى؟
غالباً تستحق المناطق عالية التغيير وعالية كلفة الفشل اهتماماً مبكراً. ويزيد اتساع الاعتماد الحاجة إلى حد مضبوط. أما قيمة التعلم فتساعد على اختيار شريحة أولى تعلمنا ما يفيد العمل اللاحق بدلاً من إنشاء جزيرة حديثة منعزلة.
I-02
قرر ما الذي تحتفظ به أو تحتويه أو تستبدله
لا يفرض التحديث معاملة كل الشفرة القديمة بالطريقة نفسها.
احتفظ بما هو مستقر ومفهوم
قد تكون الشفرة قديمة وتظل أصلاً موثوقاً. احتفظ بها عندما يكون سلوكها مفهوماً، وتغييراتها نادرة، وأعطالها محصورة، واعتمادياتها مدعومة. قد لا يحقق تغييرها أي فائدة مهمة للمنتج أو ملكيته.
احتوِ ما هو ضروري لكن تغييره محفوف بالمخاطر
ضع المزودين غير المستقرين أو الحالة القديمة أو واجهات API الصعبة خلف محول واضح. يمنح الاحتواء العمل الجديد عقداً أنظف ويشتري وقتاً لفهم السلوك القديم. لكنه لا يفيد إلا عندما يملك شخص واضح ذلك الحد وتبقى طبقة التوافق المؤقتة مرئية.
استبدل ما يعيق التغيير القيّم المتكرر
استبدل المنطقة عندما تتغير باستمرار، ويصعب التحقق منها، وتتسبب في مخاطر متكررة أثناء التسليم أو في الإنتاج. ابدأ من حد يستطيع عنده السلوكان القديم والجديد التعايش مدة تكفي للمقارنة والاستعادة الآمنة.
I-03
حدّث شريحة عمودية واحدة في كل مرة
تتبع الشريحة المضبوطة تسلسلاً قابلاً للتكرار:
- وصف السلوك الحالي، بما في ذلك التحميل والفراغ والفشل والصلاحية والاستعادة.
- إضافة الحد الأدنى من الحماية القادرة على كشف تغير السلوك غير المقصود.
- تحديد الحد المستهدف والعقد بين الشفرة القديمة والجديدة.
- تنفيذ مسار منتج كامل عبر النمط المستهدف.
- إطلاقه مع إشارات نجاح وفشل قابلة للرصد.
- تسجيل ما أثبتته الشريحة ثم تعديل الشريحة التالية قبل التكرار.
يجب أن تكون الشريحة ذات معنى تجاري يكفي لاختبار العمارة، وصغيرة بما يكفي للتراجع عنها. نادراً ما تعطي الهجرة مجلداً بعد مجلد هذه التغذية الراجعة، لأنها تعيد ترتيب الطبقات التقنية من دون إكمال نتيجة للمستخدم أو التشغيل.
I-04
اضبط عدد الاتفاقيات المتوازية
ينشئ العمل التدريجي مؤقتاً طريقتين لتنفيذ الشيء نفسه. هذا مقبول عندما يكون الانتقال واضحاً، لكنه يصبح مكلفاً عندما تنتشر الطريقتان معاً.
حدد لكل نمط مستهدف أين يصبح إلزامياً، وأين يبقى النهج القديم مسموحاً مؤقتاً، وما الذي ينهي هذا الاستثناء. يجب أن تمنع المراجعات أي استعمال قديم جديد داخل الحد المختار مع إبقاء المناطق غير المرتبطة مستقرة.
تتبع لوحة تحديث مفيدة الحدود لا الطموحات التقنية الواسعة: الخطر الحالي، والعقد المستهدف، والشريحة الأولى، ودليل الإصدار، ومن بقي يعتمد على المسار القديم، والمطور القادر على امتلاك الخطوة التالية.
I-05
قِس التقدم بانخفاض عدم اليقين
تصف الأسطر المعاد كتابتها والحزم المحدثة نشاطاً، لا قيمة التحديث. تسأل المؤشرات الأفضل هل يستطيع المنتج والفريق التغيير بمخاطر أقل:
- عدد أقل من الميزات كثيرة التغيير يعتمد مباشرة على الحد القديم.
- صمد النمط المستهدف في مسار إنتاج حقيقي وسيناريو فشل.
- يستطيع الفريق تنفيذ الشريحة التالية من دون الاعتماد على صاحب النمط الأول.
- تتناقص الاتفاقيات المكررة بدلاً من أن تتكاثر.
- تغطي الاعتماديات المدعومة وإشارات التشغيل المنطقة التي يجري تغييرها.
- يستمر تسليم المنتج من دون اختناق متزايد عند الدمج أو الإصدار.
تجعل هذه الإشارات نقطة التوقف مرئية. يمكن أن ينتهي برنامج التحديث عندما تصبح المناطق القديمة المتبقية مستقرة ومحتواة وأقل كلفة في الاحتفاظ بها من استبدالها. الاكتمال ليس الهدف؛ القدرة المستدامة على التغيير هي الهدف.
I-06
أين يندرج هذا النهج؟
تحول مهمة Modernize Without Rewriting هذا الإطار إلى عمل متسلسل: تحديد الحدود المكلفة، وإثبات نمط مستهدف، ونقل شرائح ذات قيمة، وتسليم النهج إلى الفريق الذي سيواصل تطوير المنتج.
استكشف Modernize Without Rewriting