GH GambleHub

DevOps-практики и CI/CD

1) Цели и принципы

Быстро и безопасно: короткие циклы, маленькие партии изменений, автоматические проверки.
Повторяемость: инфраструктура как код (IaC), среда = код + политика.
Наблюдаемость: метрики/трейсы/логи из коробки, SLO как контракт.
Комплаенс: аудит, контроль изменений, региональная изоляция данных.

Золотое правило: “Сначала качество, потом скорость — иначе скорость никогда не появится”.

2) Ветвления и окружения

Trunk-based + feature flags — базовый выбор.

Короткие фиче-ветки (≤ 2–5 дней), ежедневные merge в trunk.
Флаги (server-side) для инкрементальной доставки и безопасных откатов.
Git-окружения: `dev` → `stage` → `prod` (+ региональные `prod-eu`, `prod-latam`).
Промоушн артефактов: один собранный образ продвигается через среды (immutable tag by digest).

Когда GitFlow: редкие релизы регуляторных сборок/SDK — тогда релиз-ветки + “hardening”.

3) Пирамида качества и «красная линия»

1. Статический анализ (SAST, линтеры, лицензии).
2. Unit/Property-based тесты (секунды).
3. Contract-tests (CDC) для API и событий (OpenAPI/AsyncAPI, Schema Registry).
4. Интеграционные (Testcontainers, локальные брокеры).
5. E2E критичных путей: регистрация → KYC → депозит → запуск игры → вывод.
6. Нагрузочные/хаос-тесты для платежей/кошелька/провайдеров игр.

Качество не проходит → деплой блокируется. Нет «ручных исключений» без change-record.

4) Цепочка поставки ПО (supply chain)

SBOM для каждого образа/пакета (CycloneDX/SPDX).
Подписи артефактов (cosign), политика “только подписанные” в admission.
SCA/Dependabot: уязвимости и лицензии.
Provenance/SLSA: воспроизводимые сборки, закрытый билд-агент, attestations.
Секреты: в менеджере (KMS/External Secrets), ни одного секрета в репо/логах.

5) GitOps и IaC

Infra as Code: Terraform/Pulumi для облака; Helm/Kustomize для k8s.
GitOps-контроллер (ArgoCD/Flux): декларативные манифесты, PR-ревью, audit trail.
Окна/заморозки: турнирные недели/пиковые часы — авто-пауза прод-релизов.
Политики OPA/Kyverno: no `:latest`, non-root, read-only FS, запрет hostPath.

6) Прогрессивная доставка

Canary: 1→5→10→25→50→100% по метрикам guardrail (p95 latency, 5xx, error budget burn).
Blue-Green: быстрый переключатель + план отката.
Shadow/Mirroring: копирование запросов без влияния на ответ (для новых адаптеров PSP).
Feature flags: включение по сегментам (регион/роль/партнер/канал) + kill-switch.

7) Миграции БД (expand-and-contract)

Шаг 1: расширяем схему (новые колонки/индексы) — совместимо со старым кодом.
Шаг 2: деплой кода, пишущего в обе версии/поля.
Шаг 3: миграция данных фоновой джобой, метрики прогресса.
Шаг 4: переключение чтения на новые поля.
Шаг 5: удаление старого — отдельный релиз.
Запрет блокирующих DDL в прайм-тайм; для высоких таблиц — онлайн-миграции.

8) Наблюдаемость и SLO

Метрики: RPS, p50/95/99, 4xx/5xx, saturation (CPU/mem/queue), DLQ/лаг брокеров.
Бизнес-метрики: TTP (time-to-play), TtW (time-to-wallet), FTD-success, KYC-TtV.
Трейсы: trace-id от шлюза до БД.
SLO: например, `Deposit p95 ≤ 300–500 мс`, `success ≥ 98.5%`, `availability ≥ 99.9%`.
Burn rate алерты + авто-пауза релизов при деградации.

9) Инциденты, постмортемы, смены

Runbooks на критические потоки (депозит/вывод/KYC, live-игры).
Шкала приоритета: P1…P4, владелец, ETA, коммуникация (баннер, статус-страница, партнеры).
Blameless постмортем с action items и датами.
Чередования on-call, чат-оповещения, статусные обновления каждые N минут.
Док-след: кто/когда/что выкладывал (commit, артефакт, среда, флаг).

10) Безопасность и комплаенс (DevSecOps)

SAST/DAST/IAST, секрет-скан в CI.
mTLS сервис↔сервис, JWT с малым TTL, ротация ключей.
Masking PII/PAN в логах/трейсах; WORM-журналы админ-действий.
Geo-segregation: кластеры/БД по регионам, маршрутизация через шлюз.
Change management: тикет/approval для чувствительных зон (кошелек/лимиты).

11) DORA-метрики и FinOps

Deployment Frequency (ежедневные малые релизы).
Lead Time for Changes (идеал: часы).
MTTR (восстановление: минуты/часы).
Change Failure Rate (цель ≤ 15%).
FinOps: стоимость окружений, RPS-кэширование, теплые пулы, авто-пауза воркеров, “cost per transaction”.

12) iGaming-специфика

