GH GambleHub

Парчамҳои хусусият ва нашри хусусиятҳо

Парчами хусусият (FF) шарти идорашаванда мебошад, ки рафтори системаро бидуни баровардани рамз имкон медиҳад/хомӯш мекунад. Парчамҳо ба шумо имкон медиҳанд: хусусиятҳои бехатарро паҳн кунед, гурӯҳҳои мақсадноки корбарон/бозорҳо/иҷорагирон, ҷузъҳои мушкилро зуд хомӯш кунед, таҷрибаҳо гузаронед ва параметрҳоро дар вақти корӣ танзим кунед.

Ҳадафҳои асосӣ:
  • Радиуси таркишро барои релизҳо кам кунед.
  • Ҷойгиркунӣ ва фаъолсозии алоҳида.
  • Идоракунии тағироти шаффофро бо аудит, SLO ва бозгашти як клик иҷозат диҳед.

1) Намудҳои парчамҳо ва кай ба кор бурдани онҳо

Барориши парчамҳо - марҳила ба марҳила ба марҳила ворид намудани хусусияти нав (dark → canary → ramp-up → 100%).
Ops/kill-switch - қатъшавии фаврии вобастагӣ (провайдер, зерсистема, ҳисобҳои вазнин).
Таҷриба (A/B, бисёрвариантҳо) - ба вариантҳо тақсим кардани трафик (вазнҳо, сатилҳои часпанда).
Иҷозат/Ҳуқуқ - дастрасӣ ба хусусиятҳо аз рӯи нақш/нақша/қаламрав.
Конфигуратсияи дурдаст - параметрҳои рафтор (ҳадд, вақт, формула) аз парчам/конфигуратсия.
Парчамҳои муҳоҷират - схемаҳои гузариш/роҳҳои маълумот (гузариш ба шохиси нав/DB/endpoint).

Анти-намуна: ҳамон парчам "дар бораи ҳама чиз" - ба хусусият, коммутатор ва параметрҳо тақсим шудааст.

2) Модели маълумот дар бораи парчам (ҳадди аққал)

yaml flag:
key: "catalog. new_ranker"
type: "release"    # release      ops      kill      experiment      permission      config     migration description: "New Directory Ranking"
owner: "search-team@company"
created_at: "2025-10-01T10:00:00Z"
ttl: "2026-01-31" # delete deadline after 100% enable rules:
- when:
tenant_id: ["brand_eu","brand_latam"]
region: ["EE","BR"]
user_pct: 10 # progressive percentage then: "on"
- when:
kyc_tier: ["unverified"]
then: "off"
variants: # for experiments
- name: "control"; weight: 50
- name: "v1"; weight: 30
- name: "v2"; weight: 20 payload:
v1:
boost_freshness: 0. 3 boost_jackpot:  0. 2 v2:
boost_freshness: 0. 2 boost_jackpot:  0. 4 prerequisites: # dependent flags/schema versions
- key: "catalog. index_v2_ready"
must_be: "on"
audit:
require_ticket: true change_window: "09:00-19:00 Europe/Kyiv"
safeguards:
max_rollout_pct: 50 # stop threshold auto_rollback_on:
p95_ms: ">200"
error_rate: ">2%"

3) Арзёбӣ ва ҳадаф

Ключи таргетинга: 'иҷорагир _ ид, минтақа/литсензия, асъор, канал, маҳал, нақш, нақша, дастгоҳ, user_id, когорт, kyc_tier, experiment_bucket'.
Тартиби арзёбӣ: шартҳои § рад кардани қоидаҳо → иҷозат додан ба қоидаҳо → пешфарз.
Сатилҳои часпанда: барои таҷрибаҳо, муайянкунандаи устуворро (масалан, 'hash (user_id, flag_key)) хэш кунед, то корбар ҳамеша як вариантро гирад.

Псевдокод:
ts result = evaluate(flag, context)  // pure function if (!prereqs_ok(result)) return OFF if (deny_match(result, ctx)) return OFF if (allow_match(result, ctx)) return resolve_variant_or_on(result, ctx)
return flag. default

4) Тақсимот ва меъмории FF

