GH GambleHub

Операції та Управління → Запобігання інцидентів

Запобігання інцидентам

1) Навіщо це потрібно

Найкраща реакція на інцидент - це його відсутність. Для iGaming/фінтеху кожна хвилина простою - втрачені ставки/депозити, штрафи від провайдерів, репутаційні ризики. Системна профілактика знижує Change Failure Rate, стабілізує SLO і вивільняє час команд для розвитку, а не гасіння пожеж.

Цілі:
  • Звести до мінімуму ймовірність інцидентів на критичних шляхах (депозит, ставка, запуск гри, висновок).
  • Перехоплювати деградації до удару по SLO і гаманцю.
  • Обмежити радіус відмови (blast radius) і прискорити відновлення.

2) Базові принципи профілактики

1. SLO-first и error budget: зміни не випускаються, якщо ризикують вибити SLO і спалити бюджет.
2. Defence in depth: шари захистів - від схем даних і конфігів до мережевих політик і фічефлагів.
3. Design for failure: брейкери, таймаути, ретраї з джиттером, ідемпотентність, деградації.
4. Small & reversible changes: маленькі інкременти + швидкий відкат (feature flags/канарка).
5. Observability by design: метрики/логи/трейси для кожного критичного кроку і зв'язку.

3) Карта ризиків і критичних шляхів

Складіть «карту болю» за доменами: Payments, Bets, Games, KYC, Promotions, Jackpots, Content.

Для кожного шляху фіксуємо:
  • Бізнес-метрики (конверсія, GGR, середній чек).
  • Технічні SLO (latency p95/p99, uptime, success rate).
  • Залежності (внутрішні/зовнішні), ліміти/квоти.
  • «Safe mode» поведінка (що відключаємо/спрощуємо).
  • Runbook власника.

4) Guardrails (захисні бар'єри)

Таймаути і брейкери: у викликаючого сервісу таймаут коротше суми внутрішніх; брейкер відкривається при зростанні помилок/латентності.
Bulkhead-ізоляція: окремі пули з'єднань/воркерів на даунстрими.
Rate limit & backpressure: захист від лавин і ретрай-штормів.
Фічефлаги деградації: «мінімальний режим» - легкі відповіді, кеш-реплаї, відключення важких фіч.
Мульти-вендор і фейловер: альтернативні PSP/KYC, перемикання маршрутів.
Валідація конфігів: схеми/лінери/політики для безпечної зміни фіч і лімітів.

5) Управління змінами (Change Management)

Pre-release gates: тести, безпека, CDC (consumer-driven contracts), сумісність схем.
Канарний реліз + автогейти: 1% → 10% → 100%; авто-стоп при зростанні p99/error rate/бюджету згоряння.
Feature flags: миттєвий відкат/перемикання поведінки без деплоя.
Release calendar: уникаємо пікових вікон спорту/турнірів і maintenance у провайдерів.
Post-deploy checks: автосмок, порівняння метрик «до/після» з порогами.

6) Тестування як превентивна міра

Unit/contract/integration: контракти OpenAPI/AsyncAPI, CDC проти провайдера/мока.
Load & stress: профілі трафіку для прайм-тайму; тести на ліміти конектів/IOPS/квот.
Soak/long-haul: витоку ресурсів, зростання затримок на горизонті годин/днів.
Chaos/game-days: падіння брокера/PSP/KYC, розрив регіону, «повільний провайдер».
Disaster Recovery Drills: регулярні тренування перемикання регіонів і відновлення БД.

7) Раннє виявлення деградацій

Capacity-alerts: headroom, лаги черг, коннекти БД, eviction в кешах.
SLO-burn-rate: сигнал при небезпечній швидкості «спалювання» бюджету.
Адаптивні пороги: сезонність/добові шаблони для зниження помилкових.
Складові алерти: «lag ↑ + HPA at max + open circuit» ⇒ високий ризик.
Vendor health: квоти/таймаути/помилки по кожному провайдеру + вартість викликів.

8) Робота з зовнішніми провайдерами

OLA/SLA ↔ SLO: прив'язка домовленостей до наших цілей.
Playbooks фейловера: маршрути PSP-X ⇆ PSP-Y, кеш токенів, grace-режими депозитів.
Сендбокси та контракти: тестові флоу перед кожною мажорною зміною.
Вікна провайдерів: анотації на дашбордах і автоматичні suppress-правила.

9) Дані, конфіги та секрети

Політики змін: code-review двох пар очей, валідація схем/JSON/YAML.
Секрети: KMS/Secrets Manager, ротація, поділ по оточеннях/ролях.
Прапори/ліміти: зміна через API з аудитом і миттєвим відкатом.
Міграції: «двошагові» (expand → migrate → contract), сумарна зворотна сумісність.

10) Навчання та готовність команд

