GH GambleHub

Staging: деплой и синхронизация

TL;DR

Staging — это предпрод среда с максимальным паритетом продакшна, где проверяются контракты, миграции, конфиги, вебхуки и цепочки выплат на анонимизированных данных и симуляторах. Успех дают: immutable-деплой (blue/green), data-parity без PII, schema-registry, shadow-трафик, canary-план, фича-флаги, четкие gates и авто-rollback.

1) Роль staging и паритет с продом

Цель: подтвердить, что релиз безопасен для денег и игроков: схемы БД, миги, конфиги, лимиты, вебхуки, маршрутизация, observability.
Паритет: те же образы, та же топология (ingress/gateway, mesh, очереди, кэши, БД-движки, версии ядра/драйверов), те же policy (auth/rate/circuit).
Отличия: данные обезличены, интеракции с внешними поставщиками — через sandbox/симуляторы, DNS/домены и секреты — отдельные.

2) Топология и доступ

Домены: `staging.api.example.com`, `staging.ws.example.com`.
Изоляция: отдельные VPC/кластер, независимые секреты (KMS/Vault), mTLS внутри.
Доступ: SSO + RBAC (roles: `release-manager`, `qa`, `dev`, `partner-view`), временные токены, аудит входов.

3) Конвейер деплоя (release train)

1. Build (tag, SBOM, сигнатуры артефактов).
2. Tests (unit/integration/contract, security linters).
3. Pack/Scan (SAST/DAST, vuln-gates).
4. Deploy to Staging (immutable, blue/green или rolling с контролем p95/p99).
5. Staging Gates (см. §10).
6. Canary Prod (1→5→25→50→100%).
7. Auto-rollback при нарушении SLO/ошибках.

4) Синхронизация конфигураций

GitOps: все конфиги и политики в Git; единые чарты/манифесты для prod/staging с `values.staging.yaml`.
Parity-контроль: запрещены «ручные правки» в staging. Drift выявляется автоматикой (policy-diff, kube-diff).
Secrets: отдельные ключи и токены; ротация независимо от прод.

5) Схемы: API/БД/ивенты

Единый registry: OpenAPI, Protobuf descriptors, GraphQL SDL, событийн. словарь.
Breaking-checks в CI: запрет разрушающих изменений.
Миграции БД: `up` на staging перед промоушеном; возможность `down`/reversible; dry-run с snapshot-оценкой времени.
Event-совместимость: «двойная запись» (старый+новый формат) при переходах.

6) Данные и синхронизация

Источник: регулярный dump из прод → анонимизация/токенизация/маскирование → импорт в staging.
PII/PAN/KYC документы: удалены/заменены синтетикой; суммы и частоты — искажены (noise) для приватности.
Синхро-окна: план/крон (например, каждую ночь), мониторинг длительности и ошибок.
Идентификаторы: сохраняйте плотность и кардинальность (для реалистики нагрузочных тестов).

7) Внешние интеграции (PSP/KYC/провайдеры)

Sandbox-учетки или симуляторы с HMAC-вебхуками, ретраями, идемпотентностью.
Развилка по флагу: реальный sandbox поставщика или наш симулятор (переключатель в конфиге).
Webhooks: на staging включены подписи, окно времени, DLQ/replay-консоль.
Платежные рельсы: реальные payout/auth на staging запрещены на уровне кода (hard block).

8) Shadow-трафик и реплеи

Shadowing: копируем подмножество прод-чтений в staging (без побочных эффектов), сравниваем ответы/латентность.
Traffic mirroring: ≥ 1–5% GET/статусов. Мутации shadow-не допускаются.
Synthetic replay: прогон исторических трасс (masked) для регресса.

9) Фича-флаги, freeze и совместимость

Флаги управляют поведением без redeploy; конфиги флагов — версионируемые.
Release freeze на период крупного события/нагрузки; staging фиксируется в «зеркале» прод.
Back/forward совместимость: сначала чтение нового формата, затем запись.

10) Gates: что проверяем перед промоушеном

SLO: p95/p99 latency, error-rate, saturations в коридоре.
Contract: API diff — без breaking; вебхуки подписаны, идемпотентность ок.
DB миграции: время в бюджете, нет блокировок «долгоиграющих» таблиц, plan-анализ.
Payments/KYC: позитив/негатив кейсы прошли, ретраи вебхуков → 2xx < 3 c p95.
Rate/quotas: корректные 429/Retry-After.
Security: уязвимости ниже порога; секреты/permissions валидны.
Docs/SDK: OpenAPI/SDL/Proto опубликованы в registry; Postman/SDK обновлены.
Runbooks: плейбуки и rollback-план проверены.

11) Наблюдаемость и алерты

