مقالات

طريقتان لربط نظامين، وكيف تختار بينهما

ملف ليلي ونداء مباشر يفشلان على نحو مختلف، والفرق يحدد من يسهر عند الثانية فجرا. ماذا يشتري كل منهما، وبماذا يدفع، وثلاثة فحوص.

بقلم أنس حمداوي4 دقائق قراءة
  • integration
  • data
  • operations
كل المقالات

النداء المباشر يمنحك جوابا الآن وتبعية دائمة، والملف المجدول يمنحك نسخة تثبتها وتأخرا يوما كاملا. ولا واحد منهما أفضل على الإطلاق، والجدل بينهما يحسمه الذوق أكثر مما يحسمه العمل. ويحسم الاختيار سؤال واحد: حين يتعطل هذا عند الثانية فجرا، هل تحتاج أن تعرف في ثانية أم في يوم؟

ماذا يشتري لك النداء المباشر؟

الفوريّة، ورفضا يمكن التصرف معه. كمية المخزون صحيحة لحظة البيع لا في منتصف الليل، وحين يقول النظام الآخر لا يقوله والعميل ما يزال واقفا، ومعه سبب. هذا يساوي مالا حقيقيا عند الشبّاك، ولا يساوي شيئا تقريبا في تقرير شهري.

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

ماذا يشتري لك الملف المجدول؟

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

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

وللملف ميزة إضافية: شكل قابل للفحص قبل أن يلمس الدفتر. ومعايير المستندات المنشورة، مثل معيار UBL للطلبات والفواتير، تسمي كل حقل، فيرفض المدقق مستندا ناقصا قبل أن يضطر الاستيراد إلى التخمين.

فأيهما يناسب حالتك؟

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

لماذا ينتهي معظم الربط إلى مزيج؟

لأن الآليتين تجيبان عن سؤالين مختلفين، والخلط بينهما هو أول الخطأ. النداء المباشر للحركة التي لا تحتمل الانتظار: دفعة، أو حجز كمية عند الشبّاك، أو التحقق من سعر قبل عرض سعر. والملف لما يأتي بالجملة ويحتاج مطابقة: طلبات اليوم، وقيود الدفتر، وقائمة العملاء.

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

ما الفحوص الثلاثة التي يحتاجها كل نقل؟

العدد، والمجموع، وإعادة التشغيل. كل فحص يكشف عطلا مختلفا، واثنان منها غالبا غائبان.

  • العدد. أُرسل N سجلا ووصل N، لكل ملف ولكل يوم. لا لوحة متابعة بخط مرسوم، بل فحص يفشل ويفتح حادثة حين لا يكون الفرق صفرا.
  • المجموع. مبلغ واحد يجب أن يتساوى: مجموع الفواتير، أو الكمية المنقولة، بحسب الدفعة. العدد يمر والصفوف في داخله خاطئة؛ والمجموع يكشف الصف الذي وصل بإشارة معكوسة أو بكسور مقربة.
  • إعادة التشغيل. مدخلات الأمس تعالج مرة أخرى فتعطي النتيجة نفسها، لأن المستقبل يرفض التكرار بالمعرف. ومن لا يستطيع إعادة التشغيل لا يستطيع التعافي، بل الاعتذار فقط.

بأي ترتيب تختار؟

  1. اكتب كل حقيقة تعبر الحد: عميل، وسعر، وكمية، وطلب، وفاتورة، ورصيد.
  2. لكل حقيقة اسأل: كم يجوز أن تتأخر؟ الدقائق تعني نداء مباشرا، واليوم يعني ملفا. هذا هو القرار كله، وهو رخيص.
  3. اسأل من يستيقظ عند الثانية فجرا حين يتوقف النقل، وسمّه بالاسم قبل أي كود.
  4. اقرأ عقد الطرف الآخر قبل العرض التجريبي: هل يعلن واجهة موثقة، وماذا تقول وثيقته عن الأخطاء والحدود والإصدارات؟
  5. صمم السجل المحلي أولا: اكتب الحقيقة في نظامك برقمها، ثم سلّمها.
  6. أضف الفحوص الثلاثة قبل أول ملف حقيقي، لا بعد أول حادثة.
  7. احتفظ بالملف حتى بعد الانتقال إلى النداء المباشر. هو دليلك الوحيد على ما جرى فعلا.

أين يخطئ هذا؟

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

ما لا يغطيه هذا المقال

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

نبني الوصلة بين الأنظمة التي تشغلها بالفعل: نداء مباشر حيث ينتظر أحد، وملف لكل ما يجب إثباته، وثلاثة فحوص تفشل بصوت عال حين يختلف الطرفان.

خدمات في هذا المقال

ابدأ مشروعًا

لديك شيء تريد بناءه؟

ملخص قصير يكفي. تحصل على نطاق مكتوب وسعر ثابت قبل أن يبدأ أي شيء.