Интихобҳо:
  • Сервер-паҳлӯи SDK (тавсия дода мешавад): манбаъҳои ҳақиқат ва кэш дар қафо; муттаҳид кардани мантиқ.
  • Арзёбии Edge/CDN: ҳадафи зуд ба периметр (дар он ҷо PII/асрори вуҷуд надорад).
  • SDK-и муштарӣ: вақте ки ба шумо фардикунонии UI лозим аст, аммо танҳо бо контексти ҳадди аққал ва қоидаҳои ҳассос нест.
  • Config-as-Code: нигоҳ доштани парчамҳо дар анбор, санҷиши CI, паҳнкунӣ тавассути CD.
Кеши стратегӣ:
  • Оғози пурборкунӣ + навсозиҳои ҷараён (SSE/GRPC) + бозгашт ба лаҳзаи охирин.
  • Парчамҳои SLA "тару тоза": p95 ≤ 5 s.

5) Стратегияҳои озодкунӣ

5. 1 Оғози торик

Хусусият фаъол аст, аммо барои корбар ноаён аст; ченакҳо ва хатогиҳоро ҷамъ кунед.

5. 2 Канария

Мо 1-5% трафикро дар як қаламрав/иҷорагир дохил мекунем; монитор p95/p99, хатогиҳо, табдилдиҳӣ.
Шароити таваққуф - ҳадди ниҳоии автокатоф аз рӯи ченакҳо.

5. 3 Пешрафти пешрафта

10% → 25% → 50% → 100% бо санҷиши дастӣ/автомобилӣ ба нақша гирифта шудааст.

5. 4 Соя/оина

Мо дархостҳоро ба роҳи нав такрор мекунем (бе ягон натиҷа) ва натиҷаҳо/таъхирро муқоиса мекунем.

5. 5 кабуд/сабз + FF

Мо ду версияро ҷойгир мекунем; парчам трафикро идора мекунад ва вобастагиро аз рӯи сегмент иваз мекунад.

6) Вобастагӣ ва пайдарҳамии хизматрасонӣ

Шартҳои зарурӣ ва "парчамҳои саломатӣ" -и омодагиро истифода баред: шохис сохта мешавад, муҳоҷират ба анҷом мерасад.
Ҳамоҳангсозӣ тавассути рӯйдодҳо: 'Парчам иваз карда шуд (flag_key, миқёс, new_state)'.

Барои сенарияҳои интиқодӣ, гузариши думарҳиларо истифода баред:

1. имкон медиҳад, ки роҳи хондан → 2) чекҳои санҷишӣ → 3) имкон диҳед, ки навиштан/паҳлӯҳои эффектҳо.

  • Шартномаҳои хидматӣ: бо нобаёнӣ бояд OFF бехатар бошад.

7) Мушоҳида ва SLO

Нишондиҳандаҳо барои як парчам/вариант/сегмент:
  • 'flag _ eval _ p95 _ ms', 'хатогиҳо _ rate', 'config _ freshness _ ms'.
  • Нишондиҳандаҳои тиҷорат: 'ctr', 'табдили', 'ARPU', 'нигоҳдорӣ', посбонҳо (масалан, Ҳодисаҳои RG).
  • Ҳудудҳои худкори SLO барои автокатопа.

Сабтҳо/пайгирӣ: 'flag _ key', 'variant', 'decision _ source' (сервер/edge/client), 'context _ hash' илова кунед.

Панели панелҳо: "зинапоя" бо ҳадди ниҳоӣ, хатогиҳои харитаи гармӣ аз рӯи сегментҳо.

8) Бехатарӣ ва риояи

PII-минималӣ дар заминаи.
RLS/ACL: кӣ метавонад парчамҳоро иваз кунад (аз рӯи домен/бозор).
Тирезаҳои соатии тағирот (тағир додани тирезаҳо) ва "тасдиқи дукарата" барои парчамҳои ҳассос.
Аудити тағйирнопазир: кӣ/кай/чӣ/чаро (пайванди чипта/ҳодиса).
Қаламравҳо: Парчамҳо набояд мамнӯъиятҳои танзимкунандаро вайрон кунанд (масалан, бозӣ дар кишвари манъшударо дар бар мегирад).