Метрики: RPS, p50/p95/p99, 4xx/5xx, open circuits, queue len, cache hit, webhook delivery.
Трейсы: сквозная корреляция `trace_id`; сравнение с прод (разница латентности).
Логи: маскирование, сэмплирование, «тихие» ошибки (WARN spikes).
Дашборды staging: отдельные, но идентичные по структуре прод; зеленые/красные SLO-полосы.

12) Деплой стратегии

Blue/Green на staging (предпочтительно): быстрый свитч, легкий rollback.
Rolling с маленькими батчами и health-проверками.
Canary внутри staging: процентный трафик между `staging-a` и `staging-b` для A/B профилирования.
DB миграции: zero-downtime паттерны (expand→migrate→contract), «двойная запись», блок-поиск.

13) Безопасность и комплаенс

mTLS, WAF, DDoS-профиль активны.
RBAC/ABAC на эндпоинты админок; запрет интеграторов к внутренним панелям.
Сроки логов короче прод; отчеты аудита релизов сохраняются.
Проверка ключей/сертов: отдельные JWKS/серты, ротации тестируются на staging.

14) Плейбуки инцидентов (staging)

Провал SLO после миграции: откат на `green`, откат схемы (если возможен), включение деградации (обрез «дорогих» агрегатов).
Всплеск 5xx: открыть circuit-breaker к хрупкому апстриму, поднять backoff на BFF, включить кэш.
Утечка PII в staging: немедленная очистка дампов, отзыв секретов, аудит доступов, фиксация политики маскирования.
Запрет вебхуков: временно перевод в dead-letter, ручной replay после фикса.

15) Чек-листы

15.1 Promotion в прод

  • Все gates (§10) пройдены; отчет прикреплен.
  • Canary-план и критерии стопа определены.
  • Фича-флаги подготовлены (вкл/выкл/градации).
  • Документация/SDK/портал обновлены.
  • Стейкхолдеры уведомлены, окна поддержки согласованы.

15.2 Rollback

  • Blue/Green: трафик на предыдущий слот, конфиги откатились.
  • Схемы: обратимые или «флаг-деградация» до безопасного состояния.
  • Пост-мортем шаблон и сбор артефактов.

16) Мини-сниппеты

GitOps promotion (псевдо)

yaml stages:
- deploy-staging
- verify-gates
- promote-prod deploy-staging:
script: kubectl apply -f k8s/overlays/staging verify-gates:
script:./scripts/check_slo. sh &&./scripts/check_contracts. sh promote-prod:
when: on_success script: kubectl apply -f k8s/overlays/prod

Expand→Migrate→Contract (DDL)

sql
-- expand
ALTER TABLE payouts ADD COLUMN note TEXT NULL;
-- migrate (background job copies data)
-- contract
ALTER TABLE payouts DROP COLUMN comment;

Shadow header (маркировка запросов)


X-Shadow-Trace: 1

Идемпотентность мутаций на staging

pseudo if store. has(idempotency_key) return store. get(idempotency_key)
res = do()
store. set(idempotency_key,res,ttl=72h)
return res

17) Антипаттерны

Staging «почти как прод», но с иными лимитами/фильтрами → ложноположительные результаты.
Реальные PAN/доки в staging.
Ручные «горячие» правки конфигов.
Миграции без оценки времени и блокировок.
Нет shadow-трафика/реплеев — баги всплывают только в проде.
Promotion без rollback-плана.

18) SLO для staging (ориентиры)

Uptime: ≥ 99.5% (витрина интеграций не должна падать).
Latency добавка к прод: ≤ +10–20%.
Webhooks p95: ≤ 3 c до 2xx с ретраями.
Error budget: 5xx шлюза ≤ 0.1% на релиз-окно.
Доля shadow check-ов: ≥ 1% чтений.

Резюме

Staging — это не «песок», а реальная репетиция продакшна: тот же стек и политики, анонимные данные, симуляторы рельс, тени прод-трафика, строгие gates и мгновенный rollback. Заворачивайте все в GitOps + registry схем + immutable деплой, держите фича-флаги и canary-план, и ваши релизы станут предсказуемыми, а инциденты — редкими и управляемыми.

Contact

Свяжитесь с нами

Обращайтесь по любым вопросам или за поддержкой.Мы всегда готовы помочь!

Telegram
@Gamble_GC
Начать интеграцию

Email — обязателен. Telegram или WhatsApp — по желанию.

Ваше имя необязательно
Email необязательно
Тема необязательно
Сообщение необязательно
Telegram необязательно
@
Если укажете Telegram — мы ответим и там, в дополнение к Email.
WhatsApp необязательно
Формат: +код страны и номер (например, +380XXXXXXXXX).

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