On-call тренінги: симуляції інцидентів, Shadow-чергування, централізовані runbook'і.
Єдині формати комунікацій: шаблони статусів/хендоверів/інцидент-апдейтів.
Безпечна культура: постмортем без звинувачень, механістичні причини і превентивні дії.

11) Дашборди профілактики (мінімум)

Risk & Readiness: SLO/бюджет, headroom по шарах, «топ вразливих зв'язків».
Change Safety: відсоток канарок, відкати, алерти «після релізу», CTR автогейтів.
Vendor Panel: p95/error/квоти/вартість по кожному провайдеру, час відповіді саппорту вендора.
Chaos/DR Readiness: частота вправ, час перемикання регіону, успішність відновлень.
Config/SecOps: зміни прапорів/лімітів/секретів, аномалії.

12) Приклади превентивних алертів


ALERT SLOBurnRateHigh
IF slo_error_budget_burnrate{name="payments_api"} > 4 FOR 10m
LABELS {severity="critical", team="payments"}

ALERT PostDeployRegression
IF (api_p99_ms{service="bets"} > baseline_1d 1. 3) AND (release_window="canary")
FOR 10m
LABELS {severity="warning", team="bets"}

ALERT ProviderQuotaNearLimit
IF usage_quota_ratio{provider="psp_x"} > 0. 9 FOR 5m
LABELS {severity="warning", team="integrations"}

ALERT QueueLagAtRisk
IF (kafka_consumer_lag{topic="ledger"} > 5e6 AND rate(kafka_consumer_lag[5m]) > 5e4)
AND (hpa_desired == hpa_max)
FOR 10m
LABELS {severity="critical", team="streaming"}

13) Чек-лист запобігання (щодня/перед піками)

  • Актуальний календар піків (матчі, турніри, кампанії, вікна провайдерів).
  • Headroom по API/БД/кешам/чергах, готовність HPA/VPA, прогрівши кешів.
  • Стан провайдерів (квоти, ліміти, деградації за 24год), налаштований фейловер.
  • Канарські гейти включені, фічефлаги відкату доступні власникам.
  • Алерти SLO/Capacity активні, suppression прописаний на планові роботи.
  • Runbook'і оновлені, on-call підтверджений, канали ескалацій робочі.

14) Анти-патерни (чого уникати)

«Великі нічні релізи» без канарки і прапорів.
Загальні пули потоків на всі даунстрими (head-of-line blocking).
Ретраї на неідемпотентні операції і на таймаути вузьких місць.
Відсутність гістерезису в алертах → пиляння по порогу.
Сліпа віра в SDK вендора без спостережуваності і управління таймаутами.
«Зробимо в проді» без стейджа/сандбокса і CDC.

15) KPI профілактики

Change Failure Rate (мета ≤ 10-15% або ваша цільова).
Pre-Incident Detect Rate: частка інцидентів, попереджених на стадії деградації.
Mean Time Between Incidents (MTBI) и MTTR.
Coverage захистів: % критичних шляхів з прапорами/брейкерами/таймаутами/канаркою.
Chaos/DR cadence: частота і успішність навчань.
Vendor readiness: середній час перемикання на резервного провайдера.

16) Швидкий старт (30 днів)

Тиждень 1: карта критичних шляхів, SLO і власники; включити SLO-burn-алерти і capacity-алерти.
Тиждень 2: канарні гейти + фічефлаги; базові chaos-сценарії (провайдер/черга).
Тиждень 3: дашборди «Change Safety» і «Vendor Panel», фейловер-плейбуки.
Тиждень 4: DR-навчання (часткове), ретроспектива і план hardening'a на квартал.

17) Шаблони (фрагменти)

Політика канареечного автогейту (умовно-YAML):

canary_policy:
guardrails:
- metric: api_p99_ms threshold: 1. 3 baseline_1d window: 10m action: pause_and_rollback
- metric: error_rate threshold: 2 baseline_1d window: 5m action: pause max_step: 10%
step_interval: 15m required_annotations: [release_notes, feature_flags, runbook_link]
План деградації (конспект):

safe_mode:
payments:
- freeze_heavy_providers
- enable_cached_token_flow
- route_to_psp_y_if(psp_x_error_rate > 5%)
games:
- limit_broadcasts
- reduce_lobby_heavy_widgets bets:
- raise_risk_score_threshold
- cache_odds_snapshot

18) FAQ

Q: Що впровадити в першу чергу, якщо ресурсів мало?
A: SLO-burn-алерти на критичних шляхах, канарські гейти і фічефлаги відкату; потім - карта ризиків і фейловер провайдерів.

Q: Як зрозуміти, що профілактика «працює»?
A: Знижується Change Failure Rate, зростає частка попереджених інцидентів, падає MTTR і шум алертів, зменшується кількість «нічних» пейджів.

Q: Чи потрібні регулярні chaos-навчання?
A: Так. Без тренування фейловер і DR майже завжди довше і болючіше, ніж здається на папері.

Contact

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

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

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

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

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

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