GH GambleHub

Feature Flags və buraxılışların idarə edilməsi

Feature Flags və buraxılışların idarə edilməsi

1) Əgər buraxılışlar varsa, bayraqlar niyə?

Feature Flags (Fiche bayraqları) deployun açılmasına və funksiyanın daxil edilməsinə imkan verir: kod prod-a sabit və əvvəlcədən daxil olur və biznes daxil edilməsi konfiqurasiya/konsol tərəfindən idarə olunur - seqmentlərə, trafik faizlərinə, bazarlara, VIP/tənzimləyici qruplara, cihazlara və s. Üstünlüklər:
  • Buraxılışların sürəti və təhlükəsizliyi: kiçik artımlar + ani geri dönüş.
  • Radius nəzarət: mütərəqqi rollout, ring, SLO stoppers.
  • Təcrübələr və A/B: multivariate bayraqlar, effektlər statistikası.
  • Əməliyyat ssenariləri: riskli ödəniş/oyun yolları üçün kill-switch.

Əsas prinsip: «ship dark, enable bright» - əvvəlcədən çatdırmaq, şüurlu şəkildə daxil etmək.


2) Bayraq növləri

Boolean: açıq/off fiçalar, təcili stop bayraqları (kill-switch).
Multivariate: davranış variantları (alqoritm A/B/C, limitlər, əmsallar).
Config/Remote Config: parametrləri (taymaut, bahis limitləri, bonus ölçüsü).
Permission/Entitlement: Rollar/tiers funksiyalarına/limitlərinə giriş.
Operational: trafikin marşrutlaşdırılması (kölgə sorğusu, yeni xidmətin daxil edilməsi).


3) Memarlıq və məlumat axını

Control Plane: konsol/bayraq serveri, qaydaların/seqmentlərin saxlanması, audit.
Data Plane (SDK/Proxy/Edge): bayraqların alınması və önbelləklənməsi, yerli qaydaların qiymətləndirilməsi (minimum gecikmə), mövcud olmadıqda folbek.

Yayılma yolları:
  • Pull: SDK vaxtaşırı (ETag/stream) sinxronlaşdırır.
  • Push/Streaming: Server push updates (Server-Sent Events/WebSocket).
  • Edge Cache/Proxy: istifadəçiyə daha yaxın, p99 azaldır.
Prod səviyyəsinə tələblər:
  • Qaydaların yerli qiymətləndirilməsi (hot-path şəbəkə hopu olmadan).
  • Taymaut və folbeklər (bayrağın «bloklama» oxunması olmadan).
  • Konfiqurasiya snapshot imzası/versiyası.

4) Hədəfləmə və seqmentlər

Atributlar: ölkə/region, dil, platforma, KYC səviyyəsi, VIP səviyyəsi, risk sürəti, hesab yaşı, ödəmə metodu, məsuliyyətli oyun limitləri.
Seqmentlər: versiyaları ilə qorunan qaydalar; «yumşaq» (marketinq) və «sərt» (komplayens).
Prioritetlər/münaqişələr: açıq qaydalar, «son təsadüf» testsiz qadağandır.
Geo/tənzimləyici: yurisdiksiyalarına görə məhsulun mövcudluğu bayraqları; dəyişməz predikatlar (məsələn, müəyyən bir ölkə üçün bonus qadağası).

Nümunə qaydaları (JSON):
json
{
"flag": "new_withdrawal_flow",
"default": false,
"rules": [
{"when": {"country": "CA", "kyc_level": "FULL"}, "rollout": 25},
{"when": {"segment": "vip_tier_3_plus"}, "rollout": 100},
{"when": {"country": "DE"}, "force": false}
],
"expiresAt": "2026-03-31T00:00:00Z"
}

5) Proqressiv rollout: strategiyalar

Canary by%: 1% → 5% → 25% → 50% → 100% SLO avto-stop ilə.
Rings: daxili komanda → beta istifadəçilər → bir region → qlobal.
Cihazlar/müştərilər üçün sampling: stickiness (hash ID) nəzərə alın.
Shadow traffic: istifadəçi təsir etmədən yeni bir yola sorğu dublyaj.
Dark launch: aktiv, lakin görünmür (ölçü toplamaq, cache qızdırmaq).

SLO-stop şərtləri (nümunə):
  • API gizli p95 pisləşməsi 'withdraw'> + 15% 10 dəqiqə ərzində.
  • Səhvlər 5xx> 0. 5% və ya ödəniş provayderinin uğursuzluqlarının artması> + 0. 3 p.p.
  • Alert froda/risk-skoring seqmentdə həddən yuxarıda.

6) Kill-switch (təcili bayraqlar)

SRE/On-Call tərəfindən görünən ayrı bir bayraq sinfi.
TTL cache ilə zəmanətli yerli qiymətləndirmə (millisaniyələr).
Geri qaytarılmayan bağlantılar: require reason + postmortem ticket.
Avtomatik hərəkət inteqrasiyaları: bonusun bağlanması, ödənişlərin əl rejiminə keçirilməsi, X. provayderi üçün əmanətlərin qadağan edilməsi.


