GH GambleHub

फ़ीचर फ़्लैग्स और फ़ीचर रिली

फ़ीचर फ्लैग (FF) एक प्रबंधित शर्त है जो कोड जारी किए बिना सिस्टम व्यवहार को सक्षम/अक्षम करती है। झंडे आपको अनुमति देते हैं: सुविधाओं को सुरक्षित रूप से रोल आउट करें, उपयोगकर्ताओं/बाजारों/किरायेदारों के लक्षित समूह, जल्दी से समस्याग्रस्त घटकों को अक्षम करें, प्रयोग करें और रनटाइम में मापदंडों को कॉन्फ़िगर करें।

मुख्य उद्देश्य:
  • रिलीज के लिए विस्फोट त्रिज्या को कम करें।
  • अलग तैनाती और सक्रियण।
  • ऑडिटिंग, एसएलओ और वन-क्लिक रोलबैक के साथ पारदर्शी परिवर्तन प्रबंधन की अनुमति दें।

1) झंडे के प्रकार और उन्हें कब लागू करना है

रिलीज़ झंडे - एक नई सुविधा (डार्क → कैनरी → रैंप-अप → 100%) का चरणबद्ध समावेश।

ऑप्स/किल-स्विच - निर्भरता का त्वरित डिस्कनेक्शन (प्रदाता, सबसिस्टम, भारी गणना)।

प्रयोग (ए/बी, मल्टी-वेरिएंट) - वेरिएंट में ट्रैफिक का विभाजन (वजन, चिपचिपा बाल्टी)।

भूमिका/योजना/अधिकार क्षेत्र द्वारा सुविधाओं तक अनुमति/अधिकार - पहुंच।

फ्लैग/कॉन्फिग से दूरस्थ कॉन्फिग - व्यवहार पैरामीटर (थ्रेशोल्ड, टाइमआउट, फॉर्मूला)।

प्रवासन फ्लैग - स्विचिंग योजनाएं/डेटा पथ (नए सूचकांक/डीबी/समापन बिंदु पर जाना)।

एंटी-पैटर्न: एक ही ध्वज "सब कुछ के बारे में" - सुविधा, कॉम्प स्विच और मापदंडों में विभाजित।

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) मूल्यांकन और लक्ष्यीकरण

Ключи таргетинга: 'किरायेदार _ id, क्षेत्र/लाइसेंस, मुद्रा, चैनल, स्थान, भूमिका, योजना, उपकरण, user_id, cohort, kyc_tier, experiment_bucket'।

मूल्यांकन आदेश: पूर्वापेक्षा नियमों को अस्वीकार करते हैं - नियमों की अनुमति देते हैं - डिफ़ॉल्ट।

स्टिकी बकेटिंग: प्रयोगों के लिए, एक स्थिर पहचानकर्ता को हैश करें (उदाहरण के लिए, 'हैश (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) एफएफ वितरण और वास्तुकला

विकल्प:
  • सर्वर-साइड एसडीके (अनुशंसित): बैकेंड में सत्य और कैश के स्रोत; तर्क का एकीकरण।
  • एज/सीडीएन मूल्यांकन: परिधि पर तेजी से लक्ष्यीकरण (जहां कोई पीआईआई/रहस्य नहीं हैं)।
  • क्लाइंट-साइड SDK: जब आपको UI निजीकरण की आवश्यकता होती है, लेकिन केवल न्यूनतम संदर्भ और कोई संवेदनशील नियम के साथ।
  • Config-as-Code: भंडार में झंडे का भंडारण, CI सत्यापन, सीडी के माध्यम से रोलआउट।
रणनीति कैश:
  • स्टार्टअप बूटस्ट्रैप + स्ट्रीमिंग अपडेट (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 ब्लू/ग्रीन + एफएफ

हम दो संस्करण तैनात करते हैं; झंडा यातायात को बढ़ाता है और खंड द्वारा निर्भरता को बदल देता है।

6) निर्भरता और क्रॉस-सेवा स्थिरता

तत्परता के पूर्वापेक्षा और "स्वास्थ्य-झंडे" का उपयोग करें: सूचकांक बनाया गया है, प्रवास पूरा हो गया है।

घटनाओं के माध्यम से समन्वय: 'फ्लैगचेंज्ड (flag_key, गुंजाइश, new_state)'।

महत्वपूर्ण परिदृश्यों के लिए, दो-चरण स्विचिंग का उपयोग करें:

1. read-path → 2) चेक मेट्रिक्स → 3) लिखने/साइड-इफेक्ट सक्षम करें।

  • सेवा अनुबंध: डिफ़ॉल्ट रूप से असफल-सुरक्षित OFF होना चाहिए.

