फीचर फ्लैग्स सॉफ्टवेयर डेवलपमेंट में एक शक्तिशाली उपकरण हैं, जो डेवलपर्स को नए कोड को तैनात किए बिना रनटाइम पर एप्लिकेशन के व्यवहार को नियंत्रित करने की अनुमति देते हैं। वे टीमों को नई सुविधाओं का परीक्षण करने, A/B परीक्षण करने, और परिवर्तनों को धीरे-धीरे रोल आउट करने में सक्षम बनाते हैं।
Ruby on Rails में, फीचर फ्लैग्स को विविध उपकरणों का उपयोग करके प्रबंधित किया जा सकता है, सबसे लोकप्रिय Flipper जेम है। यह आलेख Flipper और AppSignal के कस्टम मेट्रिक्स का उपयोग करके Solidus स्टोरफ्रंट में फीचर फ्लैग्स को लागू करने और उनके प्रभाव को मापने का पता लगाएगा।
Rails में फीचर फ्लैग्स क्या हैं, फिर से?
यदि आप विषय का परिचय ढूंढ रहे हैं, तो Flipper के साथ Ruby on Rails में फीचर फ्लैग्स जोड़ें पोस्ट देखें।
संक्षेप में, हालांकि, फीचर फ्लैग्स नए कोड को तैनात किए बिना रनटाइम पर आपके एप्लिकेशन के व्यवहार को प्रभावित करने का एक तरीका है। फीचर फ्लैग्स का सबसे सरल प्रकार एनवायरनमेंट वेरिएबल्स हैं। हर Ruby on Rails एप्लिकेशन उनका बॉक्स से बाहर उपयोग करता है। एक उदाहरण ENV['WEB_CONCURRENCY'] का उपयोग करके एप्लिकेशन सर्वर कनकरेंसी का कॉन्फिगरेशन है।
हालांकि, फीचर फ्लैग्स को प्रबंधित करने के अन्य तरीके हैं, जैसे ActiveRecord या Redis जैसे पर्सिस्टेंस लेयर का उपयोग करना। ऐसा करने का एक व्यापक तरीका Flipper जेम द्वारा प्रदान किया जाता है।
निम्नलिखित स्निपेट उदाहरण देता है कि किसी दिए गए उपयोगकर्ता के लिए performance_improvement फीचर फ्लैग का मूल्यांकन कैसे किया जाता है:
अब, आइए फीचर फ्लैग्स के साथ प्रयोग शुरू करने के लिए एक Solidus स्टोरफ्रंट सेट अप करें।
हमारा उदाहरण ऐप: एक Solidus स्टोरफ्रंट
कुछ हद तक यथार्थवादी परिदृश्य में फीचर फ्लैग्स के प्रभाव को मापने के लिए, आइए जल्दी से एक Solidus स्टोर बूटस्ट्रैप करें:
यह जनरेटर आपको प्रक्रिया के माध्यम से मार्गदर्शन करेगा और आपसे कुछ सेटअप प्रश्न पूछेगा।
- फ्रंटएंड प्रकार के लिए पूछे जाने पर starter फ्रंटएंड चुनें।
- भुगतान विधि सेटअप छोड़ें।
- अपने Solidus एप्लिकेशन को
/पर माउंट करना चुनें, क्योंकि हम इसे स्टैंडअलोन ऐप के रूप में उपयोग कर रहे हैं।
इसके बाद, अपने टर्मिनल से bin/dev चलाएं और आप जाने के लिए तैयार हो जाएंगे। जब आप https://localhost:3000 पर जाएंगे, तो आप यह स्क्रीन देखेंगे:

