Operatsiyalar va Boshqaruv → Avtomatlashtirilgan workflow
Avtomatlashtirilgan workflow
1) Nima uchun bu zarur?
Avtomatlashtirilgan mashg’ulotlar qo’l operatsiyalarini kamaytiradi, «g’oyadan pulgacha» tezlashtiradi va xato xavfini kamaytiradi. iGaming/fintech’da bu depozitlar/xulosalar, KYC/AML, bonuslar/jekpotlarni boshqarish, kontentni yangilash, noxush reaktsiya va orqa ofis vazifalari uchun juda muhimdir.
Maqsadlar:- Triggerdan natijagacha barqaror, shaffof kuzatiladigan jarayonlar.
- Minimal qo’l qadamlari, prognoz qilinadigan jarayon SLO.
- Xatolarni nazorat qilish: retralar, kompensatsion harakatlar, aniq eskalatsiyalar.
- Hodisalar va yuklar bo’yicha «bo’ronlar» va dublikatlarsiz ko’paytirish.
2) Bazaviy terminologiya
Workflow (WF): biznes natijasiga erishish uchun qadamlar (tasks) zanjiri.
Orkestr: markaziy koordinator qadamlar va ularning tartibini boshqaradi.
Xoreografiya: qadamlar voqealarga ta’sir qiladi, «markaziy miya» yo’q.
Kompensatsiya: qisman muvaffaqiyatsizlikka uchraganda orqaga qaytish harakatlari.
HITL (Human-in-the-loop): WF ichidagi nazorat qilinadigan «qo’l echimlari».
Jarayonning SLOsi: muayyan WFni yakunlash/muvaffaqiyatga erishishning maqsadli vaqti (masalan, «95% depozitlar ≤ 3 sek»).
3) Qayerda qo’llash kerak (misollar)
To’lov floalari: depozitlar, antifrod, buxgalteriya hisobiga posting, bildirishnomalar.
KYC/AML: hujjatlarni yig’ish, provayderlar tomonidan tekshirish, komplayensda eskalatsiya.
Kontent/limitlarni boshqarish: o’yinlar, kvotalar, geo-qoidalarni e’lon qilish.
Bonuslar/jekpotlar: hisoblash, ushlab qolish, shartlarni hisoblash, to’lovlar.
Hodisalar: avto-diagnostika, qisqartirilgan chek-varaqlar, kommunikatsiyalar.
Maʼlumotlar/ETL: hisobotlarni yuklash, reconciliation, arxivlash.
4) Orkestrlash vs Xoreografiya
Filiallarning murakkab mantig’i, qat’iy SLOlar, aniq muddatlar/taymautlar, biznes uchun vizual «jarayon xaritasi» kerak bo’lganda orkestrlash mos keladi.
Xoreografiya - qachon: yuqori hodisalik, zaif bog’liqlik, bitta hodisaning ko’plab mustaqil iste’molchilari.
Gibrid: uzoq umr koʻradigan sagʻanalarni orkestrator boshqaradi, lokal reaksiyalar esa hodisalar orqali amalga oshiriladi.
5) Arxitektura prinsiplari
Idempotentlik: har bir qadam xavfsiz takrorlanishi kerak (idempotency-key, message-ID bo’yicha dedup).
Aniq taymautlar va retrajlar: backoff + jitter, urinishlar limitlari, faqat xavfsiz xatolar uchun retrajlar.
Kompensatsiyalar (saglar): qisman muvaffaqiyatsizlikka uchraganda zanjir bo’yicha qaytish.
Qadamlarni izolyatsiya qilish: bulkhead (alohida hovuzlar/tashqi daunstrimlarga limitlar).
Barcha tashqi qoʻngʻiroqlar uchun OpenAPI/AsyncAPI shartnomalari, CDC testlari.
WF versiyasi: eski instansiyalarning «ommaviy» tushishlarisiz kirish/chiqish ma’lumotlari sxemasini o’zgartirish.
6) Voqealar va triggerlar modeli
Trigger turlari:- domen hodisasi (’deposit. requested`),
- jadval (cron),
- qo’lda ishga tushirish (operator/sapport),
- alertdan signal (hodisa-avto-mashg’ulot).
- Kontekst:’trace _ id’,’workflow _ instance _ id’, foydalanuvchi/mintaqa, chicheflaglar versiyasi.
- Kirish joyidagi arzon filtrlar: dubllarni erta validatsiya qilish va kesish.
7) Qadamlar dizayni (tasks)
Har bir qadam tavsiflanadi: kirish, chiqish, SLO, taymaut, urinishlar, retraj shartlari, kompensatsiya, huquq/sirlar.
Qadamning psevdo-tavsifi:
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) Kompensatsiyalar va dostonlar
Lokal tranzaksiya + hodisa: «intent saqlash → voqeani nashr etish».
Kompensatsiya: avtorizatsiyani bekor qilish, bonusni qaytarish, balansni qayta hisoblash, chiptani yopish.
Kompensatsiyalarning o’zgaruvchanligi: takroriy bekor qilish invariantlarni buzmasligi kerak.
9) Xavfsizlik va sirlar
KMS/Secrets Manager: tokenlarni saqlash, rotatsiya, rollarga kirish.
Eng kichik imtiyozlar: WF-dvigatelga to’g "ri zarur bo’lgan xaridlar beriladi.
Vebxuk/kolbeklar imzosi: HMAC/JWS, taymstempni tekshirish.
Maʼlumot siyosati: log/trastirovkalarda PII maskalash, shifrlash.
10) Kuzatuv va SLO
Jarayon metrikasi:’workflow _ started/completed’,’success _ rate’,’aborted’,’mean/p95/p99 duration’, «osilgan» instantsiyalar, «dead letter».
Qadamlar metrikasi:’task _ latency’,’error _ rate’,’retry _ count’,’open _ circuit’,’cost _ per _ 1k _ calls’.
Izlash: har bir qadam uchun span, taglar’workflow. name`, `step`, `attempt`.
SLO: masalan, "depozitlarning 95% ≤ 3 sek, 99% ≤ 5 sek; abort ≤ 0. 3 %/sutka".
Dashbordlar: qadamlarning issiqlik xaritasi, «tor joylar», qaramlik xaritalari.
11) Konturli odam (HITL)
Mezonlar: bahsli keyslar (risk/AML), yirik to’lovlarni qo’lda tasdiqlash.
Muddatlar: qaror, eslatma/eskalatsiyani kutish vaqti.
Audit: kim/qachon/nima qaror qildi, asoslash, chipta bilan bog’lanish.
12) O’zgartirishlarni boshqarish va relizlar
Workflow versiyasi:’v1’va’v2’parallel; instansiyalarning ko’chishi mumkin emas - eskisini tabiiy yo’l bilan, yangi trafikni’v2’ga to’ldiring.
Kanar trafigi: 1% → 10% → 100%, metrik’success/p95/abort’.
Ficheflaglar: oldingi qadam/shoxni amalga oshirishga tez qaytish.
CDC/kontraktlar: oʻzgarishlar isteʼmolchilarni/provayderlarni buzmasligi uchun CI ga kirish.
13) Test sinovi
Unit qadamlar: ijobiy/salbiy + idempotentlik.
Contract tests: mok/steyj provayderiga qarshi.
WF-simulyatsiyalar: happy-path + timeouts, 4xx/5xx, «sekin provayder», hodisalarni yo’qotish, qisman xatolar.
Game-days: nosozliklarni in’ektsiya qilish (PSP/KYC tushishi, navbatlar orqasi, yopiq breyker).
Replay: migratsiyani tekshirish uchun tarixiy voqealarni takrorlash.
14) Hodisalar va avto-reaksiyalar
Hodisani avto-mashq qilish: metriklarni yig’ish, daunstrimlarni tekshirish, bildirishnomalar, workaround tayyorlash (provayderni o’zgartirish, degradatsiya).
Runbook-qadamlar: qoʻlda abort/force-complete ruxsat berilganda osilgan instantsiyalarni qanday «ochish» kerak.
15) Xarajatlarni boshqarish
Kvotalar va «soft-cap»: qimmat qadamlar/provayderlar uchun limitlar.
Kesh/dedup: Zaruratsiz tashqi chaqiruvlarni takrorlamang.
Hisobotlar:’cost _ per _ 1k _ workflows’, WF turlari bo’yicha «muvaffaqiyat qiymati».
16) Mashg’ulotlarning mini-shabloni (psevdo-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) Retray va taymaut siyosati (tavsiyalar)
Qadam vaqti = uning yashirin budjetidan 70-80%.
Retrai ≤ 2-3, faqat idempotent operatsiyalari va tarmoq uzilishlari uchun.
Jitter majburiy; follbeksiz tor joylardagi taymautlarda retraylarni taqiqlash.
Kompensatsiyalar ham individual qadamlar kabi.
18) Dashbordlar (minimal)
WF Overview: ishga tushirish/muvaffaqiyat/abort, p95/p99 davomiyligi, vis/bobo.
Step Drilldown: eng yaxshi sekin/xato qadamlar, retrajlar, ochiq breykerlar.
Provider Panel: chiquvchi p95/error-rate/kvotalar/qiymat.
HITL Board: «qaror kutmoqda», muddatlar, SLA komplayens.
19) Joriy etish chek-varaqasi
- Asosiy WF xaritasi va egalari (on-call, chat, repo).
- Qadamlar tavsifi: kirish/chiqish, SLO, taymautlar, retrajlar, kompensatsiyalar, sirlar.
- OpenAPI/AsyncAPI + CDC shartnomalari.
- Kiraverishda va qadamlarda idempotentlik/dedup.
- Dashbordlar, trassalar, alertlar (SLO jarayoni va qadamlar bo’yicha).
- Kanareyka + WF relizlari uchun ficheflaglar.
- Runbook: osilgan/qisman bajarilgan WFlarni qanday «davolash» kerak.
- Tanazzul rejasi: muqobil provayderlar, «og’ir» shoxlarni o’chirish.
- Maxfiy/kirish/audit siyosati.
- Game-days/xaoc-ssenariylar sprintda bir marta.
20) Alertlar namunalari (g’oyalar)
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) Anti-patternlar
«Katta monolit WF» 100 + qadam va qattiq aloqaga ega - qiyin va shovqin.
Idempotent bo’lmagan operatsiyalar uchun retriyalar (ikki marta hisobdan chiqarish/hisoblab chiqarish).
Foydalanuvchi so’rovining «umr ko’proq» taymautlari → visyaki va «zombi».
Kompensatsiya yo’qligi → qo’lda tuzatishlar va uzoq postmortemalar.
WF versiyalari mavjud emas → relizlar eski instansiyalarni buzadi.
Rotatsiyasiz va auditsiz o’zgaruvchan/konfiguratsiyalar ichidagi sirlar.
22) Mashg’ulot sifatining KPI
Success rate va Abort rate WF turlari bo’yicha.
p95/p99 qadam va jarayon davomiyligi.
Jarayon hodisalari bo’yicha MTTD/MTTR.
Retry storm count/oy (maqsadli → 0).
1k WF qiymati va «muvaffaqiyat qiymati».
Avtomatlashtirish ulushi:% HITLsiz keyslar.
23) Tez boshlash (defoltlar)
3-5 ta muhim WF (depozit, chiqish, KYC) dan boshlang.
Uzoq umr ko’radigan dostonlarni orkestrlash; mahalliy reaksiyalar - hodisalar.
Qadam taymaut ≤ budjetning 80 foizi; retrai ≤ 2 s backoff + jitter.
Kompensatsiyalar yozma ravishda belgilandi va sinov qilindi.
Taqqoslash taxtasi bilan 5-10% trafik kanareykasini yoqing.
Har bir WF - SLO egasi, runbook va alertlari.
24) FAQ
Q: Nima tanlash kerak: orkestrator yoki voqealar?
A: Agar ko’rgazmali xarita, muddat va uzun dostonlar kerak bo’lsa - orkestrator. Agar voqealarga oddiy munosabat va iste’molchilar ko’p bo’lsa - xoreografiya. Ko’pincha eng yaxshi variant gibriddir.
Q: Dublikatlardan qanday qochish mumkin?
A: Idempotency-key WF kirish joyida,’message _ id’bo’yicha dedup va’seen-events’ni saqlash. Qadamlar - idempotent.
Q: Konturli odam kerakmi?
A: Ha, munozarali/qimmat holatlar uchun. Lekin eng yaxshi avtomatlashtirish va qoidalar orqali HITL ulushini o’lchang va kamaytiring.