GH GambleHub

Планувальник і фонові завдання

(Розділ: Операції та Управління)

1) Призначення

Планувальник і фонові завдання забезпечують позакористувацьку роботу платформи: періодичні розрахунки, публікації артефактів, кліринг і реплеї черг. Цілі - детермінованість, стійкість до збоїв і аудитопридатність.


2) Таксономія завдань

Time-based: за розкладом (cron/календар): кліринг, закриття вікон RTP, вивантаження, архівації.
Event-driven: тригери з шини (PaymentsSettled, PriceListUpdated).
One-off/Ad-hoc: разові джоби з TTL.
Long-running: бекоф/саги, стрімінгові компакшени.
Maintenance: ротації ключів, репекідж, індекси, прогрів кешу.


3) Архітектура (референс)

Компоненти:

1. Scheduler (control-plane): зберігає розклади, CAL/cron, вікна обслуговування, таймзони, обмежувачі.

2. Dispatcher: план → черга (per-priority/tenant/region), проставляє дедлайни, ідемпотентні ключі.

3. Workers: статичні/автоскейл під пули завдань; heartbeats, leases.

4. Queue/Bus: FIFO/пріоретизація, DLQ, відкладені повідомлення.

5. Locker/Coordination: розподілені блокування (leases), лідер-елекція (Raft/ZK/Consul).

6. Vault/KMS: JIT-секрети, короткі TTL.

7. Observability: traces/metrics/logs, дашборди, алерти.

8. Audit/WORM: незмінювані квитанції виконання, Merkle-зрізи.

Патерни: outbox/CDC, idempotency, компенсації (саги), backpressure, circuit-breakers.


4) Розклади: cron і календарі

Cron v3: секунда/хвилина/година/день/місяць/день-тижні; підтримка «/5 », діапазонів, списків.
Календарі/винятки: бізнес-календар, «вікна тиші», свята/DST.
Таймзони: зберігайте «tz» на задачі; запуск за локальним часом тенанта.
Мультирегіон: копії розкладів per-region або «провідний регіон + фоловери» з дрейном/перевибором.


5) Черги, пріоритети, SLA

Класи пріоритету: P0 (критично), P1, P2, P3; окремі пули воркерів.
SLA/дедлайни: `must_start_by`, `must_finish_by`; пропуск - ескалація/ретрай.
Квоти та fairness: caps на задач/хв/тенант, токени на «бурсти», ізоляція noisy-neighbors.
Відкладені завдання: «не раніше ніж» (delay/visibility timeout).


6) Конкурентність і блокування

Leases: оренда роботи з авто-продовженням (heartbeat); по тайм-ауту - перевидання.
Mutex/семафори: per-ресурс (наприклад, «прайс-лист х пише тільки один воркер»).
Шардування: по `tenant/region/hash(key)`; sticky-routing для кеш і локальності даних.
Лідер-елекція: один лідер публікує «системні» джоби (наприклад, «закрити всі RTP вікна»), фоловери - гарячий standby.


7) Надійність: ретраї, ідемпотентність, дедуп

Ідемпотентний ключ: `(task_type, business_id, window)`; повтори → та ж квитанція.
Ретраї: експоненціальний бек-офф + джиттер, ліміт спроб, стратегія on-error (retry/cancel/compensate).
Poison-pill: швидкий переклад в DLQ після N збоїв, алерт власнику.
Dedup: seen-cache (in-memory + KV) на TTL вікна.
Exactly-once ефекти: підтвердження побічних ефектів через транзакційний журнал/квитанції.


8) Управління тривалими і важкими завданнями

Chunking: розбивка на батчі, чекпоінти/продовження.
Time-boxing: обмеження CPU/IO/мережевого egress; переривання зі збереженням прогресу.
Саги/компенсації: семантика «undo» для міжсервісних кроків.
Concurrency-caps: ліміти одночасних завдань на тип/тенант/регіон.


9) Спостережуваність і метрики

Traces: 'trace _ id', кроки саги, зовнішні виклики.

Metrics (SLI):
  • Lag до старту, черга (довжина, вік p95).
  • Success Rate, error-rate, retry-rate.
  • Latency p50/p95, time-to-complete.
  • Cost per 1k завдань, egress/ingress.
  • DLQ rate, poison-pill rate.
SLO (приклад):
  • P0 старт ≤ 60 с, P1 ≤ 5 хв; Success ≥ 99. 5%; DLQ ≤ 0. 1%; Freshness (опершина) ≤ 30 з p95.

10) Аудит і доказовість

Квитанції: 'receipt _ hash'на старт/успіх/помилку, DSSE-підписи для критичних типів (платежі, прайс-листи, RTP).
WORM: зберігання логів виконання і маніфестів завдань.
Chain-of-custody: хто поставив/схвалив/змінив розклад; SoD-перевірки.


11) Безпека та доступи

RBAC/ABAC/ReBAC: хто створює/схвалює/запускає; SoD: «створити виплату» ≠ «затвердити».
JIT-секрети: воркер запитує токени з коротким TTL по скоупу завдання.
Ізоляція: пули воркерів per-tenant/region/сітка; sandbox-виконання.
PII-гігієна: маскування/токенізація, заборона логування первинки.


12) FinOps і вартість

Бюджети/кап-алерти на compute/storage/egress.
Автоскейл воркерів по чергах і SLO.
Класи зберігання: гаряче (7-30 днів) → OLAP (6-24 міс) → архів.
Cost-aware планування: вікно запуску в «дешеві години», ліміти на egress.


13) Модель даних (спрощено)

