Feature Toggle — मूल बातें, स्विच प्रकार और अनुप्रयोग

लेखक: IT Sectr प्रकाशित: 2026-04-13 पढ़ने का समय: 8 मिनट

Feature Toggle एक रनटाइम तंत्र है जो एप्लिकेशन की कार्यक्षमता को चालू और बंद करने की सुविधा देता है, जिससे डेवलपर्स कोड बदले या पुनः तैनात किए बिना सुविधाओं की उपलब्धता प्रबंधित कर सकते हैं। सशर्त संकलन (ifdef) के विपरीत, toggle रनटाइम स्तर पर काम करता है और गतिशील रूप से बदला जा सकता है। Martin Fowler (2024) के अनुसार, feature toggles ट्रंक-आधारित डेवलपमेंट और सतत वितरण का एक प्रमुख तत्व हैं। Feature toggle टीमों को रिलीज़ और प्रयोगों के प्रबंधन में लचीलापन प्रदान करता है।

मुख्य बातें

  • Feature Toggle — एक गतिशील स्विच जो कॉन्फ़िगरेशन के माध्यम से एप्लिकेशन व्यवहार को नियंत्रित करता है
  • मुख्य प्रकार: business toggles, release toggles, experiment toggles और infrastructure toggles
  • Feature Toggle vs Flag — toggle आमतौर पर सरल बाइनरी स्विच को संदर्भित करता है, flag — पूर्ण प्लेटफ़ॉर्म को
  • CI/CD एकीकरण पाइपलाइन के हर चरण में toggles की स्वचालित जाँच और परीक्षण सक्षम करता है
  • मुख्य समस्या — stale toggles का संचय, जिन्हें नियमित रूप से ऑडिट और हटाने की आवश्यकता होती है

Feature Toggle क्या है

Feature Toggle एक तकनीक है जिसमें नई सुविधा के कोड को एक सशर्त निर्माण में लपेटा जाता है जो कॉन्फ़िगरेशन पैरामीटर के मान की जाँच करता है। यदि पैरामीटर सही है — तो नई कार्यक्षमता सक्रिय है, यदि गलत है — तो पुराना कोड चलता है। फीचर फ्लैग से मुख्य अंतर यह है कि toggle एक बाइनरी स्विच है जो चालू/बंद सिद्धांत पर काम करता है, बिना जटिल लक्ष्यीकरण नियमों या ट्रैफ़िक वितरण के।

परिभाषा और कार्य सिद्धांत

Feature toggle को नई कार्यक्षमता के चारों ओर एक सरल if-निर्माण के रूप में कार्यान्वित किया जाता है। Toggle का मान एप्लिकेशन कॉन्फ़िगरेशन — पर्यावरण चर, JSON फ़ाइल या डेटाबेस में संग्रहीत किया जाता है। जब एप्लिकेशन शुरू होता है, तो वह कॉन्फ़िगरेशन लोड करता है और सुविधाओं की दृश्यता के बारे में निर्णय लेने के लिए इसका उपयोग करता है। सरलतम मामले में, toggle मान बदलने के लिए एप्लिकेशन को पुनरारंभ करने की आवश्यकता होती है, लेकिन उत्पादन प्रणालियों में toggles आमतौर पर बाहरी कॉन्फ़िग सर्वर या API के माध्यम से हॉट रीलोड का समर्थन करते हैं।

सरल Toggle उदाहरण

आइए JavaScript (Node.js) में फीचर टॉगल के कार्यान्वयन को देखें। Toggle एक JSON कॉन्फ़िग में संग्रहीत होता है और सर्वर शुरू होने पर लोड होता है। Middleware अनुरोध को नए या पुराने हैंडलर पर रूट करने से पहले toggle मान की जाँच करता है। यह कार्यान्वयन वर्तमान API संस्करण को तोड़े बिना मुख्य कोड शाखा में नई कार्यक्षमता जोड़ने की अनुमति देता है।

js
const config = require("./config.json");

const toggles = {
    get(name) {
        return config.features[name] ?? false;
    },
    isEnabled(name, context) {
        const toggle = config.features[name];
        if (!toggle) return false;
        if (toggle.enabled === true) return true;
        if (toggle.percentage && context.userId) {
            return hashCode(context.userId) % 100 < toggle.percentage;
        }
        return false;
    }
};

