العمليات وإدارة →
سير العمل الآلي
1) لماذا تحتاجه
تقلل سير العمل الآلي من العمليات اليدوية، وتسريع «وقت الفكرة إلى المال» وتقليل مخاطر الأخطاء. في iGaming/fintech، من الأهمية بمكان للودائع/عمليات السحب، و KYC/AML، وإدارة المكافآت/الجائزة الكبرى، وتحديثات المحتوى، وردود الفعل على الحوادث، ومهام المكتب الخلفي.
الأهداف:- عمليات قوية وشفافة من الزناد إلى النتيجة.
- الحد الأدنى من الخطوات اليدوية التي يمكن التنبؤ بها من خلال عمليات المنظمات غير الحكومية.
- التحكم في الأخطاء: إعادة الطباعة، الإجراءات التعويضية، التصعيد الواضح.
- التوسع حسب الأحداث والحمل بدون عواصف وتكرار.
2) المصطلحات الأساسية
سير العمل: سلسلة من الخطوات (المهام) لتحقيق نتيجة عمل.
التنسيق: يدير المنسق المركزي الخطوات وأمرها.
تصميم الرقصات: تتفاعل الخطوات مع الأحداث، ولا يوجد «دماغ مركزي».
التعويض: الدعاوى العكسية في حالات الفشل الجزئي.
HITL (Human-in-the-loop): حلول «يدوية» خاضعة للرقابة داخل الصندوق العالمي.
SLO للعملية: الوقت المستهدف لإكمال/نجاح صندوق WF محدد (على سبيل المثال، «95٪ من الودائع ≤ 3 ثوانٍ»).
3) مكان التطبيق (أمثلة)
تدفق المدفوعات: الودائع، مكافحة الغش، النشر في المحاسبة، الإخطارات.
KYC/AML: جمع المستندات، والتحقق من قبل مقدمي الخدمة، والتصعيد إلى الامتثال.
إدارة المحتوى/الحد: ألعاب النشر، والحصص، والقواعد الجغرافية.
المكافآت/الجوائز الكبرى: الاستحقاقات، والخصومات، وحساب الشروط، والمدفوعات.
الحوادث: التشخيص التلقائي، قوائم مرجعية مختصرة، اتصالات.
البيانات/ETL: تحميل التقارير، والتوفيق، والمحفوظات.
4) التنسيق مقابل تصميم الرقصات
التنسيق مناسب عندما: منطق الفرع المعقد، SLOs الصارمة، المواعيد النهائية/المهلات الصريحة، «خريطة العملية» المرئية مطلوبة من قبل الأعمال.
تصميم الرقصات - متى: حدث مرتفع، اتصال ضعيف، العديد من المستهلكين المستقلين لحدث واحد.
الهجين: يتم التحكم في الملاحم طويلة العمر بواسطة منسق، ويتم إجراء ردود الفعل المحلية من خلال الأحداث.
5) المبادئ المعمارية
الخصوصية: يجب تكرار كل خطوة بأمان (مفتاح الخصوصية، التخلص من معرف الرسالة).
المهلات والتراجعات الصريحة: التراجع + الرحلات، جرب الحدود، التراجع عن الأخطاء الآمنة فقط.
التعويضات (الملاحم): تراجع السلسلة عن الفشل الجزئي.
عزل الخطوات: الحواجز (المجمعات الفردية/الحدود على المصبات الخارجية).
العقود: OpenAPI/AsyncAPI لجميع المكالمات الخارجية، اختبارات CDC.
إصدار WF: تغيير مخطط بيانات المدخلات/المخرجات دون انخفاض «الكتلة» للحالات القديمة.
6) نموذج الحدث والزناد
أنواع الزناد:- حدث النطاق ('الإيداع. ،
- الجدول الزمني (cron)،
- البداية اليدوية (المشغل/الدعم)،
- إشارة من حالة التأهب (تدفق العمل التلقائي).
- السياق: الارتباط 'trace _ id', 'workflow _ extence _ id', user/region, phicheflag نسخة.
- مرشحات الإدخال الرخيصة: التحقق المبكر وقطع اللقطات.
7) تصميم الخطوة (المهام)
يتم وصف كل خطوة: الدخول، الخروج، SLO، المهلة، المحاولات، شروط إعادة الدفع، التعويض، الحقوق/الأسرار.
وصف الخطوة الزائفة:
task: call_psp input: { user_id, amount, currency, idempotency_key }
timeout: 200ms retries:
max: 2 on: [5xx, connect_error]
backoff: exponential jitter: true compensation: reverse_authorization secrets: [PSP_TOKEN]
sla: p99 <= 300ms
8) التعويض والملاحم
معاملة محلية + حدث «حفظ النية → نشر الحدث».
التعويض: إلغاء الإذن، وإعادة المكافأة، وإعادة حساب الرصيد، وإغلاق التذاكر.
التعويض: الإلغاء المتكرر لا ينبغي أن يكسر الثوابت.
9) الأمن والأسرار
KMS/مدير الأسرار: التخزين الرمزي، التناوب، الوصول إلى الأدوار.
أقل الامتيازات: يتم إعطاء محرك WF النطاقات الصحيحة بالضبط.
توقيع Webhook/Kolbek: HMAC/JWS، التحقق من الطابع الزمني.
سياسات البيانات: إخفاء PII في السجلات/الآثار، التشفير.
10) إمكانية الرصد و SLO
مقاييس العملية: «سير العمل - بدأ/اكتمل»، «نجاح _ معدل»، «أجهض»، «متوسط/p95/p99 مدة»، حالات شنق، «حرف ميت».
مقاييس الخطوة: "task _ latency", "error _ rate", "retry _ count'," open _ circuit', "cost _ per _ 1k _ calls'.
الآثار: امتداد لكل خطوة، سير عمل العلامات. الاسم "،" خطوة "،" محاولة ".
SLO: على سبيل المثال، "95٪ من الرواسب ≤ 3 ثوانٍ، 99٪ ≤ 5 ثوانٍ ؛ أجهض ≤ 0. 3٪ في اليوم"
لوحات القيادة: خريطة الخطوات الحرارية، الاختناقات، خرائط التبعية.
11) الإنسان في الدائرة (HITL)
المعايير: حالات مثيرة للجدل (المخاطر/مكافحة غسل الأموال)، تأكيد يدوي للمدفوعات الكبيرة.
المواعيد النهائية: مهلة انتظار القرار، تذكير/تصعيد.
مراجعة الحسابات: من/متى/ماذا تقرر، التبرير، حزمة مع تذكرة.
12) إدارة التغيير والإصدارات
إصدارات سير العمل: 'v1' و 'v2' بالتوازي ؛ الهجرة على سبيل المثال غير ممكنة - إنهاء الحالات القديمة بشكل طبيعي، وحركة المرور الجديدة إلى 'v2'.
حركة الكناري: 1٪ → 10٪ → 100٪، مقارنة المقاييس «النجاح/p95/الإجهاض».
Ficheflags: تراجع سريع عن تنفيذ خطوة/فرع سابق.
CDC/العقود: بوابة في CI لمنع التغييرات التدريجية من كسر المستهلكين/مقدمي الخدمات.
13) الاختبار
خطوات الوحدة: الإيجابية/السلبية + الخصوصية.
اختبارات العقد: ضد موكا/مزود المرحلة.
محاكاة WF: مسار سعيد + مهلة، 4xx/5xx، «مزود بطيء»، فقدان الأحداث، أخطاء جزئية.
أيام اللعبة: حقن الثغرات (PSP/KYC drop، تأخر الانتظار، كسر مغلق).
الإعادة: إعادة تشغيل الأحداث التاريخية للتحقق من صحة الهجرات.
14) الحوادث وردود الفعل الذاتية
سير العمل التلقائي للحوادث: جمع المقاييس، والتحقق من المصب، والإخطارات، وإعداد حل بديل (مزود التبديل، التحلل).
خطوات Runbook: كيفية «فك تشابك» الحالات المعلقة عندما يُسمح بالإجهاض اليدوي/إكمال القوة.
15) إدارة التكاليف
الحصص و «الحد الأقصى المرن»: القيود المفروضة على الخطوات/مقدمي الخدمات المكلفة.
Cache/dedup: لا تجري مكالمات خارجية متكررة دون داع.
التقارير: «التكلفة _ لكل _ 1k _ تدفق العمل»، «تكلفة النجاح» حسب نوع الصندوق العالمي.
16) سير العمل بنموذج مصغر (YAML الزائف)
workflow: deposit_v1 trigger:
event: deposit.requested filters: [amount > 0, currency in [USD,EUR,TRY]]
sla:
p95_ms: 3000 abort_rate_daily: 0.3%
steps:
- name: reserve_funds timeout_ms: 150 retries: {max: 2, on: [5xx, connect_error], backoff: exponential, jitter: true}
compensation: release_reserve
- name: call_psp timeout_ms: 200 retries: {max: 2, on: [5xx, connect_error]}
circuit_breaker: {error_rate: 0.05, window_s: 10, open_s: 30}
- name: post_ledger type: async topic: ledger.post
- name: notify_user channel: push hitl:
when: amount > 10000 or risk_score > 0.8 timeout_m: 30 escalate_to: "compliance@oncall"
observability:
emit_metrics: true trace: true security:
secrets: [PSP_TOKEN, PUSH_API_KEY]
17) سياسات الاسترجاع والتوقيت (توصيات)
مهلة الخطوة = 70-80٪ من ميزانيتها الكامنة.
Retrai ≤ 2-3، فقط للعمليات الحمقاء وفشل الشبكة.
الجيتر إلزامي ؛ يتراجع الحظر عن مهلة عنق الزجاجة بدون جراب.
التعويض - كخطوات منفصلة، غبي أيضًا.
18) لوحات القيادة (الحد الأدنى)
WF نظرة عامة: الإطلاق/النجاح/الإجهاض، p95/p99 المدة، الشنق/الجد.
Step Drilldown: أعلى الخطوات البطيئة/الخطأ، التراجع، القواطع المفتوحة.
فريق مقدمي الخدمات: المنتهية ولايته p95/معدل الخطأ/الحصص/التكلفة.
مجلس HITL: «قرار معلق»، الجدول الزمني، الامتثال لاتفاقات SLAs.
19) قائمة التنفيذ المرجعية
- خريطة الصندوق العالمي الرئيسي وأصحابه (عند الطلب، الدردشة، إعادة الشراء).
- وصف الخطوات: داخل/خارج، SLO، المهلات، إعادة التصوير، التعويضات، الأسرار.
- عقود OpenAPI/AsyncAPI + CDC.
- الخمول/الوفاة عند المدخل وعند الدرج.
- لوحات القيادة والآثار والتنبيهات (عملية SLO والخطوات).
- Canary + phicheflags لإطلاقات WF.
- Runbook: How to «treating» hong/partily impleted WFs.
- خطة التدهور: مقدمو خدمات بديلون، يغلقون الفروع «الثقيلة».
- سياسات السرية/الوصول/مراجعة الحسابات.
- أيام اللعبة/سيناريوهات xaoc مرة واحدة في سباق.
20) أمثلة التنبيهات (الأفكار)
ALERT WorkflowSLOBreached
IF workflow_p95_duration_ms{name="deposit_v1"} > 3000 FOR 15m
LABELS {severity="critical", team="payments"}
ALERT WorkflowAbortRateHigh
IF rate(workflow_aborted_total{name="deposit_v1"}[30m]) > 0.005
LABELS {severity="warning", team="payments"}
ALERT StepRetryStorm
IF step_retry_count{name="call_psp"} > 2 baseline_1w FOR 10m
LABELS {severity="warning", team="integrations"}
ALERT StuckInstances
IF workflow_in_progress_age_p95_m{name="kyc_v2"} > 60
LABELS {severity="warning", team="risk"}
21) الأنماط المضادة
«WF متجانس كبير» مع أكثر من 100 خطوة واتصال صلب - يكسر صعبًا وصاخبًا.
إعادة تدوير المعاملات غير الاختيارية (الرسوم/الرسوم المزدوجة).
المهلة «أطول من العمر» لطلب المستخدم → الجلاد و «الزومبي».
عدم التعويض → الإصلاحات اليدوية والتشريح الطويل بعد الوفاة.
لا توجد إصدارات → إصدارات WF تكسر الحالات القديمة.
أسرار داخل التكوينات/المتغيرات دون تناوب ومراجعة.
22) جودة سير العمل KPI
معدل النجاح ومعدل الإجهاض حسب نوع الصندوق العالمي.
p95/p99 مدة الخطوات والعملية.
MTTD/MTTR بشأن حوادث العملية.
إعادة العد/الشهر للعواصف (الهدف → 0).
التكلفة لكل 1k WF و «تكلفة النجاح».
حصة الأتمتة:% من الحالات بدون HITL.
23) البداية السريعة (التخلف عن السداد)
ابدأ بـ 3-5 WF (الإيداع، السحب، KYC).
تدبير قصص طويلة العمر ؛ ردود الفعل المحلية - الأحداث.
مهلة ≤ 80٪ من الميزانية ؛ retrai ≤ 2 مع backoff + jitter.
يتم تحديد التعويضات كتابة واختبارها.
قم بتشغيل الكناري بنسبة 5-10٪ من حركة المرور باستخدام لوحة قياس المقارنة.
كل WF لديه مالك وكتاب تشغيل وتنبيهات SLO.
24) الأسئلة الشائعة
س: ماذا تختار: منسق أم أحداث ؟
ج: إذا كنت بحاجة إلى خريطة مرئية، فإن المواعيد النهائية والملاحم الطويلة هي منسق. إذا سادت ردود الفعل البسيطة على الأحداث والكثير من المستهلكين، فإن تصميم الرقصات. غالبًا ما يكون الخيار الأفضل هو الهجين.
س: كيف تتجنب التكرار ؟
ج: Idempotency-key at WF input, dedup by 'message _ id' and storage of "seen-events. "الخطوات خفية.
س: هل تحتاج إلى رجل في الدائرة ؟
ج: نعم، للحالات المثيرة للجدل/باهظة الثمن. لكن قم بقياس وتقليل حصة HITL من خلال أتمتة وقواعد أفضل.