حدّث النظام الذي يعمل عليه نشاطك، جزءاً بعد جزء.

نستلم الأنظمة القائمة، ونفهم كيف تعمل فعلاً، ثم نستبدل الأجزاء الضعيفة بخطوات صغيرة ومختبرة. يبقى النظام القديم يعمل بينما تتولى الأجزاء الجديدة مهامها، فلا يتوقف العمل ولا يُراهَن بكل شيء على تحويل واحد كبير.

التراجع جاهز

مع كل عملية تحويل

مقارنة

نتائج القديم والجديد جنباً إلى جنب

خطوة بخطوة

بلا تحويل شامل دفعة واحدة

الاستبدال التدريجي عملياًكيف تنتقل حركة الطلبات أثناء الترحيل
مخطط النظامبوابة أمامية فوق النظام القديم
المستخدمون / التطبيقالويب · التطبيقHTTPSبوابة APIنقطة دخول واحدةالخدمات الجديدةتسجيل الدخول والفوترةTypeScript + Postgresالنظام القائمدون تغيير، ويخدم بقية الطلبات
المسار الجديدالمسار القديم
سرعة الاستعلامات

ضبط الفهارس واتصالات قاعدة البيانات بناءً على خطط الاستعلامات الفعلية.

فحص البيانات

نجرّب عمليات الترحيل على نسخة من بيئة الإنتاج قبل تشغيلها.

قواعد الأمان
  • استبدال تدريجي: يبقى النظام القديم في الخدمة بينما تتولى الأجزاء الجديدة المهام، منطقة بعد منطقة.
  • تشغيل متوازٍ: يعمل الكود الجديد بجانب القديم، ونقارن نتائجهما قبل إطلاقه.
  • تحويل قابل للتراجع: العودة إلى النظام القديم مجرد تغيير في الإعدادات، نجرّبه قبل التحويل.
علامات تستحق الانتباه

علامات تدل على أن النظام يحتاج إلى عناية.

نادراً ما تنهار الأنظمة القديمة دفعة واحدة. تبطؤ الإصدارات، وتضعف قاعدة البيانات، وتقل ثقة الفريق في الكود شهراً بعد شهر.

العلامة 01إصدارات بطيئة

كل إصدار مخاطرة

الإصلاح الصغير يحتاج إلى اجتماع وقائمة اختبار يدوية وشخص يراقب بيئة الإنتاج بعده. ومن دون اختبارات موثوقة، يكسر تغيير في مكان شيئاً في مكان آخر دون أن يلاحظ أحد.

العلامة 02ضغط على قاعدة البيانات

قاعدة البيانات تبطؤ في أوقات الذروة

الجداول تجاوزت فهارسها، والكود ينفّذ استعلامات أكثر بكثير مما يلزم، والسجلات تنمو بلا حد. في أوقات الضغط تتعطل المعاملات الأساسية بسبب الأقفال، وتنتقل مهلات الانتظار إلى المهام الخلفية.

العلامة 03تكاملات هشّة

الخدمات الخارجية تعطّل شاشاتك

بوابات الدفع ومزامنة أنظمة ERP وواجهات API الخاصة بالموردين الآخرين تُستدعى والمستخدم ينتظر. تأخير قصير من جهتهم يصبح خطأً من جهتك.

العلامة 04خطر ضياع المعرفة

قلة فقط تفهم النظام

تجهيز المشروع على جهاز جديد يعتمد على خطوات لم يكتبها أحد. وأفضل مهندسيك يقضون وقتهم في فك تشابك الكود القديم بدل بناء ما يحتاجه العمل.

الاستبدال التدريجي

كيف نحدّث النظام، في خمس خطوات.

لا نوقف النظام لنعيد بناءه. نضع أمامه بوابة أمامية، وننقل منطقة واحدة في كل مرة إلى كود جديد، ونقارن الجديد بالقديم، ثم نزيل ما لم يعد مستخدماً.

01
الخطوة 01: الرؤية أولاً

نقيس قبل أن نغيّر

قبل تغيير أي كود، نضيف التتبّع والسجلات وتقارير الأخطاء. نتعلم كيف يعمل النظام فعلاً، ونوثّق قواعد العمل التي لم يوثّقها أحد، ونضيف اختبارات تثبّت سلوكه الحالي.
02
الخطوة 02: مدخل واحد

نضع بوابة في الأمام

نضع بوابة أمام الخادم القائم بعقود API واضحة وموثّقة. تتعامل التطبيقات والشركاء مع البوابة فقط، فنستطيع تغيير ما خلفها دون أن يتعطل شيء عندهم.
03
الخطوة 03: الاستبدال

ننقل منطقة واحدة في كل مرة

الأجزاء الأكثر إزعاجاً، مثل الفوترة أو تسجيل الدخول، نعيد بناءها كخدمات مركّزة. تمر الحركة الحقيقية عبر القديم والجديد معاً، ونقارن النتائج حتى تتطابق.
04
الخطوة 04: البيانات

ننقل البيانات بأمان

تُنسخ التغييرات إلى قاعدة البيانات الجديدة لحظة حدوثها، وتتحقق فحوص خلفية من تطابق السجلات. يتم التحويل النهائي عند البوابة، ويمكننا العودة فوراً.
05
الخطوة 05: التنظيف

نزيل الأجزاء القديمة

عندما تعمل منطقة على الكود الجديد، نحذف المسارات القديمة والجداول غير المستخدمة، ونضيف فحوصاً آلية حتى لا تعود المشكلات نفسها.
ما نعمل عليه