Пики (турниры/лайв): заморозки крупных изменений, прогрев кэша/образов, бусты квот.
Платежи/кошелек: отдельные пулы/узлы, повышенные SLO, канареечный rollout по регионам, двойная телеметрия провайдеров PSP.
KYC/комплаенс: отдельный cadence релизов, обязательные пост-апрувы комплаенса.
Партнеры/аффилиаты: безопасные SDK, версия API с окном поддержки и мониторингом старых клиентов.

13) Пример CI/CD (YAML, GitHub Actions → ArgoCD)

yaml name: ci-cd on:
push:
branches: [ main ]
paths: [ "services/wallet/" ]
jobs:
build_test_scan:
runs-on: ubuntu-latest steps:
- uses: actions/checkout@v4
- name: Setup Node uses: actions/setup-node@v4 with: { node-version: 22 }
- run: npm ci --omit=dev working-directory: services/wallet
- run: npm test -- --ci working-directory: services/wallet
- name: Lint & SAST run: npm run lint && npm run sast working-directory: services/wallet
- name: Build image run:
docker build -t registry. local/wallet:${{ github. sha }} -f Dockerfile.
cosign sign --key $COSIGN_KEY registry. local/wallet:${{ github. sha }}
- name: SBOM & Scan run:
syft packages registry. local/wallet:${{ github. sha }} -o cyclonedx-json > sbom. json trivy image --exit-code 1 --severity HIGH,CRITICAL registry. local/wallet:${{ github. sha }}
- name: Push image run: docker push registry. local/wallet:${{ github. sha }}

deploy_stage:
needs: build_test_scan runs-on: ubuntu-latest steps:
- uses: actions/checkout@v4
- name: Bump Helm values (image tag)
run: yq -i '.image. tag = "${{ github. sha }}"' helm/wallet/values-stage. yaml
- name: Create PR to gitops repo run: gh pr create -R org/gitops -B stage -H stage-bump/wallet-${{ github. sha }} -t "wallet:${{ github. sha }}" -b "Promote to stage"

promote_prod:
if: github. ref == 'refs/heads/main'
needs: deploy_stage runs-on: ubuntu-latest steps:
- name: Gate: SLO/quality checks run:./scripts/gates/check_stage_health. sh # p95, 5xx, e2e ok
- name: Canary 10%
run:./scripts/gitops/canary. sh wallet ${{ github. sha }} 10
- name: Auto-pause on degradation run:./scripts/gates/guardrails. sh./scripts/gitops/rollback. sh wallet
- name: Roll to 100%
run:./scripts/gitops/rollout. sh wallet ${{ github. sha }} 100
💡 Идея: собираем и подписываем единственный образ, публикуем SBOM, продвигаем через GitOps; прод-роллаут — канареечный, с guardrails.

14) Чек-листы

Перед merge в main

  • Unit/CDC/интеграция зеленые.
  • Линтеры/SAST/лицензии чистые.
  • Обновлены схемы OpenAPI/AsyncAPI и миграции БД.
  • Фиче-флаги добавлены, фоллбеки определены.

Перед релизом в prod

  • Образ подписан, SBOM приложен, уязвимости HIGH/CRIT закрыты.
  • Дашборды/алерты созданы; SLO-гейты подключены.
  • План отката, kill-switch, Shadow (если нужно).
  • Региональные ограничения и политика данных подтверждены.

Инциденты

  • Runbook найден и актуален.
  • Коммуникация пользователям/партнерам (шаблон, ETA).
  • Постмортем в 48 часов, action items с датами.

15) Анти-паттерны

«Собираем заново для каждой среды» (нет промоушна артефакта).
Ручные шаги деплоя без аудита/повторяемости.
Миграции БД «в лоб», несовместимые ответы API.
Секреты в переменных CI или в репозитории.
Катастрофические фичи без флага/отката.
Отсутствие SLO/guardrails при канареечном релизе.
Логи с PII/PAN, отсутствие маскирования.

16) Полезные шаблоны microcopy

Релиз (партнерам):
  • «Мы выкатываем обновление платежного модуля поэтапно (10%→100%). Возможны кратковременные задержки зачисления до 2 минут. ETA завершения — 21:00 EET.»
Инцидент (баннер в продукте):
  • «Платежный провайдер X нестабилен. Зачисление может занять до 15 минут. Мы работаем над исправлением. Следующее обновление статуса — через 30 минут.»
Откат:
  • «Обновление приостановлено из-за роста задержек. Возвращаем предыдущую версию. Данные и операции сохранены.»

17) Процесс внедрения (4 спринта)

1. Стандарты качества и пайплайн: SAST/Unit/CDC, единый образ, подписи, SBOM.
2. GitOps + окружения: Helm/Kustomize, ArgoCD, промоушн артефакта, политика секретов.
3. Прогрессивные релизы и SLO-гейты: canary/shadow, guardrails, автопауза.
4. Надежность и стоимость: хаос-тесты, автоскейл/теплые пулы, FinOps-дашборды.

Итоговая шпаргалка

Trunk + flags + маленькие партии = скорость без стресса.
Единый подписанный артефакт + SBOM = контролируемая цепочка поставки.
GitOps + политики = воспроизводимость и аудит.
Canary/Blue-Green + SLO-гейты = безопасные релизы.
Expand-and-contract для БД = нулевые простои.
Наблюдаемость и DORA = управляемые улучшения.
Региональная изоляция и комплаенс = соответствие законам и доверие.

Contact

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

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

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

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

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

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