لنفترض أن شركة تدير منذ سنوات نظام فواتير داخلياً كُتب بتقنية قديمة. يعمل النظام، وفريق المحاسبة يعرف كيف يتعامل معه، لكن المتجر الإلكتروني الجديد لا يستطيع التحدث إليه. المدير التنفيذي يسأل عن الكلفة والمدة، ويرد الفريق التقني بجملة مألوفة: نحتاج إعادة بناء كاملة. وهنا يبدأ ما يتجاوز الميزانية والجدول الزمني.
هذا السيناريو يتكرر في كثير من المؤسسات، والسؤال الذي يطرحه عملاؤنا كثيراً هو: هل نحتاج فعلاً إلى استبدال النظام بالكامل، أم يمكن أن يتحدث النظام القديم مع الأدوات الحديثة من خلال طبقة وسيطة؟
الأنظمة القديمة ليست بالضرورة سيئة. كثير منها أدّى وظيفته لعقد أو أكثر، وتراكمت فيه قواعد عمل دقيقة لا توجد توثيقاً كاملاً لها. المشكلة الحقيقية عادة أن هذه الأنظمة صُممت لتعمل وحدها، فلا تملك قنوات تواصل منظمة مع غيرها. البيانات محبوسة داخل قواعد بيانات مغلقة، والعمليات لا تُكشف إلا لمن يعرف الواجهة الرسومية الخاصة بها.
قبل أي قرار تقني، نبدأ عادة بسؤال واحد: ما الوظيفة المحددة التي تحتاج إليها الأدوات الجديدة من هذا النظام؟ في أغلب الحالات لا تحتاج الشركة إلى كل ما يفعله النظام، بل إلى بيانات معينة في وقت معين، أو إلى عملية واحدة مثل إنشاء فاتورة أو التحقق من مخزون.
واجهة البرمجة (API) هي اتفاق واضح على طريقة طلب البيانات أو تنفيذ العمليات. عندما نبني واجهة لنظام قديم، فنحن لا نعيد كتابته، بل نضع أمامه بوابة تستقبل الطلبات بصيغة حديثة (غالباً JSON عبر HTTP)، ثم تترجمها إلى ما يفهمه النظام القديم، وتعيد النتيجة بالشكل الذي تتوقعه التطبيقات الجديدة.
هذه الطبقة الوسيطة تحقق ثلاثة أشياء في الوقت نفسه. الأول أنها تحمي النظام القديم من الاستخدام العشوائي، لأن كل الطلبات تمر عبر نقطة واحدة قابلة للمراقبة والتحكم في الصلاحيات. الثاني أنها تفصل بين ما يعرفه النظام القديم وما يحتاجه المستخدم، فيمكن تغيير أحدهما دون كسر الآخر. الثالث أنها تتيح نقل الوظائف تدريجياً؛ يمكن أن تُستبدل وحدة واحدة في كل مرة بينما يستمر الباقي في العمل.
في أحد المشاريع، كان المطلوب ربط نظام مخزون قديم بتطبيق مبيعات جديد. الفريق الأول قدّر أن الربط يحتاج ثلاثة أشهر لإعادة هيكلة قاعدة البيانات. لكن عند تحليل الطلبات الفعلية، اتضح أن التطبيق الجديد يحتاج فقط إلى ثلاث عمليات: الاستعلام عن الكمية المتوفرة، وحجز الكمية عند الطلب، وإرجاعها عند الإلغاء. هذه العمليات الثلاث مكّنت الربط في أقل من شهر، مع بقاء النظام القديم كما هو لبقية الأقسام.
الدرس هنا أن الكلفة الحقيقية غالباً تكمن في الوظائف التي لا نحتاجها، لا في الوظائف التي نحتاجها.
لا تحل واجهات البرمجة كل شيء. إذا كان النظام القديم يعاني من أخطاء متكررة في منطق الحساب، أو إذا كانت بنيته تمنع أي توسع في الحمل، فإن الربط يؤجل المشكلة ولا يحلها. كذلك إذا لم يعد أحد في المؤسسة يفهم سبب بعض القواعد، فالخطوة الأولى يجب أن تكون توثيق هذه القواعد قبل أي تعديل.
في هذه الحالات نوصي بتحديد الأجزاء التي تستحق الاستبدال الكامل، وإبقاء ما يعمل بكفاءة. التحديث التدريجي يسمح باتخاذ هذا القرار على أساس معلومات فعلية، لا على أساس الانطباع العام بأن النظام القديم عبء.
ابدأ بجرد الوظائف التي تستخدمها فعلياً الأدوات الجديدة، لا الوظائف التي يمكن للنظام القديم أن يقدمها. ثم حدّد مصدر البيانات الذي يُحدَّث أكثر من غيره، لأنه غالباً المرشح الأول للربط. بعد ذلك ابنِ واجهة صغيرة لعملية واحدة، واختبرها مع مستخدمين حقيقيين قبل التوسع. وأخيراً راقب الأداء والأخطاء من الأيام الأولى، لأن أي مشكلة في الطبقة الوسيطة ستظهر عادة هناك.
الأنظمة القديمة تحتاج في كثير من الأحيان إلى صوت يتحدث باسمها بلغة العصر، لا إلى هدم كامل. الربط عبر واجهات API يمنح المؤسسة فرصة لتحديث أدواتها بالتدريج، مع الحفاظ على ما يعمل بالفعل. إذا كانت لديك منظومة قديمة وتتساءل عن إمكانية ربطها بالأدوات الحديثة دون مغامرة كبيرة، فيمكننا أن نبدأ بتحليل بسيط لما تحتاجه فعلاً. احجز مكالمة تعريفية في DB Agency، ونتحدث عن وضعك الحالي وما الذي يمكن إنجازه أولاً.