9) Идоракунии парчамҳои "дарозмуддат"

Ҳар як парчам санаи TTL/несткунӣ дорад.
Пас аз дохил кардани 100% - эҷод кардани вазифа барои нест кардани шохаҳои код, вагарна "қарзи парчам" меафзояд.
Парчамҳоро ҳамчун "муҳоҷират "/" якбора" ишора кунед, онҳоро аз "иҷозат/конфигуратсия" -и доимӣ ҷудо кунед.

10) Намунаи шартномаи API/SDK

Баҳодиҳии API (тарафи сервер)

http
POST /v1/flags/evaluate
Headers: X-Tenant: brand_eu
Body: { "keys":["catalog. new_ranker","rgs. killswitch"], "context": { "user_id":"u42", "region":"EE" } }
→ 200
{
"catalog. new_ranker": { "on": true, "variant":"v1", "as_of":"2025-10-31T12:10:02Z" },
"rgs. killswitch":  { "on": false, "variant":null, "as_of":"2025-10-31T12:10:02Z" }
}

Муштарии SDK (кеш, афтиш)

ts const ff = await sdk. getSnapshot()     // bootstrap const on = ff. isOn("catalog. new_ranker", ctx)
const payload = ff. payload("catalog. new_ranker", "v1")

11) Ҳамкорӣ бо дигар схемаҳо

Маҳдудиятҳо/квотаҳо: парчамҳо метавонанд RPS-ро кам кунанд/дар тӯли ин ҳодиса ҷилавгирӣ кунанд.
Қатъи гардиш/таназзул: kill-switchi роҳҳои вазнинро ғайрифаъол мекунад ва таназзулро имкон медиҳад.
Феҳрист/Фардикунонӣ: Парчамҳо вазнҳо/қоидаҳои рейтингро иваз мекунанд (тавассути конфигуратсияи дурдаст).
Муҳоҷирати пойгоҳи додаҳо: парчамҳо тадриҷан мехонанд/менависанд ба схемаи нав (хондан-нусхабардорӣ → дугона-навиштан → навиштан-ибтидоӣ).

12) Китобҳои бозӣ (китобчаҳо)

1. Ҳодиса пас аз дохил кардани 25%

Autocatoff барои ҳама/сегмент, чипта ба занг, ҷамъоварии статистика, RCA оғоз ёфт.
Ба воситаи парчами муҳоҷират муваққатан таназзул/шохаи кӯҳна имкон медиҳад.

2. афзоиши каталоги p95

Ҳадди 'p95 _ ms> 200' - автокатоф; тасвири мухтасари гузоришҳоро бо 'flag _ key = каталог ислоҳ кунед. new_ranker'.
Фаъол кардани конфигуратсияи сарборӣ.

3. Набудани салоҳият

Парчами иҷозат ба таври хато бозиро дар 'NL' - OFF + аудити пас аз факт боз кард ва қоидаҳои посбононро "минтақа инкор мекунад" илова кард.

4. Фарқият дар A/B

Озмоишро қатъ кунед, таҳлили CUPED/стратификатсияро анҷом диҳед, бо тарозуи навсозишуда дубора рол кунед.

13) Санҷиш

Воҳид: арзёбии детерминистии қоидаҳо/афзалиятҳо/шартҳо.
Шартнома: нақшаи парчам (JSON/YAML), валидаторҳо, CI-чек пеш аз якҷояшавӣ.
Моликият: "рад кунед> иҷозат диҳед", "пирӯзиҳои мушаххас", сатилҳои устувор.
Replay-Plays контекстҳои воқеӣ дар конфигуратсияи нав.
E2E: скриптҳои канарӣ (зина ба зина боло/поён), тафтиши автокатофф ва аудит.
Хаос: Қуллаи ҷараён, лаҳзаи меросӣ, навсозии оммавии парчам.

