حدّث النظام الذي يعمل عليه نشاطك، جزءاً بعد جزء.
نستلم الأنظمة القائمة، ونفهم كيف تعمل فعلاً، ثم نستبدل الأجزاء الضعيفة بخطوات صغيرة ومختبرة. يبقى النظام القديم يعمل بينما تتولى الأجزاء الجديدة مهامها، فلا يتوقف العمل ولا يُراهَن بكل شيء على تحويل واحد كبير.
التراجع جاهز
مع كل عملية تحويل
مقارنة
نتائج القديم والجديد جنباً إلى جنب
خطوة بخطوة
بلا تحويل شامل دفعة واحدة
ضبط الفهارس واتصالات قاعدة البيانات بناءً على خطط الاستعلامات الفعلية.
نجرّب عمليات الترحيل على نسخة من بيئة الإنتاج قبل تشغيلها.
- استبدال تدريجي: يبقى النظام القديم في الخدمة بينما تتولى الأجزاء الجديدة المهام، منطقة بعد منطقة.
- تشغيل متوازٍ: يعمل الكود الجديد بجانب القديم، ونقارن نتائجهما قبل إطلاقه.
- تحويل قابل للتراجع: العودة إلى النظام القديم مجرد تغيير في الإعدادات، نجرّبه قبل التحويل.
علامات تدل على أن النظام يحتاج إلى عناية.
نادراً ما تنهار الأنظمة القديمة دفعة واحدة. تبطؤ الإصدارات، وتضعف قاعدة البيانات، وتقل ثقة الفريق في الكود شهراً بعد شهر.
كل إصدار مخاطرة
الإصلاح الصغير يحتاج إلى اجتماع وقائمة اختبار يدوية وشخص يراقب بيئة الإنتاج بعده. ومن دون اختبارات موثوقة، يكسر تغيير في مكان شيئاً في مكان آخر دون أن يلاحظ أحد.
قاعدة البيانات تبطؤ في أوقات الذروة
الجداول تجاوزت فهارسها، والكود ينفّذ استعلامات أكثر بكثير مما يلزم، والسجلات تنمو بلا حد. في أوقات الضغط تتعطل المعاملات الأساسية بسبب الأقفال، وتنتقل مهلات الانتظار إلى المهام الخلفية.
الخدمات الخارجية تعطّل شاشاتك
بوابات الدفع ومزامنة أنظمة ERP وواجهات API الخاصة بالموردين الآخرين تُستدعى والمستخدم ينتظر. تأخير قصير من جهتهم يصبح خطأً من جهتك.
قلة فقط تفهم النظام
تجهيز المشروع على جهاز جديد يعتمد على خطوات لم يكتبها أحد. وأفضل مهندسيك يقضون وقتهم في فك تشابك الكود القديم بدل بناء ما يحتاجه العمل.
كيف نحدّث النظام، في خمس خطوات.
لا نوقف النظام لنعيد بناءه. نضع أمامه بوابة أمامية، وننقل منطقة واحدة في كل مرة إلى كود جديد، ونقارن الجديد بالقديم، ثم نزيل ما لم يعد مستخدماً.
من أين نبدأ عادةً.
قاعدة البيانات ونموذج البيانات
تعديل الأعمدة دون توقف، وفهارس أفضل، وتقسيم جداول السجلات الكبيرة جداً، وإزالة الكود الذي ينفّذ استعلاماً لكل صف.
- • تعديل المخطط دون إيقاف النظام
- • تجميع الاتصالات (PgBouncer)
- • نسخ للقراءة مخصصة للتقارير
الخوادم والاستضافة
استبدال الخوادم المُعدّة يدوياً التي لا يجرؤ أحد على لمسها بحاويات أو خدمات مُدارة، تُبنى من الكود ويمكن إعادة إنشائها في أي وقت.
- • البنية التحتية ككود (Terraform)
- • بيئة معاينة لكل تغيير
- • توسّع حسب الطلب
الواجهة الأمامية
نقل الصفحات القديمة المولّدة على الخادم وكود jQuery إلى واجهة أمامية حديثة ومحددة الأنواع، شاشة بعد شاشة، مع نظام تصميم مشترك.
- • ترحيل شاشة بعد شاشة
- • عناصر تصميم مشتركة (design tokens)
- • عقود API محددة الأنواع
الإصدارات والاختبارات الآلية
استبدال قوائم الإصدار اليدوية بمسارات آلية تختبر كل تغيير قبل إطلاقه، وإصلاح الاختبارات غير المستقرة بدل تجاهلها.
- • اختبارات Playwright السريعة
- • بيانات اختبار قابلة للتكرار
- • إطلاق تدريجي
لماذا نادراً ما ننصح بالبدء من الصفر.
النظام القديم ليس مجرد كود قديم. فيه سنوات من الحالات الخاصة، وحلول التفافية لقواعد عمل حقيقية، وعادات يعتمد عليها عملاؤك ولم يوثّقها أحد.
إعادة الكتابة الكاملة تعني غالباً فترة طويلة لا يصل فيها شيء جديد إلى مستخدميك، مع خطر أن يغفل النظام الجديد ما كان القديم يعالجه بصمت. نحن نُبقي العمل مستمراً ونحسّن النظام على خطوات.
إعادة الكتابة الكاملة
نظام ثانٍ يُبنى بالتوازي، ويُبعد أفضل مهندسيك عن عمل العملاء حتى يكتمل.
- فترة طويلة بلا مزايا جديدة للعملاء
- النطاق يتّسع باستمرار والمشاريع تُلغى
- يوم تحويل كبير تظهر فيه الحالات الخاصة المنسية
- فريقان يسحبان في اتجاهين مختلفين
الاستبدال التدريجي
نستبدل منطقة واحدة واضحة الحدود في كل مرة، ونطلق تغييرات تعمل فعلاً في نهاية كل دورة مدتها أسبوعان.
- تصل التحسينات إلى المستخدمين الفعليين في كل دورة
- يستمر العمل، والعودة إلى القديم ممكنة دائماً
- يعمل القديم والجديد جنباً إلى جنب حتى تتطابق النتائج
- يعمل مهندسوك معنا ويتعلمون الأجزاء الجديدة
أسئلة عن التحديث.
إجابات واضحة عن طريقة تعاملنا مع أنظمة حقيقية في الإنتاج، ومنها الأنظمة التي لا اختبارات لها ولا توثيق.
كيف تتجنبون توقف النظام أثناء الترحيل؟
هل يستطيع فريقنا مواصلة بناء المزايا أثناء التحديث؟
نظامنا بلا توثيق وبلا اختبارات. هل هذه مشكلة؟
كم يستغرق مشروع التحديث؟
هل يبطئ نظام قديم نشاطك؟
تحدّث مباشرة مع مهندسين ذوي خبرة. نراجع الكود والبيانات والاستضافة بموجب اتفاقية عدم إفصاح (NDA)، ونحدد نقاط الاختناق، ونقدّم لك خطة خطوة بخطوة لتحديث النظام أو استلامه.