7) अवलोकन और एसएलओ

प्रति ध्वज/संस्करण/खंड मेट्रिक्स:
  • 'flag _ eval _ p95 _ ms', 'त्रुटियाँ _ दर', 'config _ fresness _ ms'।
  • व्यवसाय मेट्रिक्स: 'ctr', 'रूपांतरण', 'ARPU', 'प्रतिधारण', रेलिंग (उदा। आरजी की घटनाएं)।
  • ऑटोकाटोपा के लिए स्वचालित एसएलओ थ्रेसहोल्ड।

Logs/tracing: 'flag _ key', 'varant', 'file _ source' (server/edge/client), 'cession _ hash' जोड़ें.

डैशबोर्ड: थ्रेसहोल्ड के साथ रोलआउट "सीढ़ी", सेगमेंट द्वारा हीटमैप त्रुटियां।

8) सुरक्षा और अनुपालन

संदर्भ में पीआईआई-न्यूनतम।

RLS/ACL: कौन बदल सकता है जो फ्लैग्स (डोमेन/मार्केट द्वारा) बदल सकता है।

परिवर्तन के घंटे विंडो (विंडो बदलें) और संवेदनशील झंडे के लिए "दोहरी पुष्टि"।

अपरिवर्तनीय लेखा परीक्षा: कौन/कब/क्या/क्यों (टिकट/घटना लिंक)।

न्यायालय: झंडे को नियामक प्रतिबंध को दरकिनार नहीं करना चाहिए (उदाहरण के लिए, एक प्रतिबंधित देश में खेलना शामिल है)।

9) "लंबे समय तक जीवित" झंडे का प्रबंधन

प्रत्येक ध्वज में एक टीटीएल/विलोपन तिथि होती है।

100% समावेश के बाद - कोड शाखाओं को हटाने के लिए एक कार्य बनाएं, अन्यथा "फ्लैग-ऋण" बढ़ेगा।

झंडे को 'माइग्रेशन '/' वन-टाइम' के रूप में चिह्नित करें, उन्हें स्थिर 'अनुमति/कॉन्फिग' से अलग करें।

10) नमूना अनुबंध एपीआई/एसडीके

मूल्यांकन एपीआई (सर्वर-साइड)

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" }
}

क्लाइंट एसडीके (кэш, फॉलबैक)

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

11) अन्य सर्किटों के साथ बातचीत

दर सीमा/कोटा: झंडे आरपीएस को कम कर सकते हैं/घटना की अवधि के लिए थ्रॉटलिंग सक्षम कर सकते हैं।

सर्किट ब्रेकर/गिरावट: किल-स्विची भारी रास्तों को अक्षम करता है और गिरावट को सक्षम करता है।

निर्देशिका/निजीकरण: फ्लैग्स वजन/रैंकिंग नियम बदलते हैं (रिमोट कॉन्फिग के माध्यम से)।

डेटाबेस माइग्रेशन: झंडे धीरे-धीरे पढ़ ते हैं/लिखते हैं एक नई योजना (रीड-प्रतिकृति → डुअल-राइट → राइट-प्राइमरी)।

12) प्लेबुक (रनबुक)

1. 25% समावेश के बाद हादसा

ऑटोकैटॉफ ने सभी/खंडों के लिए → OFF ध्वज, ऑन-कॉल, आँकड़े संग्रह, RCA को ट्रिगर किया।

अस्थायी रूप से प्रवास ध्वज के माध्यम से गिरावट/पुरानी शाखा सक्षम करना।