`schedule` `{id, tenant, region, tz, croncalendar, window, enabled, owner, policy_version}`
`job` `{id, schedule_id?, type, payload_hash, idempotency_key, priority, must_start_by, attempts, status, receipt_hash}`
`lease` `{job_id, worker_id, acquired_at, ttl}`
`run_log` `{job_id, started_at, finished_at, outcome, trace_id, metrics{}, receipts[]}`
`dlq_item` `{job_id, reason, attempts, last_error, owner_notified}`

14) API контракти (управління/інтеграція)

'POST/schedules'- створити розклад (cron/cal, tz, вікна).
'POST/jobs'- поставити ad-hoc; повернути'job _ id','receipt _ hash'.
'GET/jobs/{ id}'- статус/лог/квитанції.
'POST/jobs/{ id }/cancel'- скасування з компенсацією.
'GET/queues/stats'- довжини, лаги, p95.
Вебхуки: `JobStarted`, `JobSucceeded`, `JobFailed`, `JobDroppedToDLQ`, `SLOViolated`.


15) Плейбуки (типові сценарії)

Retry-storm: включити глобальний бек-офф, підняти таймаути залежностей, включити circuit-breaker, дроблення батчів.
DLQ-лавина: зупинити прийом, приоритизувати розбір DLQ, буферизувати нові завдання.
Лідер впав: перевибор, верифікація «подвійних публікацій» за ідемпотентністю, аудит.
Завис провайдера (PSP/KYC): маршрут на резерв, знизити частоту polling/вебхуків, перевести транзакції в карантин.
Витік секретів воркера: відгук ключів, ротація, пошук «аномальних» запусків за 30 днів, рев'ю прав.


16) Специфіка iGaming/фінтех

Платежі/виплати: асинхронні джоби з квитанціями, карантин «сірих» транзакцій, реплей черг з дедупом.
RTP вікна/ліміти: закриття за календарем, спостережуваний vs теоретичний RTP, авто-пауза промо при дрейфі.
Прайс-листи/FX/Tax: публікації за розкладом, версії артефактів, форс-інвалідація кешу.
Афіліати: звірка конверсій, дедуп вебхуків, акти/підписи, ескроу по спорах.


17) Метрики якості (приклад набору)

Schedule Adherence: частка завдань стартували у вікні ≥ 99%.
Queue Lag p95: P0 ≤ 60 c, P1 ≤ 5 хв.
Success/Retry/DLQ Rate: ≥ 99. 5% / ≤ 0. 4% / ≤ 0. 1%.
Idempotency Errors: ≤ 0. 01%.
Cost/1k jobs і Egress/job - в межах бюджету.
Audit Completeness: 100% критичних завдань з квитанціями.


18) RACI

ОбластьRACI
Архітектура планувальникаPlatform/SRECTOData, SecurityProduct
Політики/SoD/календарCompliance/IAMCCO/CISOLegal, OpsВсе
Спостережуваність/SLOSREHead of EngData, FinOpsSupport
Економіка/квотиFinOpsCFO/CTOSRE, ProductBU Leads
Критичні плейбукиIR TeamCOOPartners, LegalAudit

19) Чек-лист впровадження

  • Виділити класи завдань, пріоритети і SLA; визначити календарі і таймзони.
  • Розгорнути Scheduler/Dispatcher/Queue/Workers з лідер-елекцією і шардуванням.
  • Ввести ідемпотентність, ретраї, DLQ, компенсації (саги).
  • Налаштувати RBAC/ABAC/ReBAC, SoD і JIT-секрети для воркерів.
  • Включити traces/metrics/logs, дашборди і алерти; SLO и error-budget.
  • Підписані квитанції (DSSE) і WORM-журнали для критичних типів.
  • Автоскейл і кап-алерти за вартістю (compute/storage/egress).
  • Плейбуки: retry-storm, DLQ-лавина, відмова лідера, деградація провайдера.
  • Тести: GameDay по кожному плейбуку, ін'єкції затримок/помилок.
  • Регулярні рев'ю розкладів, завалів черг і ROI автоматизації.

20) FAQ

Чому cron недостатньо?
Без черг, ідемпотентності, блокувань і аудиту cron ламається на збоях і часових поясах.

Чи можна об'єднувати time-based і event-driven?
Так: cron - страховка для catch-up; події - для реактивності.

Як домогтися «рівно-одного разу»?
Дедуп за ключем, транзакційний журнал ефектів, квитанції та ідемпотентні побічні дії.

Що робити з «довгими» джобами?
Чанк, чекпоінти, time-boxing, можливість перервати і продовжити.

Як не «з'їсти» бюджет?
Автоскейл по чергах і SLO, дешеві годинники для важких джоб, жорсткі капи egress/compute.


Резюме: Планувальник і фонові завдання - це виробничий конвеєр платформи. Вбудувавши розклади і черги, ідемпотентність, блокування і спостережуваність, додавши квитанції/аудит, ізоляцію тенантів і FinOps-контроль, ви отримаєте передбачувані терміни виконання, швидкий recovery і юридично витримані операції в будь-яких регіонах і навантаженнях.

Contact

Зв’яжіться з нами

Звертайтеся з будь-яких питань або за підтримкою.Ми завжди готові допомогти!

Розпочати інтеграцію

Email — обов’язковий. Telegram або WhatsApp — за бажанням.

Ваше ім’я необов’язково
Email необов’язково
Тема необов’язково
Повідомлення необов’язково
Telegram необов’язково
@
Якщо ви вкажете Telegram — ми відповімо й там, додатково до Email.
WhatsApp необов’язково
Формат: +код країни та номер (наприклад, +380XXXXXXXXX).

Натискаючи кнопку, ви погоджуєтесь на обробку даних.