Operacje i → Zarządzanie zautomatyzowane przepływy pracy
Zautomatyzowane przepływy pracy
1) Dlaczego go potrzebujesz
Zautomatyzowane przepływy pracy zmniejszają operacje ręczne, przyspieszają „czas pomysłu do pieniędzy” i zmniejszają ryzyko błędów. W iGaming/fintech ma kluczowe znaczenie dla depozytów/wypłat, KYC/AML, zarządzania bonusem/jackpotem, aktualizacji treści, reakcji incydentów i zadań na zapleczu.
Cele:- Solidne, przejrzyste procesy od spustu do wyniku.
- Minimalne ręczne kroki przewidywalne przez SLO procesu.
- Kontrola błędów: przekaźniki, działania wyrównawcze, wyraźne eskalacje.
- Skalowanie przez zdarzenia i obciążenie bez burz i duplikatów.
2) Podstawowa terminologia
Przepływ pracy (WF): łańcuch kroków (zadań) w celu osiągnięcia wyniku biznesowego.
Orkiestra: Centralny koordynator zarządza krokami i ich porządkiem.
Choreografia: kroki reagują na wydarzenia, nie ma „centralnego mózgu”.
Odszkodowanie: działania odwrotne w przypadku częściowej awarii (sagi).
HITL (Human-in-the-loop): kontrolowane rozwiązania „manualne” w WF.
SLO procesu: docelowy czas zakończenia/sukcesu określonego WF (na przykład „95% depozytów ≤ 3 sekundy”).
3) Gdzie stosować (przykłady)
Przepływ płatności: depozyty, przeciwdziałanie oszustwom, księgowanie, powiadomienia.
KYC/AML: zbieranie dokumentów, sprawdzanie przez dostawców, zwiększanie zgodności.
Zarządzanie treścią/limitem: publikowanie gier, kwot, reguł geograficznych.
Premie/jackpoty: rozliczenia międzyokresowe, odliczenia, obliczanie warunków, płatności.
Incydenty: auto-diagnostyka, skrócone listy kontrolne, komunikacja.
Dane/ETL: przesyłanie raportów, pojednanie, archiwizacja.
4) Orkiestra vs Choreografia
Orkiestra jest odpowiednia, gdy: złożona logika gałęzi, surowe SLO, wyraźne terminy/terminy, wizualna „mapa procesu” jest potrzebna biznesowi.
Choreografia - kiedy: duże wydarzenie, słaba łączność, wielu niezależnych konsumentów jednego wydarzenia.
Hybryda: Długotrwałe sagi są kontrolowane przez orkiestrę, a lokalne reakcje są wykonywane poprzez wydarzenia.
5) Zasady architektoniczne
Idempotencja: każdy krok musi być bezpiecznie powtarzany (idempotence-key, dedup by message-ID).
Wyraźne timeouts i rekolekcje: backoff + jitter, spróbuj limitów, wycofuje się tylko dla bezpiecznych błędów.
Kompensacje (sagi): Przewrócenie łańcucha na częściowej awarii.
Izolacja stopni: grodzie (pojedyncze puli/limity na zewnętrznych podrzędnych strumieniach).
Kontrakty: OpenAPI/AsyncAPI dla wszystkich połączeń zewnętrznych, testy CDC.
WF versioning: zmiana schematu danych wejściowych/wyjściowych bez „masy” spadków starych instancji.
6) Model zdarzeń i wyzwalaczy
Typy wyzwalaczy:- zdarzenie domeny ('depozyt. wnioskowane "),
- harmonogram (cron),
- ręczne uruchomienie (operator/wsparcie),
- sygnał z alarmu (incydent-auto-workflow).
- Kontekst: korelacja 'trace _ id',' workflow _ instance _ id', użytkownik/region, wersja phicheflag.
- Tanie filtry wejściowe: wczesna walidacja i odcięcie odbioru.
7) Projektowanie etapów (zadania)
Każdy krok jest opisany: wejście, wyjście, SLO, timeout, próby, warunki przekwalifikowania, odszkodowanie, prawa/tajemnice.
Pseudo opis kroku:
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) Odszkodowania i sagi
Transakcja lokalna + wydarzenie „zapisać zamiar → opublikować wydarzenie”.
Odszkodowanie: anulowanie autoryzacji, zwrot premii, ponowne obliczenie salda, zamknięcie biletu.
Odszkodowanie idempotencja: wielokrotne odwołanie nie powinno łamać stałych.
9) Bezpieczeństwo i tajemnice
Menedżer KMS/Secrets: token, rotacja, dostęp do ról.
Najmniejsze uprawnienia: silnik WF ma dokładnie odpowiednie zakresy.
Podpis Webhook/Kolbek: HMAC/JWS, sprawdzenie znacznika czasu.
Polityka danych: maskowanie PII w logach/śladach, szyfrowanie.
10) Obserwowalność i SLO
Wskaźniki procesu: „workflow _ started/completed”, „success _ rate”, „aborted”, „mean/p95/p99 duration”, zwisające przypadki, „dead letter”.
Mierniki kroków: 'task _ latency', 'error _ rate', 'retry _ count',' open _ circuit ',' cost _ per _ 1k _ calls '.
Ślady: rozpiętość dla każdego kroku, przepływ tagów. nazwa "," krok "," próba ".
SLO: na przykład "95% depozytów ≤ 3 sekundy, 99% ≤ 5 sekund; abort ≤ 0. 3 %/dzień"
Deski rozdzielcze: mapa etapu termicznego, wąskie gardła, mapy zależności.
11) Obwód człowieka (HITL)
Kryteria: kontrowersyjne przypadki (ryzyko/AML), ręczne potwierdzenie dużych płatności.
Terminy: czas oczekiwania na decyzję, przypomnienia/eskalację.
Audyt: kto/kiedy/co zdecydowało, uzasadnienie, pakiet z biletem.
12) Zarządzanie zmianami i wydania
Równolegle wersje przepływu pracy: „v1” i „v2”; migracja instancji nie jest możliwa - zakończyć stare instancje naturalnie, nowy ruch do 'v2'.
Ruch kanaryjski: 1% → 10% → 100%, porównanie mierników „success/p95/abort”.
Ficheflags: Szybki zwrot do poprzedniego etapu/implementacji oddziału.
CDC/umowy: Brama w CI, aby utrzymać krok zmiany od złamania konsumentów/dostawców.
13) Badanie
Etapy jednostkowe: dodatnia/ujemna + idempotencja.
Testy kontraktowe: przeciw dostawcy moka/stage.
Symulacje WF: happy-path + timeouts, 4xx/5xx, „slow provider”, loss of events, partial errors.
Dni gry: wtrysk usterek (kropla PSP/KYC, opóźnienie kolejki, wyłącznik zamknięty).
Powtórka: Powtórz historyczne wydarzenia w celu potwierdzenia migracji.
14) Incydenty i reakcje automatyczne
Incydent auto-workflow: zbieranie mierników, sprawdzanie poniżej strumieni, powiadomienia, przygotowanie pracy (dostawca przełączania, degradacja).
Kroki Runbook: jak „rozwiązywać” zawieszone instancje, gdy dozwolone jest ręczne przerwanie/siła kompletna.
15) Zarządzanie kosztami
Kwoty i „miękki pułap”: limity kosztownych kroków/dostawców.
Cache/dedup: nie wykonuj powtarzających się połączeń zewnętrznych niepotrzebnie.
Raporty: „koszt _ na _ 1k _ workflows”, „koszt sukcesu” według typu WF.
16) Przepływ pracy w mini szablonie (pseudo-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) Polityka w zakresie przekwalifikowania i harmonogramu (zalecenia)
Krok w czasie = 70-80% jego budżetu opóźnienia.
Retrai ≤ 2-3, tylko dla operacji idempotentnych i awarii sieci.
Jitter jest obowiązkowy; Zakaz wycofuje się z wąskich gardeł czasu bez pęcherzyka.
Rekompensata - jako oddzielne kroki, również idempotent.
18) Deski rozdzielcze (minimum)
Przegląd WF: uruchamia/sukces/przerywa, czas trwania p95/p99, wisi/dziadków.
Krok Drilldown: Górne powolne/błędne kroki, rekolekcje, otwarte wyłączniki.
Panel dostawcy: wychodzący p95/poziom błędu/kwoty/koszt.
Rada HITL: „w oczekiwaniu na decyzję”, harmonogram, zgodność SLA.
19) Lista kontrolna wdrażania
- Kluczowa mapa WF i właściciele (dyżur, czat, repo).
- Opis kroków: in/out, SLO, timeouts, retrays, compensation, secrets.
- Kontrakty OpenAPI/AsyncAPI + CDC.
- Idempotencja/deadup na wejściu i na schodach.
- Deski rozdzielcze, ślady, wpisy (proces SLO i kroki).
- Canary + phicheflags dla wydań WF.
- Runbook: Jak „traktować” zawieszone/częściowo wykonane WF.
- Plan degradacji: dostawcy alternatywni, wyłączający „ciężkie” oddziały.
- Polityka w zakresie tajnego/dostępu/audytu.
- Gra-days/xaoc-scenariusze raz w sprincie.
20) Przykłady wpisów (pomysły)
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) Anty-wzory
„Duży monolityczny WF” o 100 + stopniach i sztywnej łączności - łamie trudne i hałaśliwe.
Przekłady za transakcje niepodlegające idempotencjom (podwójne opłaty/opłaty).
Timeouts „dłużej niż życie” z prośby użytkownika → hangmen i „zombie”.
Brak rekompensaty → ręczne poprawki i długie pośmiertne.
No WF versioning → releases break old instances.
Sekrety wewnątrz konfiguracji/zmiennych bez rotacji i audytu.
22) Jakość przepływu pracy KPI
Wskaźnik sukcesu i wskaźnik aborcji według typu WF.
p95/p99 czas trwania kroków i procesu.
MTTD/MTTR w sprawie incydentów procesowych.
Powtórna liczba burz/miesiąc (cel → 0).
Koszt za 1k WF i „koszt sukcesu”.
Udział automatyzacji:% przypadków bez HITL.
23) Szybki start (domyślne)
Zacznij od 3-5 krytycznych WF (depozyt, wypłata, KYC).
Orkiestra długotrwałe sagi; reakcje miejscowe - zdarzenia.
Skrócenie czasu ≤ 80% budżetu; retrai ≤ 2 z backoff + jitter.
Odszkodowania są ustalane na piśmie i testowane.
Włącz kanarka dla 5-10% ruchu z porównania deski rozdzielczej.
Każdy WF ma właściciela, książkę startową i wpisy SLO.
24) FAQ
P: Co wybrać: orkiestra lub imprezy?
Odp.: Jeśli potrzebujesz mapy wizualnej, terminy i długie sagi są orkiestrą. Jeśli przeważają proste reakcje na wydarzenia i wiele konsumentów, choreografia. Często najlepszą opcją jest hybryda.
P: Jak uniknąć duplikatów?
Odp.: Idempotence-key na wejściu WF, dedup przez 'message _ id' i przechowywanie' saw-events '. "Kroki są idempotentne.
P: Czy potrzebuje człowieka w obwodzie?
Odp.: Tak, w kontrowersyjnych/drogich przypadkach. Ale zmierzyć i zmniejszyć udział HITL poprzez lepszą automatyzację i zasady.