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 на критичні потоки (депозит/виведення/КУС, live-ігри).
Шкала пріоритету: P1...P4, власник, ETA, комунікація (банер, статус-сторінка, партнери).
Blameless постмортем з action items і датами.
Чергування on-call, чат-оповіщення, статусні оновлення кожні N хвилин.
Док-слід: хто/коли/що викладав (commit, артефакт, середовище, прапор).

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

SAST/DAST/IAST, секрет-скан в CI.
mTLS servis↔servis, 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.
КУС/комплаєнс: окремий 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).

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