عنوان العميل عُدِّل في المتجر وفي النظام. أيّهما يفوز؟
مالك واحد لكل حقل يكتبه، والآخر يقرأ فقط. السماح للطرفين بالكتابة يُنتج تعارضًا لا حل نظيفًا له مهما كان الكود جيدًا.
أغلب مشاريع التكامل لا تفشل تقنيًا. تفشل لأن أحدًا لم يحسم سؤالًا واحدًا قبل البدء: إذا اختلف الرقم بين النظامين، أيّهما الصحيح؟ من يجيب عن هذا السؤال لكل حقل يكون قد أنهى نصف المشروع قبل كتابة سطر.
| الطرف الآخر | الاتجاه |
|---|---|
| مالي | |
| متطلبات الفوترة الإلكترونية | يرسل |
| كشوف الحسابات البنكية | يستقبل |
| بوابات الدفع الإلكتروني | تبادل |
| تشغيلي | |
| المتجر الإلكتروني | تبادل |
| أجهزة الحضور والانصراف | يستقبل |
| أنظمة متخصصة قائمة لديكم | تبادل |
| إشعارات | |
| الرسائل النصية والبريد | يرسل |
| لكل صف: من يملك الحقل؟ وماذا يحدث إن لم يستجب الطرف الآخر؟ — سؤالان قبل البرمجة. | |
كل واحد منها يُجاب في ورقة لا في كود. والمشاريع التي تتخطاها تكتشفها لاحقًا في صورة أرقام لا تتطابق.
عنوان العميل عُدِّل في المتجر وفي النظام. أيّهما يفوز؟
مالك واحد لكل حقل يكتبه، والآخر يقرأ فقط. السماح للطرفين بالكتابة يُنتج تعارضًا لا حل نظيفًا له مهما كان الكود جيدًا.
النظام الخارجي متوقف والعملية في انتظاره.
قاعدة مكتوبة: إعادة محاولة كم مرة وعلى أي فترات، ثم تعليق مع تنبيه لمن. الصمت أسوأ الخيارات لأنه يبدو نجاحًا.
هل يجب أن يظهر الطلب فورًا أم يكفي خلال ساعة؟
رقم لكل نوع بيانات. التكامل اللحظي أغلى وأكثر عرضة للفشل، وكثير من الحالات يكفيها التبادل الدوري — والفرق في الكلفة كبير.
انقطع الاتصال بعد الإرسال وقبل التأكيد، فأُعيد الإرسال.
معرّف فريد لكل عملية يمنع تسجيلها مرتين مهما تكرر الإرسال. غيابه سبب شائع لفواتير وسندات مكررة يصعب تتبعها لاحقًا.
النظام الخارجي أصدر تحديثًا غيّر شكل البيانات.
من يتابع تحديثات الطرف الآخر ومن يُبلَّغ. التكامل ليس مشروعًا ينتهي بالتسليم بل التزامًا مستمرًا ما دام الطرفان يتطوران.
تكامل تعطّل منذ ستة أيام ولم يلاحظ أحد.
مراقبة وتنبيه على التوقف لا انتظار بلاغ. التكاملات تتعطّل بصمت غالبًا، ويظهر الأثر متأخرًا في صورة بيانات ناقصة لا في رسالة خطأ.
اختر مرحلة لترى ماذا يحدث فيها، وما المخرجات، وما الذي يُقاس عليها.
التكامل يُكتب قبل أن يُبرمج
يُقاس بـ: الحقول بلا مالك محدد
الجسر يُبنى بمنطق واضح لا بأنبوب
يُقاس بـ: السجلات المرفوضة · حالات التكرار
بما في ذلك الحالات التي لا تعجبنا
يُقاس بـ: فروقات المطابقة · سلوك حالات الفشل
البدء محدودًا ثم التوسع
يُقاس بـ: أيام بلا فروق قبل التعميم
التكامل يتعطّل بصمت
يُقاس بـ: زمن اكتشاف التوقف · التكاملات الملغاة
الاختيار بينها ليس تقنيًا بل عمليًا: ما الذي يحتمله الطرف الآخر، وكم فارق الوقت المقبول لديكم.
| النمط | كيف يعمل | مناسب لـ | حدوده |
|---|---|---|---|
| واجهة API لحظية | تبادل مباشر لحظة وقوع العملية | ما يجب أن يظهر فورًا: طلب، دفعة، رصيد | يتطلب توفر الطرفين معًا دائمًا |
| تبادل ملفات مجدول | ملف بيانات يُرسل ويُستقبل على فترات | الأنظمة القديمة والكميات الكبيرة | فارق زمني بحسب الجدولة |
| قاعدة أو طبقة وسيطة | مكان مشترك يكتب فيه طرف ويقرأ منه آخر | تعدد الأطراف أو اختلاف الأوقات | مكوّن إضافي يُصان ويُراقَب |
| استيراد يدوي منظّم | رفع ملف بصيغة محددة مع تحقق قبل الاعتماد | تبادل نادر أو طرف لا يدعم غيره | يحتاج شخصًا — لكنه الأبسط والأوضح |
لكل واحد منها بديل أبسط، والإصرار عليه يشتري تعقيدًا دائمًا مقابل فائدة عابرة.
| التكامل | لماذا لا ننصح به | البديل |
|---|---|---|
| كتابة الطرفين على الحقل نفسه | تعارض لا حل نظيفًا له، وأي قاعدة أفضلية تُنتج فقدان تعديلات صامتًا | مالك واحد يكتب والآخر يقرأ |
| ربط مباشر بقاعدة بيانات الطرف الآخر | يتجاوز قواعد النظام وتحققه، ويتعطّل مع أول تحديث بنيوي عندهم | واجهة API أو ملفات متفق عليها |
| تكامل لنقل يقع مرتين شهريًا | كلفة بناء وصيانة دائمة مقابل توفير دقائق معدودة | استيراد منظّم بتحقق |
| مزامنة كل شيء «احتياطًا» | نقل بيانات لا يستخدمها أحد يزيد الحمل وسطح الخطأ ونطاق التسريب | نقل ما يُستخدم فعلًا فقط |
والقاعدة التي نبدأ بها كل نقاش تكامل: ما الذي سيتغير في عمل الناس إن نجح هذا التكامل؟ إن كان الجواب «سيتوقف موظف عن إعادة إدخال بيانات يوميًا» فهو تكامل يستحق. وإن كان «ستصبح البيانات متزامنة» بلا أثر على أحد، فهو تعقيد بلا مستفيد.
أرسل لنا قائمة أنظمتكم القائمة، ونحدد معكم أيّها يستحق التكامل وأيّها يكفيه استيراد منظّم. ونبدأ بالإجابة عن السؤال الذي يحسم نصف المشروع: من يملك كل حقل.