const app = express();

app.use("/api/checkout", (req, res, next) => {
    if (toggles.isEnabled("new_checkout", req)) {
        return newCheckoutHandler(req, res);
    }
    return legacyCheckoutHandler(req, res);
});

Feature Toggles के प्रकार

ThoughtWorks के पीट हॉजसन feature toggles के तीन मुख्य प्रकार बताते हैं, उन्हें जीवनकाल और उपयोग के उद्देश्य के आधार पर वर्गीकृत करते हैं। Toggle प्रकार की सही पहचान उपयुक्त भंडारण तंत्र और प्रबंधन प्रक्रिया चुनने में मदद करती है। आइए मोबाइल डेवलपमेंट के संदर्भ में प्रत्येक प्रकार को देखें।

Business और Release Toggles

Business toggles सबसे लंबे समय तक चलने वाले स्विच हैं। वे केवल कुछ उपयोगकर्ता श्रेणियों (प्रीमियम सुविधाएँ, क्षेत्रीय विशेषताएँ) के लिए उपलब्ध व्यावसायिक नियमों का प्रबंधन करते हैं। ऐसे toggles वर्षों तक जीवित रह सकते हैं और आमतौर पर बाइनरी चालू/बंद से अधिक जटिल तर्क रखते हैं। Release toggles अपूर्ण कार्यक्षमता को छिपाने के लिए अस्थायी स्विच हैं। उनका जीवनचक्र कुछ दिनों से लेकर कुछ हफ़्तों तक होता है। कार्यक्षमता पूरी होने के बाद, release toggle को कोड से हटा दिया जाता है। ये toggles ट्रंक-आधारित डेवलपमेंट की नींव हैं, जो डेवलपर्स को सभी कार्यक्षमता पूरी होने की प्रतीक्षा किए बिना मुख्य शाखा में कमिट करने की अनुमति देते हैं।

Experiment और Infrastructure Toggles

Experiment toggles A/B परीक्षण और क्रमिक रोलआउट के लिए उपयोग किए जाते हैं। Release toggles के विपरीत, experiment toggles प्रतिशत-आधारित उपयोगकर्ता वितरण और एनालिटिक्स सिस्टम के साथ एकीकरण का समर्थन करते हैं। वे release toggles से अधिक समय (कई महीनों तक) जीवित रह सकते हैं, लेकिन प्रयोग समाप्त होने के बाद उन्हें भी हटा दिया जाना चाहिए। Infrastructure toggles बुनियादी ढाँचे में बदलावों के प्रबंधन के लिए स्विच हैं: डेटाबेस माइग्रेशन, नए API प्रदाता पर स्विच करना, कैशिंग एल्गोरिदम बदलना। इन toggles को परीक्षण पर विशेष ध्यान देने की आवश्यकता होती है, क्योंकि इनका स्विचिंग पूरी सेवा की स्थिरता को प्रभावित करता है।

Toggle प्रकारअवधिदर्शकउदाहरण
Businessमहीने-वर्षभूमिकाओं/क्षेत्रों के अनुसारप्रीमियम सुविधाएँ
Releaseदिन-सप्ताहडेवलपर्स/QAअपूर्ण स्क्रीन
Experimentसप्ताह-महीने% उपयोगकर्ताइंटरफ़ेस A/B परीक्षण
Infrastructureदिन-सप्ताहआंतरिकDB माइग्रेशन

Feature Toggle vs Feature Flag

हालाँकि शब्द “feature toggle” और “feature flag” अक्सर एक दूसरे के स्थान पर उपयोग किए जाते हैं, लेकिन उनके बीच अवधारणात्मक अंतर हैं। इन अंतरों को समझने से किसी विशिष्ट कार्य के लिए सही उपकरण चुनने और टीम में भ्रम से बचने में मदद मिलती है। आइए प्रत्येक दृष्टिकोण के मुख्य अंतर और उपयोग के मामलों को देखें।

दृष्टिकोण में अंतर