7) CI/CD və GitOps ilə inteqrasiya

CI: bayraq sxemlərinin, lint qaydalarının, anonim nümunələrə görə «quru qaçış» hədəfləməsinin təsdiqi.
CD: həssas bayraqlar üçün artefaktlar (semver), «approval gates» kimi bayraq konfiqurasiyalarının təşviqi (ödənişlər/komplayens).
GitOps: ayrı bir konfiqurasiya anbarında bayraqlar, merj rekvest = dəyişiklik hadisəsi, audit «qutusundan».


8) Təhlükəsizlik və uyğunluq

RBAC/ABAC: Kim faiz yarada/daxil edə/artıra bilər; vəzifə bölünməsi (tərtibatçı ≠ istehsalçı ≠ məhsul sahibi).
Audit: kim/nə/nə/niyə; əsaslandırma (ticket/JIRA), insidentlərlə müqayisə.
PII-minimallaşdırma: hədəfləmə üçün atributlar anonimləşdirmə/heşləmə yolu ilə keçir.
Snapshot imzası: SDK/Proxy-də bütövlüyü yoxlayın.
Konfiqurasiya çatdırılması üçün SLA: «təhlükəsiz defolt» deqradasiya.


9) Müşahidə və metrika

Əməliyyat otaqları:
  • Bayrağın yayılma müddəti (p50/p95), yerli cache hit-rate, yeniləmə tezliyi.
  • Aktiv bayraqların sayı/köhnəlmiş/» asılmış» (vaxtında çıxarılmamışdır).
  • SLO mühafizəçiləri: gizlilik, səhv, dönüşüm, provayder sabitliyi.
Məhsullar:
  • DORA: deploes tezliyi, açılmadan əvvəl vaxt, açıldıqdan sonra uğursuzluq faizi, MTTR.
  • A/B göstəriciləri: CR, ARPPU, LTV siqnalları, skorerlərə təsiri.

10) Bayrağın həyat dövrü

1. Design: məqsəd/metrika/sahibi/raf ömrü ('expiresAt'), geri dönüş ssenariləri.
2. Implement: SDK çağırışlar, folbeklər, telemetriya «exposure «/» decision ».
3. Rollout: proqressiv təchizatı + SLO qapısı.
4. Stabilize: effekti düzəldir, sənədləri/rutinqləri yeniləyin.
5. Cleanup: kod qollarını silmək, bayrağı bağlamaq, «qalıqları» yoxlamaq.


11) Tətbiq nümunələri

11. 1 Web/Node. js

ts
// Инициализация SDK (псевдо)
const flags = await sdk.init({ sdkKey: process.env.FLAGS_KEY, user: { id: userIdHash, country, vipTier } });

// Не блокировать рендер:
const showNewCashout = flags.bool("new_withdrawal_flow", false);

if (showNewCashout) {
renderNewFlow();
} else {
renderClassic();
}

11. 2 Kotlin / JVM

kotlin val client = FlagsClient(sdkKey = System.getenv("FLAGS_KEY"))
val context = UserContext(id = userHash, country = country, kycLevel = kyc)
val enabled = client.getBoolean("risk_guard_withdrawals", default = true, context = context)
if (!enabled) {
// аварийный режим: все выводы в manual review routeToManual()
}

11. 3 NGINX (map vasitəsilə xarici toggle)

nginx map $http_x_feature $cashout_new {
default 0;
"~enabled" 1;
}

location /withdraw {
if ($cashout_new) { proxy_pass http://new_flow; }
if (!$cashout_new) { proxy_pass http://classic_flow; }
}

12) Risklərin idarə edilməsi və mütərəqqi addımlar

Daxil etmə addımları: 1% işçilər → 5% «beta» → 10% RU → 25% EU → 100% DE istisna olmaqla (tənzimləyici).
Məhdudlaşdırıcılar: maksimum 1 addım/30 dəq; pəncərə üçün metrik sabitlik tələbi 15 dəq.
Avto-stop: platforma səviyyəsində siyasət (aşağıda bax: OPA).

OPA-avto-stop siyasəti (sadələşdirilmiş):
rego package flags.guard

deny[msg] {
input.flag == "new_withdrawal_flow"
input.metrics["withdraw_5xx_rate"] > 0.5 msg:= "Stop rollout: withdraw 5xx too high"
}

13) Giriş və koordinasiyanın idarə edilməsi

Change Types: standart (təhlükəsiz) vs həssas (ödənişlər/ödənişlər/limitlər).
Approvals: məhsul sahibi + texniki. məsul + komplayens (yurisdiksiyalar üçün).
Müvəqqəti pəncərələr (freeze): yüksək riskli dövrlərdə (prime-time, böyük turnirlər) daxil olmağın/genişləndirmənin qadağan edilməsi.