Flipper के साथ फीचर फ्लैग्स लागू करें
अब आइए फीचर फ्लैग्स के लिए दो अनुकरणीय उपयोग के मामलों को लागू करें:
- एक प्रदर्शन सुधार।
- रूपांतरण दर अनुकूलन का एक प्रयास।
सबसे पहले, हालांकि, हमें flipper जेम के साथ इसके active_record स्टोरेज एडाप्टर को जोड़ना होगा:
यह Flipper "गेट्स" को देखने के लिए आवश्यक डेटाबेस टेबल सेट करेगा, यानी फीचर फ्लैग की जांच करते समय मूल्यांकन की जाने वाली ठोस शर्तें।
प्रदर्शन सुधार का परीक्षण
इस परिदृश्य का आकलन करने के लिए, हम अनुकूलित मामले के लिए sleep 1 कॉल जोड़कर स्टोरफ्रंट में एक धीमे अनुरोध का अनुकरण करेंगे:
अब, हम ऑप्टिमाइजेशन को अनुरोधों के एक यादृच्छिक सेट में रोल आउट करने के लिए "समय का प्रतिशत" रणनीति का उपयोग करेंगे। एक Rails कंसोल खोलें और निम्नलिखित दर्ज करें:
oha लोड टेस्टिंग टूल का उपयोग करके, हम पुष्टि कर सकते हैं कि वास्तव में आधे अनुरोध दूसरों की तुलना में एक सेकंड अधिक लेते हैं:
रूपांतरण दर अनुकूलन का परीक्षण
उपयोगकर्ता-सामना करने वाली सुविधाओं से निपटते समय, उदाहरण के लिए, UI में परिवर्तन, "एक्टर्स का प्रतिशत" रणनीति का उपयोग करके फ्लैग्स को रोल आउट करना अक्सर उचित होता है। इस तरह, हर उपयोगकर्ता को लगातार एक ही अनुभव प्रदान किया जाता है।
तो शुरू करने के लिए, हम अपने ई-कॉमर्स एप्लिकेशन के लिए दो उपयोगकर्ता बनाएंगे। एक Rails कंसोल चालू करें और निम्नलिखित कमांड जारी करें:
यह दो नमूना उपयोगकर्ता बनाता है और सुनिश्चित करता है कि फीचर फ्लैग उनमें से एक के लिए लगातार सक्षम है।
रूपांतरण दरों को बढ़ाने का प्रयास करने वाली एक सुविधा का अनुकरण करने के लिए, हम चेकआउट बटन को स्पंदित करेंगे:
यदि हम दोनों उपयोगकर्ताओं के साथ लॉग इन करते हैं और ब्राउज़र विंडोज़ को अगल-बगल व्यवस्थित करते हैं, तो हम देख सकते हैं कि प्रभाव वास्तव में एक (बाएं) उपयोगकर्ता के लिए सक्रिय है:
AppSignal कस्टम मेट्रिक्स का उपयोग करके फीचर फ्लैग्स के प्रभाव को मापें
सबसे अच्छा फीचर फ्लैग सिस्टम बेकार है अगर इसके प्रभाव का मूल्यांकन करने का कोई तरीका नहीं है। हमारे उदाहरण परिदृश्य में, हम बस जानना चाहते हैं:
- क्या प्रदर्शन सुधार के कारण विलंबता में उल्लेखनीय कमी आई है?
- क्या हमारे स्पंदित चेकआउट बटन के कारण रूपांतरण दर में उल्लेखनीय वृद्धि हुई है?
हम इन ऑप्टिमाइज़ेशन के भुगतान को मापने के लिए AppSignal के कस्टम मेट्रिक्स का उपयोग करेंगे।
सबसे पहले, अपने AppSignal संगठन में एक नया एप्लिकेशन बनाएं और निर्देशों का पालन करके इसे अपने ऐप से कनेक्ट करें:
मेजरमेंट मेट्रिक के साथ विलंबता मापना
हमने ऊपर oha CLI के साथ अपने सुधार की प्रभावशीलता को सत्यापित किया है, लेकिन वैध निर्णय लेने के लिए हम सर्वर-साइड टेलीमेट्री इंस्टॉल करेंगे जो AppSignal को विलंबता रिपोर्ट करता है। एक मेजरमेंट मेट्रिक ठीक इसकी अनुमति देता है: हम मिलीसेकंड में प्रतिक्रिया समय भेजेंगे, और एक मेट्रिक टैग जोड़ेंगे जो दर्शाता है कि हमारा प्रदर्शन अनुकूलन किसी विशिष्ट अनुरोध के लिए सक्रिय था या नहीं।
यहां एक छोटा सा गॉटचा है: क्योंकि हम "टाइम का प्रतिशत" मेट्रिक का उपयोग कर रहे हैं, हमें एक इंस्टेंस वेरिएबल में फ्लैग की स्थिति को कैप्चर करना होगा ताकि निष्पादन और रिपोर्टिंग के लिए समान मान का उपयोग किया जाए:
अब आइए ऊपर से स्थानीय लोड टेस्टिंग को दोहराएं:
हम थोड़ी देर में इस मेट्रिक को चार्ट करने और मूल्यांकन करने पर गौर करेंगे। उससे पहले, आइए अपने दूसरे फीचर फ्लैग पर ध्यान दें।
काउंट मेट्रिक के साथ रूपांतरण गिनना
हम रूपांतरणों को गिनने के लिए एक काउंटर मेट्रिक का उपयोग करेंगे। यदि आप बस किसी घटना का टैली रखना चाहते हैं तो यह एक बढ़िया विकल्प है।
ऐसा करने के लिए, हमें CartsController खोलना होगा, और प्रदर्शन उद्देश्यों के लिए, चेकआउट बटन क्लिक होने पर एक increment_counter कॉल जोड़ें:
अब आइए इसे मैन्युअल रूप से संबंधित ब्राउज़र विंडोज़ खोलकर और "Checkout" बटन को 3 बार क्लिक करके टेस्ट करें, और दूसरे मामले में केवल एक बार। इस तरह, हम देख सकते हैं कि ऑप्टिमाइज़ेशन फ्लैग सक्रिय है या नहीं।
AppSignal में कस्टम डैशबोर्ड सेट अप करें
हमारा अंतिम चरण डेटा-संचालित व्यावसायिक निर्णय लेने के लिए जानकारीपूर्ण ग्राफिक्स बनाना है। हम इसे प्राप्त करने के लिए AppSignal के डैशबोर्ड का उपयोग करेंगे। आइए इसे चरण दर चरण देखें:
- बाएं साइडबार में, "Add dashboard" पर क्लिक करें और इसे "Feature Flag Evaluation" नाम दें।

