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).

Нажимая кнопку, вы соглашаетесь на обработку данных.