Операции и Управление → Снижение последствий инцидентов
Снижение последствий инцидентов
1) Цель и принципы
Цель: не допустить эскалации инцидента в отказ сервиса и свести ущерб к минимуму: по времени простоя, деньгам, репутации и регуляторным рискам.
Принципы:- Containment first: остановить распространение сбоя (blast radius ↓).
- Graceful degradation: лучше «работает хуже», чем «не работает вовсе».
- Decouple & fallback: независимые компоненты и безопасные альтернативы.
- Decision speed > perfect info: быстрые обратимые действия (feature flag, route switch).
- Communicate early: один источник правды, четкие статусы и ETA по стадиям.
2) Модель инцидента и таксономия последствий
Влияние: пользователи (регион, сегмент), деньги (GGR/NGR, процессинг), комплаенс (KYC/AML), партнеры/провайдеры.
Типы: деградация производительности, частичный отказ зависимости (PSP, KYC, провайдер игр), регрессия релиза, инцидент данных (задержка витрин/ETL), DDoS/спайк нагрузки.
Уровни (P1–P4): от критического простоя core-флоу до локального дефекта.
3) Паттерны снижения последствий (технические)
3.1 Локализация и ограничение blast radius
Изоляция по шартам/регионам: отключаем проблемный шард/регион, остальные продолжают работу.
Circuit Breaker: быстрый отказ от зависимостей при ошибках/таймаутах ⇒ защита воркеров.
Bulkhead (перегородки): отдельные пулы соединений/очереди для критичных путей.
Traffic Shadowing/Canary: прогон части трафика через новую версию до полного переключения.
3.2 Управляемая деградация (graceful)
Read-only режим: временная блокировка мутаций (например, ставки/депозиты) при сохранении навигации и истории.
Функциональные отсечки: отключение второстепенных виджетов/лендскейпов, тяжелых рекомендаций, «горячих» поисков.
Кэш-фоллбэк: служебные ответы из stale-кэша (stale-while-revalidate), упрощенные модели.
Упрощенные лимиты: снижение размера бэтча/страницы, удлинение TTL, отключение дорогих фильтров.
3.3 Управление нагрузкой
Shed/Throttle: отбрасывать избыточные запросы «справедливо»: по IP/ключу/эндпойнту, с приоритетом core-операций.
Backpressure: ограничение продюсеров по lag потребителей; динамика retry с джиттером.
Queue shaping: выделенные очереди под P1-флоу (выплаты, авторизация) и фоновую аналитику.
3.4 Быстрые переключатели
Feature Flags & Kill-switch: мгновенное отключение проблемной фичи без релиза.
Traffic Routing: переключение провайдера (PSP A→B), обход сбойного датацентра, перевод на «теплую» реплику.
Toggle конфигов: таймауты, ретраи, лимиты QPS — через конфиг-центр с аудитом.
3.5 Данные и отчетность
Отложенные мутации: запись в outbox/лог с последующей доставкой.
Временная денормализация: уменьшение нагрузки на БД чтением из материализованных витрин.
Degrade BI: временно показывать last-good-snapshot с пометкой «данные на 12:00 UTC».
4) Доменные примеры (iGaming)
Провал KYC-провайдера: включаем альтернативного провайдера; для «низкорисковых» лимитов — временная верификация по упрощенному сценарию с пониженными лимитами счетов.
Высокая латентность PSP: временный приоритет на локальные кошельки, снижение лимитов выплат, постановка части выплат в очередь «T+Δ».
Сбой у игрового провайдера: скрываем конкретные тайтлы/провайдера, сохраняем лобби и альтернативы, отображаем баннер «Ведутся работы, попробуйте X/Y».
5) Организация и роли (ICS — Incident Command System)
IC (Incident Commander): единая координация, приоритизация действий.
Ops Lead / SRE: containment, рутинги, фича-флаги, инфраструктура.
Comms Lead: обновления статуса, страницы статуса, внутренний чат/почта.
Subject Matter Owner: владелец затронутой подсистемы (PSP, KYC, провайдер игр).
Liaison к бизнесу: продукт, поддержка, финансы, комплаенс.
Scribe: таймлайн, решения, артефакты для пост-мортема.
Правило: не более 7±2 человек в активном «war-room», остальные — «по запросу».
6) Коммуникации
Каналы: статус-страница, внутренний #incident-канал, PagerDuty/телемост, шаблоны апдейтов.
Темп: P1 — каждые 15–20 мин; P2 — 30–60 мин.
Шаблон апдейта: что сломалось → кого затронуло → что уже сделано → следующий шаг → ориентир по времени следующего апдейта.
Поддержка клиентов: заранее подготовленные макросы и FAQ для L1/L2, маркеры «частичная деградация», компенсационная политика.
7) Метрики успеха и триггеры
MTTD/MTTA/MTTR, Время containment, SLO Burn Rate (1h/6h/24h окна).
Revenue at risk: оценка недополученного GGR/NGR по сегментам.
Blast radius %: доля пользователей/регионов/функций под влиянием.
Comms SLA: своевременность апдейтов статуса.
False-positive/false-negative алертов, вторичные инциденты.
- p95 ключевого API > порог 5 мин подряд → включить кэш-фоллбэк и троттлинг.
- Consumer lag > 2 мин → заморозить продьюсеров non-critical, поднять воркеры.
- PSP success < 97% 10 мин → перевести долю трафика на резервного PSP.
8) Плейбуки (сжатые)
8.1 «Латентность ↑ у /api/deposit»
1. Проверить error% и PSP-внешние таймауты → включить короткие таймауты и джиттерные ретраи.
2. Включить кэш лимитов/справочников, отключить тяжелые проверки «по месту».
3. Частично перевести трафик на резервный PSP.
4. Временно снизить лимиты выплат/депозитов для снижения риска.
5. Пост-фикс: индекс/денорм, усилить асинхронность.
8.2 «KYC зависает»
1. Переключить на альтернативного провайдера, включить «упрощенный KYC» с ограничениями.
2. Кэшировать статусы KYC для уже пройденных.
3. Коммуникация: баннер в профиле, ETA.
8.3 «ETL/BI отстает»
1. Пометить панели «stale» + timestamp.
2. Приостановить тяжелые перестроения, включить инкрементальные.
3. Параллелизм джобов ↑, приоритет на витрины с операционными KPI.
9) Дизайн-решения до инцидента (проактивно)
Таблица фич-флагов: атомарные выключатели по эндпойнтам/провайдерам/виджетам.
Политики троттлинга/шеддинга: заранее согласованные уровни «бронза/серебро/золото» по приоритетам.
Тесты деградации: регулярные «fire-drills», game-days, хаос-эксперименты (добавление задержек/ошибок).
Квоты внешних зависимостей: лимиты, бюджет ошибок, backoff стратегии.
Runbook’и: краткие пошаговые инструкции и команды/конфиги с примерами.
10) Безопасность и комплаенс
Fail-safe: при деградации — блокировать операции с риском нарушений, а не «усиливать ретраи».
PII и финданные: при ручных обходах — строгий аудит, минимальные привилегии, токенизация.
Следы: полный журнал действий IC/операторов, изменение флагов/конфигов, экспорт таймлайна.
11) Анти-паттерны
«Ждем, пока станет ясно» — потеря золотого времени containment.
«Выкручиваем ретраи до победы» — снежный ком и шторм у зависимостей.
Глобальные фич-флаги без сегментации — гасите свечу, не электричество в городе.
Тишина «чтобы не пугать» — рост тикетов, потеря доверия.
Хрупкие ручные процедуры без аудита — риск комплаенса.
12) Чек-листы
Перед релизом критичных изменений
- Канареечный маршрут + быстрый откат (feature flag).
- SLO guardrails и алерты по p95/error%.
- Нагрузка на зависимые сервисы смоделирована.
- Коммуникационный план и владельцы.
Во время инцидента
- Определен IC и каналы связи.
- Применен containment (изоляция/флаги/роуты).
- Включена управляемая деградация.
- Статус-страница обновлена, поддержка уведомлена.
После инцидента
- Пост-мортем ≤ 5 рабочих дней, без «поиска виновных».
- Экшены с владельцами и дедлайнами.
- Тест на повторяемость: сценарий воспроизводится и покрыт алертами/тестами.
- Обновлены плейбуки и тренинги.
13) Мини-артефакты (шаблоны)
Шаблон статуса для клиентов (P1):- Что случилось → Влияние → Корневая причина → Что сработало/не сработало → Долгосрочные фиксы → Action items (владельцы/сроки).
14) Итог
Снижение последствий инцидентов — это дисциплина быстрых и обратимых решений: локализовать, деградировать управляемо, перераспределить нагрузку, коммуницировать прозрачно и закрепить улучшения. Вы выигрываете минуточную «тактическую стабильность» сегодня — и превращаете ее в стратегическую устойчивость завтра.