- "Add Graph" पर क्लिक करें और
products_response_timeमेट्रिक। केवल औसत प्रदर्शित करने के लिए "mean" चुनें औरperformance_improvement_enabledटैग लागू करें।

- चेकआउट काउंट के लिए चार्ट जोड़ने के लिए "Add new Graph" पर क्लिक करें। फिर से,
optimization_activeटैग लागू करें।

अब आपका कस्टम डैशबोर्ड तैयार है। बाएं लाइन ग्राफ में, आप दावा कर सकते हैं कि आपका प्रदर्शन सुधार प्रभावी था। दाएं पर, देखें कि ऑप्टिमाइज़्ड मामले में चेकआउट की उच्च संख्या कैसे दर्ज की गई थी।

और बस!
समापन
हमने देखा है कि फीचर फ्लैग्स Ruby on Rails एप्लिकेशन में नई सुविधाओं को प्रबंधित और तैनात करने का एक लचीला और कुशल तरीका प्रदान करते हैं। Flipper जेम और AppSignal के कस्टम मेट्रिक्स जैसे उपकरणों का उपयोग करके, डेवलपर्स न केवल फीचर रोलआउट को नियंत्रित कर सकते हैं, बल्कि प्रदर्शन और उपयोगकर्ता व्यवहार पर उनके प्रभाव को भी माप सकते हैं।
यह दृष्टिकोण सुनिश्चित करता है कि नई सुविधाओं को पूरी तरह से तैनात करने से पहले पूरी तरह से परीक्षण और अनुकूलित किया जाता है, अंततः एक अधिक स्थिर और उपयोगकर्ता-अनुकूल एप्लिकेशन की ओर अग्रसर होता है। अंत में, यह वैकल्पिक दृष्टिकोणों की प्रभावशीलता का आकलन करते समय अधिक सूचित व्यावसायिक निर्णय ले सकता है।
हैप्पी कोडिंग!
P.S. यदि आप Ruby Magic पोस्ट पढ़ना चाहते हैं जैसे ही वे प्रेस से निकलते हैं, तो हमारे Ruby Magic न्यूज़लेटर की सदस्यता लें और कभी भी एक भी पोस्ट मिस न करें!
Julian Rubisch
हमारे अतिथि लेखक Julian वियना में स्थित एक फ्रीलांस Ruby on Rails कंसल्टेंट हैं, जो Reactive Rails में विशेषज्ञ हैं। StimulusReflex कोर टीम के हिस्से के रूप में, वे 2020 से अत्याधुनिक HTML-over-the-wire तकनीक विकसित करने में सबसे आगे रहे हैं।
Julian Rubisch के सभी आलेख