6 دقيقة قراءة
لمَ تَهمّ الهندسة الكبيرة في البرمجيات المُنظَّمة — منظور PSD2
أكثر البرمجيات تَفشل بشكل متسامح. خطأ في موقع تسويقيّ يُكلِّف تحويلاً؛ خطأ في لوحة تحليلات يُكلِّف ربعاً من قراءات أرقام مَغلوطة. خطأ في المدفوعات المُنظَّمة يُكلِّف رسالة المُنظِّم، والاسترداد، وفجوة المطابقة التي تَستغرق المكتب الخلفيّ أسبوعاً ليُلاحقها، وفي أسوأ الحالات — التعليق. البرمجيات المُنظَّمة هي الجزء من الصناعة الذي تَكون فيه كلفة الخطأ غير متناسبة، وفيها لا يُمكن المساومة على شريط الأقدميّة الذي يستطيع باقي القطاع تخفيفه.
هذا المقال عن السبب.
كلفة الخطأ تَتدرَّج بشكل مختلف
في منتج وِبّ نمطيّ، المهندس الكبير أسرع، ويكتب شيفرةً أنظف، ويرتكب أخطاءً معماريّة أقلّ من المهندس الجديد. يتراكم العمل؛ وتُسدِّد الأقدميّة على مدى أشهر أو أرباع. في المدفوعات المُنظَّمة، تُسدِّد الأقدميّة في أوّل يوم في الإنتاج. المصادقة القويّة للعميل (SCA) المُطبَّقة بشكل خاطئ لا تَبدو مكسورة عند حجم منخفض — تَبدو سليمة، إلى أن يقرأ مُدقِّق الاستثناءات لدى المُنظِّم تطبيقَ الربط الديناميكيّ ويَجد أنّ شيفرة المصادقة لا تَرتبط فعلاً بمبلغ المُعاملة والمستفيد منها. حينئذٍ كلّ مُعاملة استَخدمت ذلك المسار البرمجيّ هي ملاحظة تدقيقيّة.
أنواع الأخطاء التي تظهر في المدفوعات المُنظَّمة ليست ممّا يستطيع مهندس جديد رصده، لأنّها تستلزم نموذجاً عقليّاً عن لمَ صِيغ التنظيم بالشكل الذي صِيغ به. الربط الديناميكيّ في PSD2 صِيغ هكذا لأنّ المُنظِّم يُريد منع نوع من هجمات إعادة الجلسة. بدون النموذج، يَبدو التطبيق سليماً في الاختبار الوحدويّ، يَفشل في التدقيق، ويَكون إصلاحه في الإنتاج مُكلِفاً لأنّ كلّ مُعاملة مُستردَّة تَهبط على المكتب الخلفيّ للمطابقة.
الناس الصحيحون سَلَّموا أمام هذا المُنظِّم من قبل
أسهم مهندسون من فريقنا سابقاً في تكاملات PSD2 لدى عدّة بنوك أوروبيّة. الاعتماد يَهمّ أقلَّ ممّا يُعلِّمه: الطريقة التي تَفشل بها المدفوعات المُنظَّمة فعلاً، وأنواع الحالات الحدّيّة التي يَقرؤها التدقيق، والانضباط التشغيليّ الذي يجب خَبزه في المنصّة منذ اليوم الأوّل لأنّ كلفة تركيبه بعد الإطلاق أضعاف أعلى.
ثلاثة أنماط تعلَّمنا أن نُهندس وفقها منذ اليوم الأوّل في عمل المدفوعات:
- القابليّة للتدقيق خاصّيّةٌ معماريّة، لا تشغيليّة. آثار تدقيق تَنجو من ترحيل قاعدة بيانات، وإعادة كتابة خدمة، وتبديل بائع. آثار تَفسير مُرفقة بكلّ قرار تفويض. مفاتيح أحاديّة لكلّ نداء خارجيّ. التدقيق ليس ميزة تُضاف حين يَطلبها المُنظِّم؛ بل هو شكل النظام.
- المطابقة همٌّ مستمرّ. مطابقة نهاية اليوم تَجري على نموذج مُعاملة وحيد، لا على ثلاثة تصدير من بائعين مَخيطة معاً. كَشف التباين في الزمن الفعليّ، لا في إغلاق نهاية الشهر. التحقُّق من التسوية كهمٍّ من الدرجة الأولى، لا وظيفة مكتب خلفيّ.
- العمليّات تَحمل دليلها بنفسها. كلّ تنبيه يَحمل القاعدة التي أطلقَته. كلّ قرار توجيه يَحمل المنطق الذي اختار السكّة. كلّ استرداد يَحمل أثر التفويض الأصليّ، وقرار SCA، والسكّة التي عمل عليها، ونافذة قطع الاعتماد التي ضربها، وحَدَث التسوية الذي أغلقه.
المهندسون الجُدد لا يُهندسون هذا الانضباط افتراضاً؛ يُلصِقونه حين يَكشف الإنتاجُ الفجوةَ. كلفة الإلصاق هي ما يَجعل المدفوعات المُنظَّمة الجزءَ من الصناعة الذي تُسدِّد فيه شريطُ الأقدميّة لنفسه أسرع.
لمَ لا نُخفِّف العمل المُنظَّم بمهندسين جُدد
نموذج ارتباطنا الافتراضيّ هو الكبار فقط. ثَمّة مجالات برمجيّة معقول فيها خَلط مستويات الأقدميّة — أدوات داخليّة، واجهات تسويقيّة، طبقات تحليلات، أيُّ مكان تَكون فيه كلفة الخطأ متسامحة. المدفوعات المُنظَّمة ليست واحداً منها. أوّل مرّة يُسلِّم فيها مهندس جديد تطبيقَ SCA يُغفل متطلَّب الربط الديناميكيّ، تَجعل كلفةُ الإصلاح بعد التدقيق فرقَ راتب الأقدميّة يَبدو خطأ تقريب.
المنطق نفسه يَمتدّ إلى كلّ مجال برمجيّ مُنظَّم نَعمل فيه: أنظمة EMR السريريّة، أنظمة المُساندة الخلفيّة لمراقبة سلامة الأدوية، أدوات علوم الحياة المُلتزمة بـ GxP، البنية السحابيّة المُتوائمة مع NCA (موضوع المقال المُرافق). عَدَم تَناسب كلفة الخطأ الذي يَجعل المدفوعات غير متسامحة يَطرح القضيّةَ نفسها في الرعاية الصحية والامتثال: مهندسون كبار، كلّ سطر، كلّ commit، كلّ إصدار.
ما نقوله للمُشترين
حين تسأل تقنيّة ماليّة أو بنك أو مُشترٍ مُنظَّم كيف نَرتبط، الجواب قصير: فريق صغير من الكبار، بلا جُدد، نموذج الارتباط الذي يُناسب العمل (مشروع، أو فريق مُكرَّس، أو زيادة طاقم)، والانضباط التشغيليّ للتسليم في بيئة مُنظَّمة منذ اليوم الأوّل. التسعير يَتبع من هناك. اقرأ صفحة خدمة المدفوعات والمصرفية المفتوحة للعمق، أو ابدأ محادثة إن كان لديك برنامج مدفوعات مُنظَّم يَحتاج هندسةً كبيرة عليه.
تريد مهندسين كبار على مشروعك، لا مقالاً عنه فحسب؟
أخبرنا بما تبنيه — وسنُخبرك إن كانت إحدى قدراتنا تناسبه، أم أنّ مشروعك يستلزم ما نبنيه من الصفر.