Feature toggle मुख्य रूप से एक तकनीकी तंत्र है: एप्लिकेशन कोड में एम्बेडेड एक बाइनरी स्विच। Toggle कॉन्फ़िगरेशन के माध्यम से प्रबंधित किया जाता है और बाहरी बुनियादी ढाँचे की आवश्यकता नहीं होती है। Feature flag एक व्यापक अवधारणा है जिसमें एक प्रबंधन प्लेटफ़ॉर्म शामिल है: कॉन्फ़िगरेशन के लिए UI, एकीकरण के लिए SDK, उपयोग निगरानी, एनालिटिक्स और ऑडिटिंग। Flags जटिल लक्ष्यीकरण नियमों (क्षेत्र, संस्करण, डिवाइस के अनुसार), A/B प्रयोगों और स्वचालित हटाने का समर्थन करते हैं। आप कह सकते हैं कि फीचर फ्लैग फीचर टॉगल का विकास है: टीमें सरल कॉन्फ़िगरेशन स्विच से शुरू होती हैं और बढ़ने पर एक विशेष प्लेटफ़ॉर्म पर जाती हैं।

Toggle कब पर्याप्त है

छोटी टीमों और एकल सेवा या मोनोलिथ वाली परियोजनाओं के लिए, सरल कॉन्फ़िगरेशन toggles पूरी तरह से पर्याप्त हैं। यदि आपके पास 5–10 डेवलपर और एक समय में 1–2 सक्रिय toggles हैं, तो बाहरी प्लेटफ़ॉर्म अत्यधिक होगा। Feature flag प्लेटफ़ॉर्म (LaunchDarkly, Unleash) तब आवश्यक हो जाते हैं जब सक्रिय flags की संख्या 20–30 से अधिक हो, टीम में 20+ डेवलपर हों, या विभिन्न उपयोगकर्ता खंडों के लिए सूक्ष्म पहुँच नियंत्रण की आवश्यकता हो। मोबाइल एप्लिकेशन के लिए, जहाँ क्लाइंट अपडेट में दिन लगते हैं, फीचर फ्लैग प्लेटफ़ॉर्म एक अतिरिक्त लाभ प्रदान करते हैं — नया संस्करण प्रकाशित किए बिना एप्लिकेशन व्यवहार बदलने की क्षमता।

प्रबंधन उपकरण

Feature toggle प्रबंधन उपकरण का चुनाव टीम के आकार, प्रौद्योगिकी स्टैक और सुरक्षा आवश्यकताओं पर निर्भर करता है। आइए सरल कॉन्फ़िगरेशन फ़ाइलों से लेकर एंटरप्राइज़-ग्रेड प्रबंधन प्लेटफ़ॉर्म तक के विकल्पों को देखें, जिसमें ओपन-सोर्स विकल्प भी शामिल हैं।

CI/CD में एकीकरण

Feature toggles को CI/CD पाइपलाइन के प्रथम श्रेणी के नागरिक होना चाहिए। बिल्ड चरण में, पाइपलाइन जाँच करती है कि वर्तमान स्प्रिंट में हटाने के लिए निर्धारित सभी release toggles वास्तव में कोड से हटा दिए गए हैं। परीक्षण चरण में, विभिन्न toggle संयोजनों के साथ मैट्रिक्स परीक्षण चलाए जाते हैं। डिप्लॉय चरण में, सिस्टम स्वचालित रूप से उत्पादन वातावरण के साथ toggle कॉन्फ़िगरेशन को सिंक्रनाइज़ करता है। PagerDuty या Opsgenie के साथ एकीकरण stale toggles का पता चलने पर या सक्रिय toggles की अनुमत संख्या पार होने पर अलर्ट बनाने की अनुमति देता है।

लोकप्रिय समाधान

सरल परिदृश्यों के लिए, Git में परिवर्तनों पर कोड समीक्षा के साथ एक JSON कॉन्फ़िग पर्याप्त है। अधिक उन्नत विकल्प Togglz (Java) या Gofeature (Go) है — लाइब्रेरीज़ जो toggle प्रबंधन के लिए न्यूनतम UI जोड़ती हैं। उत्पादन प्रणालियों के लिए, सभी भाषाओं के लिए SDK और सक्रियण रणनीति समर्थन के साथ Unleash (ओपन-सोर्स) या अंतर्निहित A/B परीक्षण के साथ Flagsmith की सिफारिश की जाती है। LaunchDarkly उच्च ऑडिट और अनुपालन आवश्यकताओं वाले एंटरप्राइज़ प्रोजेक्ट्स के लिए मानक बना हुआ है। मोबाइल एप्लिकेशन के लिए, सभी समाधान कैशिंग और ऑफ़लाइन मोड के साथ मूल SDK प्रदान करते हैं।