14) Хатогиҳои маъмулӣ

Мантиқи махфӣ дар парчамҳои муштарӣ (ихроҷ/ғорат).
Набудани TTL → "қабристон" -и парчамҳо дар рамз.
Парчамҳои "универсалӣ" бидуни сегментатсия мушкилотро локализатсия карда наметавонанд.
Не посбонҳо/автокатофонҳо - ҳодисаҳои дастӣ.
Вобастагии номувофиқ байни парчамҳо → ҳалқаҳо/берун аз синхронизатсия.
Арзёбии парчамҳо дар ҳар як дархост бидуни кэш → хӯшаҳои ниҳонӣ.
Не равзанаи аудит/тағирот - хатарҳои мутобиқат.

15) Рӯйхати санҷиши пеш аз фурӯш

  • Парчаме, ки бо намуд, соҳиб, тавсиф, TTL ва талаботи чипта сохта шудааст.
  • Қоидаҳои мақсаднок муайян карда шудаанд; 'deny' дар минтақаҳо/нақшҳои номатлуб.
  • Сатилҳои часпанда муайянкунанда мебошанд; ID устувор аст.
  • Реквизитҳо ва парчамҳои саломатӣ омодаанд; бо нобаёнӣ бехатар.
  • Панели панелҳо ва огоҳиҳо дар p95/p99, error_rate, посбонони тиҷорат.
  • Автокатофф танзим карда шудааст; ҳадди ниҳоӣ ва шароити бозгашт.
  • Нақшаи канарӣ - Фоизҳо/марҳилаҳо/Равзанаи тағирот/Соҳибон
  • Конфигуратсияҳо дар CI тасдиқ карда мешаванд; сурат дар байни кластерҳо/минтақаҳо паҳн карда мешавад.
  • Ҳуҷҷатҳои дастгирӣ/маҳсулот; дафтарҳои бозии ҳодиса.
  • Нақша гиред, ки шохаҳои рамз ва худи парчамро пас аз 100% хориҷ кунед.

16) Намунаи парчами "муҳоҷират" (DB/индекс)

yaml flag:
key: "search. use_index_v2"
type: "migration"
description: "Switching reads to index v2"
prerequisites:
- key: "search. index_v2_built"
must_be: "on"
rules:
- when: { tenant_id: ["brand_eu"], user_pct: 5 } then: "on"
- when: { tenant_id: ["brand_eu"], user_pct: 25 } then: "on"
safeguards:
auto_rollback_on:
search_p95_ms: ">180"
error_rate: ">1%"
ttl: "2026-02-01"

Хулоса

Парчамҳои хусусият на танҳо "фурӯзон/хомӯш", балки интизоми идоракунии хавфҳои тағирот мебошанд. Намудҳои равшани парчамҳо, ҳадафгирии муайянкунанда, намоишҳои прогрессивӣ бо посбонҳо, автокатоф, нақшаи аудит ва несткунӣ релизҳоро пешгӯишаванда ва ҳодисаҳоро мухтасар ва назорат мекунанд. Парчамҳоро ба меъморӣ ҳамчун синфи якуми шаҳрвандон созед - ва шумо метавонед арзишро зуд-зуд, бехатартар ва пурмазмун расонед.

Contact

Тамос гиред

Барои саволҳо е дастгирӣ ба мо муроҷиат кунед.Мо ҳамеша омодаем!

Оғози интегратсия

Email — муҳим аст. Telegram е WhatsApp — ихтиерӣ.

Номи шумо ихтиерӣ
Email ихтиерӣ
Мавзӯъ ихтиерӣ
Паем ихтиерӣ
Telegram ихтиерӣ
@
Агар Telegram нависед — ҷавобро ҳамон ҷо низ мегиред.
WhatsApp ихтиерӣ
Формат: рамзи кишвар + рақам (масалан, +992XXXXXXXXX).

Бо фиристодани форма шумо ба коркарди маълумот розӣ ҳастед.