14) Təcrübələr və statistika

Exposure events: Bayrağın həllini atributlarla qeyd edin.
Analitika: cari rollout dəyəri, seqmentlər, dönüşüm/səhv təsiri.
Statistik yoxlamalar: düzgün split, nəzarət kovariatları (qurğular/geo).
Etika və tənzimləmə: yerli hüquqla məhdudlaşan seqmentasiyalardan qaçınmaq.


15) Anti-nümunələr

kodda 'expiresAt', «budaqlar qəbiristanlığı» olmadan uzun ömürlü bayraqlar.
Hot-path-da SDK şəbəkə çağırışını bloklayın.
Artıq PII hədəfləmə, atributların anonimləşdirilməməsi.
SLO mühafizəçiləri/avtomobil dayanacağı olmadan qoşulma.
Yüksək riskli axınlar üçün heç bir kill-switch (depozitlər/çıxışlar/bonuslar).
Audit və əsaslandırma olmadan bayraqların «gizli» əl düzəlişləri.


16) Giriş çek siyahısı (0-60-90)

0-30 gün

Bayraq platformasını seçin/self-host (SDK, proxy, önbellək) hazırlayın.
Sxemi daxil edin ('flag', 'owner', 'purpose', 'expiresAt', 'risk _ level').
SLO metriklərini platformaya qoşun (gizlilik/açar API səhvləri).

31-60 gün

Həssas bayraqlara approvals əlavə, OPA mühafizəçiləri.
Proqressiv strategiyaları (percent/rings), kill-switch panelini konfiqurasiya edin.
CI bayraq sxemi linter inteqrasiya; ilk «asılmış» təmizləməyə başlayın.

61-90 gün

GitOps ilə tam inteqrasiya (bayraqların MR redaktəsi, audit).
Vizual daşbordlar: coverage SDK, paylanma vaxtı,% cash hitləri.
Müntəzəm «Flag Debt Day»: kodu silmək və bayraqları bağlamaq.


17) Yetkinlik metrikası

Texnika: p95 konfiqurasiya qəbul <5 s; cache hit-rate SDK> 95%;% bayraqlar ilə 'expiresAt'> 90%.
Proseslər: approvals ilə 100% həssas bayraqlar; orta «geri dönüş vaxtı» <3 dəqiqə.
Kod gigiyenası: Qlobal qoşulmadan sonra 30 gün ərzində qapalı bayraqların payı> 80%.
Biznes effekti: DORA-nın təkmilləşdirilməsi (buraxılış tezliyi ↑, MTTR ↓), buraxılış hadisələrinin azalması.


18) Proqramlar: şablonlar və siyasətlər

Bayraq sxemi (YAML)

yaml flag: new_withdrawal_flow owner: payments-team risk_level: high purpose: "Новый поток вывода средств"
expiresAt: "2026-03-31T00:00:00Z"
sla:
propagation_p95_ms: 3000 slo_guards:
withdraw_p95_ms_increase_pct: 15 withdraw_5xx_rate_pct: 0.5 approvals:
required: ["product_owner","tech_lead","compliance"]

«Əbədi bayraqlar yoxdur» siyasəti (linter üçün şərti)

yaml rules:
- check: expiresAt max_days_from_now: 180 action: error

SDK-hadisə müqaviləsi (exposure)

json
{
"event": "flag_exposure",
"flag": "new_withdrawal_flow",
"variant": "on",
"userKey": "hash_abcdef",
"context": {"country":"CA","vipTier":"3"},
"traceId": "9f1c...a2",
"ts": 1730623200000
}

19) Nəticə

Feature Flags dəyişiklik üçün "səs tutacağı 'dır. Mütərəqqi qoşulmalar, SLO mühafizəçiləri, sərt audit və müntəzəm təmizləmələri birləşdirin və bayraqları CI/CD və GitOps-a bağlayın. Nəticədə, buraxılışlar tez-tez, idarə olunan və təhlükəsiz olacaq və insident riski proqnozlaşdırıla bilən və nəzarət edilə bilər.

Contact

Bizimlə əlaqə

Hər hansı sualınız və ya dəstək ehtiyacınız varsa — bizimlə əlaqə saxlayın.Həmişə köməyə hazırıq!

İnteqrasiyaya başla

Email — məcburidir. Telegram və ya WhatsApp — istəyə bağlıdır.

Adınız istəyə bağlı
Email istəyə bağlı
Mövzu istəyə bağlı
Mesaj istəyə bağlı
Telegram istəyə bağlı
@
Əgər Telegram daxil etsəniz — Email ilə yanaşı orada da cavab verəcəyik.
WhatsApp istəyə bağlı
Format: ölkə kodu + nömrə (məsələn, +994XXXXXXXXX).

Düyməyə basmaqla məlumatların işlənməsinə razılıq vermiş olursunuz.