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
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 = управляемые улучшения.
Региональная изоляция и комплаенс = соответствие законам и доверие.