तकनीकी ऋण और हटाना

Feature toggles एक दोधारी उपकरण हैं। प्रबंधन अनुशासन के बिना, वे तकनीकी ऋण में बदल जाते हैं जो विकास को धीमा करता है और कोड जटिलता बढ़ाता है। CodeScene अध्ययन (2024) के अनुसार, 35–50% कोडबेस में stale toggles होते हैं — स्विच जो रोलआउट पूरा होने के बाद भी कोड में रह जाते हैं। आइए ऐसे ऋण को रोकने और समाप्त करने की रणनीतियों को देखें।

Toggles हटाना

Feature toggle हटाने की प्रक्रिया में चार चरण होते हैं। पहला: सुनिश्चित करें कि toggle 100% दर्शकों के लिए सक्षम या 0% के लिए अक्षम है (इस पर निर्भर करता है कि कोड की कौन सी शाखा रहनी चाहिए)। दूसरा: कोड से सभी सशर्त toggle जाँच हटाएँ, केवल वही शाखा छोड़ें जो उत्पादन व्यवहार होनी चाहिए। तीसरा: भंडारण प्रणाली (कॉन्फ़िग, डेटाबेस या प्लेटफ़ॉर्म) से toggle परिभाषा हटाएँ। चौथा: यह पुष्टि करने के लिए परीक्षण चलाएँ कि हटाने से कार्यक्षमता नहीं टूटी। प्रत्येक toggle का एक मालिक और नियोजित हटाने की तिथि होनी चाहिए, जो स्विच बनाते समय दर्ज की जाए।

ऑडिट स्वचालन

मैन्युअल toggle ऑडिट 50 से अधिक स्विच के पैमाने पर अप्रभावी है। स्वचालन तीन सिद्धांतों पर बनाया गया है: CI जाँच (stale toggles मर्ज को ब्लॉक करते हैं), निगरानी (प्रत्येक toggle की आयु और स्थिति दिखाने वाला डैशबोर्ड), अलर्ट (मालिक को सूचित करना यदि toggle N दिनों में नहीं बदला है)। स्थैतिक कोड विश्लेषण उपकरण (SonarQube, ESLint प्लगइन) कोड में उन toggles का पता लगा सकते हैं जो हमेशा चालू या हमेशा बंद रहते हैं — stale toggle का स्पष्ट संकेत। अंतिम जाँच कोड समीक्षा है, जहाँ समीक्षक को यह सुनिश्चित करना होगा कि नया toggle वास्तव में आवश्यक है और पुरानी कोड शाखा हटा दी जाएगी।

go
package toggles

type Toggle struct {
    Name      string
    Enabled   bool
    Owner     string
    CreatedAt time.Time
    TTL       time.Duration
}

type ToggleManager struct {
    store map[string]*Toggle
}

func NewToggleManager() *ToggleManager {
    return &ToggleManager{store: make(map[string]*Toggle)}
}

func (m *ToggleManager) IsEnabled(name string) bool {
    t, ok := m.store[name]
    if !ok {
        return false
    }
    return t.Enabled
}

func (m *ToggleManager) GetStaleToggles() []string {
    var stale []string
    for name, t := range m.store {
        if t.Enabled && time.Since(t.CreatedAt) > t.TTL {
            stale = append(stale, name)
        }
    }
    return stale
}

अक्सर पूछे जाने वाले प्रश्न

Feature toggle, feature flag से कैसे अलग है?

शब्दों का उपयोग अक्सर एक दूसरे के स्थान पर किया जाता है, लेकिन तकनीकी रूप से feature toggle कोड में एक बाइनरी स्विच है (एक if-शर्त जो कॉन्फ़िग मान की जाँच करती है)। Feature flag एक व्यापक अवधारणा है जिसमें UI, SDK, एनालिटिक्स और जटिल लक्ष्यीकरण नियमों वाला प्रबंधन प्लेटफ़ॉर्म शामिल है। Toggle को बाहरी बुनियादी ढाँचे की आवश्यकता नहीं होती; flag को आमतौर पर होती है।

