تكامل الأنظمة
هندسة تكامل Laravel
ربط تطبيق Laravel بالأنظمة التي يعمل عليها النشاط أصلًا - أنظمة تخطيط الموارد، ومزوّدي الدفع، ومنصات الفوترة الإلكترونية، والبنوك - والنجاة يوم يسقط الطرف الآخر.
قليل جدًا من التطبيقات وحيد. هناك نظام محاسبة يملك أرقام الفواتير، ومزوّد دفع يقرر متى يصير المال حقيقيًا، ومستودع له آراء في المخزون، وبتزايد هيئة ضريبية تشترط مستندات بصيغة منظَّمة.
التكامل هو حيث تعيش أغلب الهندسة الصعبة فعلًا في تطبيق أعمال، وهو يُقلَّل من شأنه دائمًا تقريبًا - لأن الشيفرة مباشرة وكل ما حولها ليس كذلك.
ماذا نربط
المحاسبة وتخطيط الموارد. SAP وLogo وNetsuite وXero وSage وأي شيء يعمل عليه النشاط منذ ما قبل وصول أي موظف حالي. المشكلة المتكررة ليست البروتوكول - بل أن النظامين يعتقدان أنهما يملكان السجل نفسه، ولم يقرر أحد أيهما يفوز.
مزوّدو الدفع. بطاقات، وطرق محلية، وتفويضات خصم مباشر، وتقسيمات أسواق. لكل واحد نموذجه لما تعنيه الدفعة، والفروق تصل إلى جدول الطلبات لا تتوقف عند عميل الواجهة البرمجية - وStripe هو المثال المشروح، والبقية تختلف في التفاصيل لا في الشكل.
منصات الفوترة الإلكترونية. إلزامية بتزايد ومختلفة بتزايد من بلد إلى آخر - ZATCA وXRechnung وPeppol، وأيًّا كان المزوّد المعتمد الجالس في الوسط. تصير الفاتورة مستندًا غير متزامن بآلة حالات ملحقة به.
البنوك والملفات. استيراد كشوف، وملفات دفع، ومطابقة. الصيغ قديمة وسيئة التوثيق ولا تغفر، والعمل مطابقة لا تحليل نصوص.
وكل ما عدا ذلك. شركات الشحن، والرسائل القصيرة، ومزوّدو الهوية، وأنظمة إدارة العملاء، والسجلات الحكومية.
الأجزاء التي تقرر هل ينجح
حدّ تملكه أنت. تطبيقك يتحدث إلى واجهتك؛ وتنفيذ واحد يتحدث إلى واجهتهم. هذا لا يكلّف شيئًا يُذكر في البناء وهو ما يجعل استبدال مزوّد أسبوعًا لا ربع سنة - وذلك يهم أكثر مما يبدو، لأن المزوّدين يُشترون ويُهملون إصدارات ويغيّرون التسعير.
عدم التأثر بالتكرار، لأن كل شيء يصل مرتين. الـ webhooks تُعاد. وإعادات المحاولة تنطلق بعد طلب نجح فعلًا. وانتهاء مهلة الشبكة لا يخبرك بشيء عمّا إذا كان الطرف الآخر قد عالجها. كل كتابة تعبر الحد تحتاج مفتاحًا يجعل المحاولة الثانية لا شيء، وذلك المفتاح ينتمي إلى المخطط لا إلى نوايا مطوّر.
قرار بشأن الفشل، لكل تكامل. حين يسقط نظامهم: هل يفشل فعل المستخدم، أم يُوضع في طابور، أم يمضي بوضع منخفض؟ سحب بطاقة ليس إرسال بريد تسويقي، ومعاملتهما بالطريقة نفسها هي كيف يصير انقطاعٌ لدى مورّد انقطاعًا لدى شركتك.
حدود المعدل تُحترم عن قصد. تباعد، وطابور يوزّع العمل، وسقف تضعه أنت لا تكتشفه. أن تُخنق لأنك أرسلت سنة من البيانات القديمة في أربع دقائق حادثٌ ذاتي.
سجل لما جرى تبادله. كل طلب واستجابة، محفوظ مدة تكفي لحسم خلاف. حين يقول الطرف الآخر إنه لم يتسلّم شيئًا، هذا هو الفرق بين إجابة في خمس دقائق وأسبوعين.
المطابقة هي العمل الحقيقي
نظامان يحملان الحقائق نفسها سيختلفان. ليس «قد» بل «سوف»، لأن الرسائل تضيع، والتصحيحات تُدخل على جانب واحد، وأحدهم يعدّل سجلًا يدويًا في مرحلة ما.
التكامل الذي يفترض الاتفاق يكتشف الانحراف حين يشتكي عميل. أما التكامل المبني كما ينبغي فيفحص: مهمة مجدولة تقارن الجانبين، وتقرير بالفروق، وحلّ محدَّد لكل نوع منها. غير لامع وهو الفرق بين وصلة تثق بها وأخرى تضطر إلى فحصها عشوائيًا إلى الأبد.
كيف يجري التعاقد
أرسلوا وثائق الواجهة التي عليكم التحدث إليها، وبيانات اعتماد بيئة تجريبية إن وُجدت. فمعظم التقدير يأتي من قراءة ما يضمنه الطرف الآخر فعلًا لا ما تقوله صفحته التسويقية.
النطاق العائد يسرد كل تكامل وأنماط أعطاله وما ستفعله التسوية حيالها. يحمل سعرًا وهو ما يشير إليه العقد. وإن تبيّن أن أحد التكاملات مشروع بحث لا مشروع بناء، فذلك بند مستقل في النطاق لا مفاجأة في الشهر الثاني.
ثم العمل، في مستودعكم، مع بناء التسوية في الوقت نفسه الذي يُبنى فيه المسار السليم.
ماذا تتسلّم
التكامل كطلبات دمج قابلة للمراجعة، والواجهة التي تعزل المورّد، وسلوك الطابور وإعادة المحاولة مع قرارات الفشل مكتوبة، ومهمة المطابقة وتقريرها، ووثيقة تصف ما يُتبادَل وماذا يحدث حين لا يُتبادَل.
وحيث يمسّ العمل الفوترة أو الإقرارات الضريبية في بلد بعينه، تكون قيود ذلك السوق جزءًا من النطاق لا اكتشافًا - وصفحات الأسواق تصف ما يتغير في كل بلد، وهي بالإنجليزية.