2. p95 कैटलॉग वृद्धि

थ्रेसहोल्ड 'p95 _ ms> 200' - ऑटोकाटोफ; 'flag _ key = कैटलॉग के साथ लॉग का एक स्नैपशॉट ठीक करें। new_ranker'।

पेलोड कॉन्फ़िग सक्षम करें।

3. अधिकार क्षेत्र का अभाव

अनुमति ध्वज ने गलती से 'एनएल' में खेल को खोल दिया - OFF + पोस्ट-फैक्ट ऑडिट, गार्ड नियम "क्षेत्र से इनकार करता है।"

4. A/B में भिन्नता

प्रयोग बंद करें, CUPED/स्तरीकृत विश्लेषण करें, अद्यतन तराजू के साथ फिर से रोल करें।

13) परीक्षण

इकाई: नियमों/प्राथमिकताओं/शर्तों का नियतात्मक मूल्यांकन।

अनुबंध: विलय से पहले ध्वज योजना (JSON/YAML), मान्यता प्राप्त, CI-जाँच।

संपत्ति-आधारित: "इनकार> अनुमति दें", "सबसे विशिष्ट जीत", स्थिर बकेटिंग।

नए कॉन्फ़िगरेशन पर रीप्ले-प्ले वास्तविक संदर्भ।

E2E: कैनरी स्क्रिप्ट (स्टेप-अप/स्टेप-डाउन), ऑटोकैटऑफ चेक और ऑडिट इवेंट।

अराजकता: स्ट्रीमिंग क्लिफ, विरासत स्नैपशॉट, बड़े पैमाने पर ध्वज अपडेट।

14) विशिष्ट त्रुटियां

क्लाइंट फ्लैग्स में गुप्त तर्क (लीक/स्पूफिंग)।

टीटीएल की अनुपस्थिति → कोड में झंडे का "कब्रिस्तान"।

→ विभाजन के बिना "यूनिवर्सल" झंडे समस्या को स्थानीय नहीं कर सकते।

कोई रेलिंग/ऑटोकैटोफोन नहीं - मैनुअल घटनाएं।

फ्लैग्स → लूप्स/सिंक से बाहर के बीच असंगत निर्भरता।

कैश - लेटेंसी स्पाइक्स के बिना प्रत्येक अनुरोध में झंडे का मूल्यांकन।

कोई लेखा परीक्षा/परिवर्तन विंडो - अनुपालन जोखिम।

15) प्री-सेल चेकलिस्ट

  • प्रकार, मालिक, विवरण, टीटीएल और टिकट आवश्यकता के साथ बनाया गया ध्वज।
  • परिभाषित नियमों को लक्षित करना; अवांछित क्षेत्रों/भूमिकाओं पर 'डेनी'।
  • स्टिकी बकेटिंग नियतात्मक है; आईडी स्थिर है।
  • पूर्व-अपेक्षित और स्वास्थ्य झंडे तैयार; डिफ़ॉल्ट सुरक्षित।
  • p95/p99, error_rate, बिजनेस रेलिंग पर डैशबोर्ड और अलर्ट।
  • स्वचालित कॉन्फ़िगर किया गया; रोलआउट स्टॉप थ्रेशोल्ड और रोलबैक की स्थिति
  • कैनरी योजना - प्रतिशत/मील के पत्थर/बदलें विंडो/मालिक
  • कॉन्फ़िग सीआई में मान्य हैं; स्नैपशॉट समूहों/क्षेत्रों में वितरित किया गया।
  • समर्थन/उत्पाद प्रलेखन; घटना प्लेबुक।
  • 100% के बाद कोड शाखाओं और झंडे को हटाने की योजना।

16) "प्रवासन" ध्वज का उदाहरण (डीबी/सूचकांक)

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 डालते हैं — तो हम Email के साथ-साथ वहीं भी जवाब देंगे।
WhatsApp वैकल्पिक
फॉर्मैट: देश कोड और नंबर (उदा. +91XXXXXXXXXX)।

बटन दबाकर आप अपने डेटा की प्रोसेसिंग के लिए सहमति देते हैं।