من أين نبدأ عادةً.

قاعدة البيانات ونموذج البيانات

تعديل الأعمدة دون توقف، وفهارس أفضل، وتقسيم جداول السجلات الكبيرة جداً، وإزالة الكود الذي ينفّذ استعلاماً لكل صف.

  • • تعديل المخطط دون إيقاف النظام
  • • تجميع الاتصالات (PgBouncer)
  • • نسخ للقراءة مخصصة للتقارير

الخوادم والاستضافة

استبدال الخوادم المُعدّة يدوياً التي لا يجرؤ أحد على لمسها بحاويات أو خدمات مُدارة، تُبنى من الكود ويمكن إعادة إنشائها في أي وقت.

  • • البنية التحتية ككود (Terraform)
  • • بيئة معاينة لكل تغيير
  • • توسّع حسب الطلب

الواجهة الأمامية

نقل الصفحات القديمة المولّدة على الخادم وكود jQuery إلى واجهة أمامية حديثة ومحددة الأنواع، شاشة بعد شاشة، مع نظام تصميم مشترك.

  • • ترحيل شاشة بعد شاشة
  • • عناصر تصميم مشتركة (design tokens)
  • • عقود API محددة الأنواع

الإصدارات والاختبارات الآلية

استبدال قوائم الإصدار اليدوية بمسارات آلية تختبر كل تغيير قبل إطلاقه، وإصلاح الاختبارات غير المستقرة بدل تجاهلها.

  • • اختبارات Playwright السريعة
  • • بيانات اختبار قابلة للتكرار
  • • إطلاق تدريجي
رأينا

لماذا نادراً ما ننصح بالبدء من الصفر.

النظام القديم ليس مجرد كود قديم. فيه سنوات من الحالات الخاصة، وحلول التفافية لقواعد عمل حقيقية، وعادات يعتمد عليها عملاؤك ولم يوثّقها أحد.

إعادة الكتابة الكاملة تعني غالباً فترة طويلة لا يصل فيها شيء جديد إلى مستخدميك، مع خطر أن يغفل النظام الجديد ما كان القديم يعالجه بصمت. نحن نُبقي العمل مستمراً ونحسّن النظام على خطوات.

المسار الخطِرمخاطرة عالية

إعادة الكتابة الكاملة

نظام ثانٍ يُبنى بالتوازي، ويُبعد أفضل مهندسيك عن عمل العملاء حتى يكتمل.

  • فترة طويلة بلا مزايا جديدة للعملاء
  • النطاق يتّسع باستمرار والمشاريع تُلغى
  • يوم تحويل كبير تظهر فيه الحالات الخاصة المنسية
  • فريقان يسحبان في اتجاهين مختلفين
كيف نعملمتوقَّع

الاستبدال التدريجي

نستبدل منطقة واحدة واضحة الحدود في كل مرة، ونطلق تغييرات تعمل فعلاً في نهاية كل دورة مدتها أسبوعان.

  • تصل التحسينات إلى المستخدمين الفعليين في كل دورة
  • يستمر العمل، والعودة إلى القديم ممكنة دائماً
  • يعمل القديم والجديد جنباً إلى جنب حتى تتطابق النتائج
  • يعمل مهندسوك معنا ويتعلمون الأجزاء الجديدة
إجابات مباشرة

أسئلة عن التحديث.

إجابات واضحة عن طريقة تعاملنا مع أنظمة حقيقية في الإنتاج، ومنها الأنظمة التي لا اختبارات لها ولا توثيق.

كيف تتجنبون توقف النظام أثناء الترحيل؟
يعمل القديم والجديد في الوقت نفسه. تُكتب البيانات في الاثنين، وتُنسخ التغييرات لحظة حدوثها، ونقارن النتائج. التحويل مجرد تغيير في إعدادات البوابة، ونعود تلقائياً إلى القديم إذا تجاوزت أزمنة الاستجابة الحدود المتفق عليها.
هل يستطيع فريقنا مواصلة بناء المزايا أثناء التحديث؟
نعم. يجب ألا يوقف التحديث العمل الذي يدرّ المال. نضع المناطق التي نستبدلها خلف واجهات واضحة، فيواصل مطوروك الإطلاق بجدولهم المعتاد دون أن يتعارض عملهم مع تغييراتنا.
نظامنا بلا توثيق وبلا اختبارات. هل هذه مشكلة؟
هذا شائع. بدل التخمين من مستندات قديمة، نضيف التتبّع إلى النظام أثناء عمله، ونسجّل المدخلات والمخرجات الحقيقية، ونحوّلها إلى اختبارات تصف سلوكه اليوم.
كم يستغرق مشروع التحديث؟
يعتمد ذلك على النظام. نبدأ بمراجعة قصيرة للكود والبيانات والاستضافة، ثم نخطط العمل في دورات مدتها أسبوعان بمراحل واضحة. ترى التقدم في كل دورة، ويمكنك التوقف أو تغيير الاتجاه عند أي مرحلة.
ابدأ بمراجعة للنظام

هل يبطئ نظام قديم نشاطك؟

تحدّث مباشرة مع مهندسين ذوي خبرة. نراجع الكود والبيانات والاستضافة بموجب اتفاقية عدم إفصاح (NDA)، ونحدد نقاط الاختناق، ونقدّم لك خطة خطوة بخطوة لتحديث النظام أو استلامه.