पुराने toggles को कितनी बार हटाना चाहिए?

Release toggles को रोलआउट पूरा होने के 1–2 सप्ताह के भीतर हटा दिया जाना चाहिए। Experiment toggles — A/B परीक्षण समाप्त होने के तुरंत बाद। Business toggles को नियमित ऑडिट (त्रैमासिक) की आवश्यकता होती है। CI जाँच स्थापित करने की सिफारिश की जाती है जो मर्ज को ब्लॉक करती है यदि PR बिना टास्क ट्रैकर में हटाने के कार्य के एक नया toggle जोड़ता है।

क्या मोबाइल एप्लिकेशन के लिए toggles का उपयोग किया जा सकता है?

हाँ, feature toggles का मोबाइल डेवलपमेंट में सक्रिय रूप से उपयोग किया जाता है। मुख्य उपकरण Firebase Remote Config है, जो एप्लिकेशन का नया संस्करण प्रकाशित किए बिना स्विच को गतिशील रूप से प्रबंधित करने की अनुमति देता है। विकल्प: iOS/Android के लिए LaunchDarkly SDK, Unleash SDK, REST API के साथ कस्टम toggle सर्वर। ऑफ़लाइन मोड में काम करने के लिए मान कैशिंग लागू करना महत्वपूर्ण है।

Feature toggles के साथ कोड का परीक्षण कैसे करें?

मुख्य विधि मैट्रिक्स परीक्षण है: toggle चालू और बंद दोनों स्थितियों में सभी परीक्षण चलाना। N toggles के लिए, पूर्ण मैट्रिक्स परीक्षण के लिए 2^n रन की आवश्यकता होती है, इसलिए व्यवहार में महत्वपूर्ण संयोजन चुने जाते हैं। यूनिट परीक्षणों को toggle मान को मॉक करना चाहिए। एकीकरण परीक्षण विशिष्ट परिदृश्यों की जाँच करते हैं। CI में एक चरण जोड़ा जाता है जो अप्रत्याशित अंतःक्रियाओं का पता लगाने के लिए यादृच्छिक toggle संयोजन के साथ परीक्षण चलाता है।

Feature toggles के जोखिम क्या हैं?

मुख्य जोखिम: 1) stale toggles — दोनों शाखाओं (चालू/बंद) वाला कोड जटिल और बनाए रखना मुश्किल हो जाता है; 2) परीक्षण की संयोजनात्मक जटिलता — प्रत्येक toggle राज्यों की संख्या दोगुनी करता है; 3) मृत कोड — पुरानी शाखा कोड में बनी रहती है जब toggle स्थायी रूप से सक्षम हो जाता है; 4) सुरक्षा — पहुँच को नियंत्रित करने वाले स्विच गलत कॉन्फ़िगरेशन पर कमज़ोरियाँ पैदा करते हैं। सभी जोखिम अनुशासन और स्वचालन के साथ प्रबंधनीय हैं।

सारांश

  • Feature Toggle — एप्लिकेशन कॉन्फ़िगरेशन के माध्यम से नियंत्रित एक बाइनरी कार्यक्षमता स्विच
  • मुख्य प्रकार: business (महीने-वर्ष), release (दिन-सप्ताह), experiment (सप्ताह-महीने), infrastructure (दिन-सप्ताह)
  • Feature Toggle vs Flag — toggle सरल है (if-शर्त + कॉन्फ़िग), flag में पूर्ण प्रबंधन प्लेटफ़ॉर्म शामिल है
  • CI/CD एकीकरण अनिवार्य है: stale toggle जाँच, मैट्रिक्स परीक्षण, कॉन्फ़िगरेशन सिंक्रनाइज़ेशन
  • Stale toggles — मुख्य जोखिम: 35–50% कोडबेस में अप्रयुक्त स्विच होते हैं
  • Toggle हटाना एक प्रक्रिया की आवश्यकता है: स्थिति की पुष्टि करें, कोड हटाएँ, कॉन्फ़िग हटाएँ, परीक्षण चलाएँ
  • ऑडिट स्वचालन CI, डैशबोर्ड और स्थैतिक कोड विश्लेषण के माध्यम से तकनीकी ऋण संचय को रोकता है

हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे

IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।

परियोजना पर चर्चा करें

यह भी पढ़ें