يوفر دليل هندسة التقنية المالية لفرق البرمجيات خريطة عملية لبناء أنظمة تنقل الأموال وتُسجّلها وتدقّقها دون اختراع قيمة أو فقدانها.
يضع Fintech Engineering Handbook مجموعة عملية من الأنماط للمهندسين الذين يبنون البرمجيات حول المال، من تصميم دفتر الأستاذ وعدم قابلية العملية للتكرار إلى webhooks، والتسوية، وضوابط الوصول، والاختبار في الإنتاج.
يخدم الدليل المهندسين الذين ينتقلون إلى التقنية المالية من مجالات برمجية أخرى. يمكن لتطبيق اجتماعي أن يتعافى من إشعار مكرر. أما نظام مالي فلا يمكنه تجاهل سحب مكرر، أو رسومٍ جرى تقريبها إلى الصفر، أو سجل تسوية مفقود. يؤطر الدليل هذا العمل حول ثلاث قواعد: لا تخترع بيانات، لا تفقد بيانات، ولا تثق في الأنظمة الخارجية أو الداخلية من دون تحقق.
تبدأ الدرسة الأولى بالتمثيل. يحتاج المال إلى مبلغٍ وعملة، محفوظين بدقة كافية للمهمة. يحذر الدليل من الأنواع ذات الفاصلة العائمة عند تمثيل القيم المالية لأن المحللات وبيئات التشغيل الشائعة يمكن أن تدخل أخطاء تقريب عند حافة نظام دقيق otherwise careful system. ويوجه الفرق إلى الوحدات الصغرى الثابتة، أو الكسور العشرية ذات الدقة غير المحدودة، أو الأعداد النسبية، أو مزيج من هذه المقاربات، بحسب ما إذا كان النظام يخزن الأرصدة، يحسب الأسعار، أو يتعامل مع أصول مشفرة.
هذا التمييز مهم. قد يناسب رصيد نقدي قدره $12.34 أن يُخزن كـ 1,234 سنتًا ضمن بيانات العملة في ISO 4217. وقد يستخدم رمزٌ مشفر 18 منزلة عشرية ويتجاوز عددًا صحيحًا 64-بت. ويمكن لرقم JSON مجرد أن يهدم تصميمًا داخليًا دقيقًا إذا فسره عميل على أنه double وفق IEEE 754. يدفع الدليل المهندسين إلى إرسال المال كسلاسل نصية أو كأعداد صحيحة تمثل أصغر وحدة بدلًا من ذلك.
يتعامل الدليل مع التقريب على أنه قرار تجاري، لا مسألة تنسيق. يمكن لحساب الرسوم، وتحويل العملات، والفوائد، وتطبيق الأسعار أن يخلق كسورًا يجب على النظام توزيعها. تحتاج الفرق إلى تحديد من يحصل على الباقي أو يخسره، وتسجيل الجزء المتبقي، وتجنب التقريب حتى الوصول إلى حد مثل التخزين الدائم أو العرض. إذا قسمت منصة دفعة واحدة إلى عدة أجزاء، فقد لا تعود الأجزاء المقرَّبة لتساوي المبلغ الأصلي. يحث الدليل الفرق على تتبع هذه الفجوة بدل إخفائها.
قسم دفتر الأستاذ يمنح الدليل مركز ثقله. يشرح الدليل المحاسبة بالقيد المزدوج كنمط هندسي: كل حركة تُقيد حسابًا وتَدين حسابًا آخر، بحيث يكون للمال مصدر ووجهة. كما تحصل المزودات الخارجية على حسابات أيضًا. تأتي أرصدة المستخدمين من القيود لا من حقول الرصيد القابلة للتعديل. وتحدث التصحيحات عبر قيود جديدة مرتبطة، لا عبر تعديل السجلات المقيدة.
يمنح هذا النهج المدققين أثرًا يمكن تتبعه. يحتاج النظام المالي إلى شرح ما الذي حدث، ومن بدأه، ومتى سجله النظام، ولماذا حدث، وأي بيانات مصدر دعمت القرار. يميز الدليل بين وقت القيمة، ووقت القيد، ووقت التسوية لأن هذه التواريخ تجيب عن أسئلة مختلفة. قد تحدث معاملة بطاقة يوم الاثنين، وتدخل نظام الشركة يوم الثلاثاء، وتُسوّى لدى البنك يوم الجمعة. إن دمج هذه التواريخ في حقل واحد created_at يفقد حقائق لا يمكن للفريق إعادة بنائها لاحقًا.
يتعامل الدليل أيضًا مع التبني القائم على الأحداث بحذر. يمكن للتبني القائم على الأحداث أن يمنح الفرق أثرًا تدقيقيًا قويًا لأن سجل الأحداث يصبح المصدر للحالة المشتقة. لكنه لا يروّج له كحل عالمي. فما زال المهندسون يحتاجون إلى الإسقاطات، واللقطات، وتطور المخطط، وأدوات للأحداث القديمة التي يجب أن تصمد لسنوات. وفي كثير من المجالات المحيطة، يقول الدليل إن نموذجًا تقليديًا مع سجل تغييرات موثوق يمكنه تلبية الحاجة بكلفة تشغيلية أقل.
تشغل أنماط التنفيذ جزءًا كبيرًا آخر من الدليل. وتحظى قابلية إعادة المحاولة مرة أخرى باهتمام خاص لأن أنظمة التقنية المالية تعيد المحاولة عن قصد. قد تنتهي مهلة طلب سحب بعد أن يتسلمه المزود. وقد يعيد العميل المحاولة. يجب على الخادم أن يدمج هذه التسليمات في أثر واحد. يفضل الدليل مفاتيح idempotency صريحة ضمن نطاق عميل وعملية محددين، إضافة إلى حواجز ذرية تتعامل مع وصول طلبين مكررين في الوقت نفسه.
تعالج حجز الأموال سباقًا مختلفًا. قبل أن ترسل المنصة المال إلى الخارج أو تستدعي مزود امتثال، فإنها تحجز المبلغ المطلوب مقابل الرصيد المتاح للمستخدم. ما يزال المستخدم يملك الأموال، لكن النظام يمنع معاملة أخرى من إنفاق المبلغ نفسه. يوضح الدليل مطلبًا صارمًا واحدًا: فحص الرصيد وتسجيل الحجز يحتاجان إلى اتساق قوي. قد يسمح قراءة قديمة لعمليتي سحب بالمرور مقابل الأموال نفسها.
لا يدعي الدليل أن الحجوزات تزيل السحب على المكشوف. يمكن للأنظمة الخارجية أن تفرض أرصدة سالبة عبر تسوية أعلى من المتوقع، أو عكس العمليات، أو الاستردادات، أو الرسوم المتأخرة. ويحذر الدليل المهندسين من ترميز الأرصدة غير السالبة كنوع غير موقّع أو كقيد قاعدة بيانات يرفض الواقع. قد يتعطل نظام لا يستطيع تمثيل رصيد سالب، أو يثبت القيمة عند الصفر، أو يخلق مالًا عبر مسار إصلاح معيب. ويطلب الدليل من الفرق قيد السحب على المكشوف، والتحقيق فيه، والتعافي عبر الإيداعات المستقبلية، أو السداد، أو حساب خسائر.
تحصل التكاملات الخارجية على مقدار الشك نفسه. يمكن لمعالجات الدفع، والبنوك، والوصّائين، وباعة KYC، وباعة AML، وعُقد blockchain، والخدمات الداخلية أن تعيد حمولات مشوهة، أو سجلات قديمة، أو رسائل مكررة، أو صمتًا. ينصح الدليل الفرق بالتحقق من الحقول التي تعتمد عليها، وتخزين الطلبات والاستجابات بصيغة قابلة للاستعلام، وإجراء حسابات تقديرية سريعة مقابل حصص المزود قبل أن يكشف المرور عن حد.
يتعامل الدليل مع webhooks بلهجة مباشرة. يجب أن يطلق webhook تحققًا، لا أن يحسم حقيقة. يوصي الدليل بالتحقق من التواقيع على البايتات الخام، وحفظ الحمولة الخام، والإقرار بسرعة، ومعالجة العمل خارج مسار الطلب. ينبغي للفرق الاستعلام من API المزود عن الحالة الحالية وبناء وظائف تسوية للـ webhooks التي لا تصل أبدًا. قد يصل الحدث نفسه مرتين أو خارج الترتيب، لذا تحتاج معالجات webhooks إلى عدم قابلية التكرار والتحقق من الحالة.
يربط الدليل هذا النمط بالنشر الموثوق. قد يفشل نظام يحدّث قاعدة بياناته ويرسل حدث Kafka أو webhook خارجيًا في خطوة منفصلة بين العمليتين. يصف الدليل نمط outbox، والتقاط تغييرات البيانات، والتبني القائم على الأحداث كإجابات عملية. تغطي أدوات مثل Debezium، وAWS Database Migration Service، وTemporal، وCamunda، وAWS Step Functions أجزاءً من هذا المجال، رغم أن لكل منها نموذجه وعبء تشغيله الخاص.
تعمل المطابقة كشبكة أمان. يحث الدليل الفرق على مقارنة دفتر الأستاذ الخاص بها مع المعالجات، والبنوك، والوصّائين، وسلاسل الكتل، وغيرها من المصادر المستقلة. قد يعني الاختلاف بيانات مفقودة، أو مبالغ مختلفة، أو تسوية قديمة، أو تحويلات دفعات من واحد إلى عدة. ويحذر الدليل من الكتابة فوق أحد الجانبين فقط لجعل التقرير أخضر. يحتاج المهندسون إلى تصحيحات من الدرجة الأولى، ومسارات إعادة معالجة، ومنطق مطابقة يحترم توقيت التسوية.
يوسع قسم الضوابط فكرة عدم الثقة لتشمل الموظفين والأنظمة داخل الشركة. قد تتطلب عمليات المال الحساسة، وتغييرات الرسوم، ونشر الإنتاج، وتغييرات البنية التحتية فصل المهام أو موافقة maker-checker. وتحتاج الموافقة نفسها إلى سجل: صاحب الطلب، والموافق، والسبب، والطابع الزمني، وإثبات أن الشخص نفسه لم يؤدِّ الدورين معًا. ويتلقى التحكم في الوصول المعاملة نفسها عبر أقل الصلاحيات، والتحكم القائم على الأدوار، ومسارات التغيير، والمراجعات الدورية.
ويختتم الاختبار الدليل بتقنيات تناسب حالة المالية أفضل من الفحوصات المعتمدة على الأمثلة وحدها. يمكن للاختبار المعتمد على الخصائص أن يولد تسلسلات عمليات ويؤكد أن الدفاتر تتوازن بعد كل خطوة. ويمكن لحقن الأعطال أن يقتل تدفقًا طويلًا بين كل زوج من الخطوات ويثبت أن عاملًا يمكنه استئنافه. ويمكن للاختبارات الذهبية أن تثبت تفصيل الرسوم أو البيانات إلى مخرجات تمت مراجعتها. ويمكن لاختبارات التوافق الخلفي أن تبقي حمولات الأحداث القديمة قابلة للقراءة بعد تغييرات المخطط.
تجعل الأمثلة الشاملة في الدليل هذه الأنماط ملموسة. يجمع سحب مشفّر بين الإرسال غير القابل للتكرار، وحجز الأموال، وفحوصات الامتثال، والبث على السلسلة، وعمق التأكيد، وقيود دفتر الأستاذ، وتسوية الرسوم، ومطابقة السلسلة. ويُظهر إيداع بطاقة لماذا ينبغي للمنصة أن تتعامل مع webhook التحصيل على أنه إشارة، وأن تقيد عبر حساب مقاصة، وأن تنتظر التسوية، وأن تتعامل مع الاستردادات عبر عكسات مرتبطة. ويبيّن تحويل داخل التطبيق مع استرداد نقدي لماذا تحتاج الفروق، والتقريب، ومعدلات المرجع، والمال الترويجي إلى قيود دفتر أستاذ كلها.
لا يعلن المشروع عن تمويل، أو مستثمرين، أو إطلاق تجاري. وتأتي مكانته في السوق من فجوة مختلفة: يدخل كثير من المهندسين إلى التقنية المالية بمهارات قوية في الأنظمة الموزعة، لكن مع تعرض محدود للمحاسبة، والتسوية، والحفظ، وفحوصات العقوبات، والاستردادات، وأدلة التدقيق. يقدّم الدليل هذه الاهتمامات كنمط برمجي بدلًا من كونها فولكلورًا ماليًا.
هذا ما يجعل الدليل مفيدًا لما هو أبعد من الشركات الناشئة في التقنية المالية. فأي فريق يخزن أرصدة، أو يحرك أصولًا، أو يقيد أموالًا ترويجية، أو يصدر تقارير مالية، أو يتكامل مع مزودي الدفع يواجه الضغط نفسه. تفشل البرمجيات المالية في الشقوق بين الخدمات، والطوابع الزمنية، وإعادة المحاولة، والتجاوزات البشرية. يمنح الدليل المهندسين مفرداتٍ لتلك الشقوق ومجموعة ضوابط يمكنهم تحويلها إلى code.
التعليقات
يرجى تسجيل الدخول أو إنشاء حساب للانضمام إلى النقاش