प्रतिनिधि इंटरव्यू विषय

OpenFeature Evaluation Context और Hooks: आप फ़्लैगिंग सीमाओं को कैसे स्पष्ट रखते हैं?

सामान्यकठिन
Offer.cc संपादकीय टीमप्रकाशित अपडेट किया गया

प्रश्न

समझाएं कि OpenFeature evaluation context, providers और hooks विफलता (failure), प्रकार (type) और गोपनीयता (privacy) सीमाओं सहित एक साथ कैसे काम करते हैं।

प्रॉम्प्ट और दायरा

एक साक्षात्कारकर्ता पूछ सकता है: "समझाएं कि OpenFeature evaluation context, providers और hooks विफलता (failure), प्रकार (type) और गोपनीयता (privacy) सीमाओं सहित एक साथ कैसे काम करते हैं।"

संकेत यह है कि क्या आप OpenFeature को एक वेंडर-न्यूट्रल एप्लिकेशन इवैल्यूएशन API के रूप में समझते हैं, न कि एक पूर्ण फ़्लैग कंसोल या ऑथराइजेशन सिस्टम के रूप में। यह विनिर्देश (specification) flag key, डिफ़ॉल्ट मान, evaluation context, provider और evaluation details को अलग करता है। Hooks सत्यापन (validate), संदर्भ को समृद्ध (enrich context), टेलीमेट्री उत्सर्जित (emit telemetry), या त्रुटियों को संभाल सकते हैं, लेकिन उन्हें बिज़नेस ऑथराइजेशन सिमेंटिक्स को चुपचाप नहीं बदलना चाहिए।

साक्षात्कारकर्ता क्या परीक्षण कर रहा है

  • क्या आप एप्लिकेशन कॉलर, provider, evaluation context और फ़्लैग मेटाडेटा के बीच अंतर करते हैं।
  • क्या typed evaluation और डिफ़ॉल्ट मान अनुमानित विफलता व्यवहार बनाते हैं।
  • क्या आप साझा किए गए म्यूटेबल ग्लोबल स्टेट के बजाय ट्रांज़ैक्शन संदर्भ और hooks का उपयोग करते हैं।
  • क्या आप provider टाइमआउट, प्रकार बेमेल (type mismatches), गायब फ़्लैग और गोपनीयता डेटा को संभालते हैं।
  • क्या evaluation logs और ऑडिट बिज़नेस ऑथराइजेशन से अलग रहते हैं।

स्पष्टीकरण के लिए प्रश्न

  • क्या फ़्लैग क्रमिक वितरण (gradual delivery), प्रयोग असाइनमेंट (experiment assignment), या सुरक्षा ऑथराइजेशन को नियंत्रित करता है?
  • कौन से संदर्भ फ़ील्ड आवश्यक हैं, और किन्हें इन-प्रोसेस या लॉग से बाहर रहना चाहिए?
  • क्या provider स्थानीय मेमोरी, एक रिमोट सेवा, एक फ़ाइल, या एक provider कंपोज़िशन है?
  • क्या provider के विफल होने पर डिफ़ॉल्ट सुरक्षित है, और क्या नीति fail-open है या fail-closed?
  • कितने evaluation detail, नियम संस्करण (rule version), और provider त्रुटि को रिकॉर्ड किया जाना चाहिए?

30-सेकंड का उत्तर

आप कह सकते हैं:

OpenFeature का एप्लिकेशन API एक typed flag मान का अनुरोध करता है, evaluation context लक्ष्यीकरण (targeting) और अनुरोध-स्तरीय डेटा की आपूर्ति करता है, provider अपने नियमों का मूल्यांकन करता है, और hooks सत्यापन, संदर्भ संवर्धन, या टेलीमेट्री के लिए जीवनचक्र के चारों ओर चलते हैं। कॉलर एक सुरक्षित डिफ़ॉल्ट प्रदान करता है; provider की विफलता, एक प्रकार का बेमेल, या गायब फ़्लैग एक hook को ऑथराइजेशन सिस्टम में बदले बिना निदान योग्य विवरण लौटाता है। संदर्भ केवल गोपनीयता नियंत्रणों के साथ आवश्यक फ़ील्ड ले जाता है। प्रयोग और रिलीज़ मेट्रिक्स नियम संस्करणों को रिकॉर्ड कर सकते हैं, लेकिन व्यक्तिगत डेटा को लॉग नहीं करना चाहिए।

चरण-दर-चरण तर्क

मूल्यांकन उत्तरदायित्वों को अलग करें

कॉलर एक typed मान का अनुरोध करता है, provider नियमों को हल करता है, और SDK परिणाम को डिफ़ॉल्ट, कारण (reason), संस्करण (variant), और त्रुटि कोड के साथ जोड़ता है:

text
application -> OpenFeature client -> provider -> flag result
                         |               |
                       hooks        evaluation details

Provider नियम स्रोत और मूल्यांकन कार्यान्वयन का मालिक है। यह न मानें कि प्रत्येक provider का कैशिंग, नेटवर्क, या निरंतरता व्यवहार समान है; कॉलर अभी भी विफलता के बाद डिफ़ॉल्ट और बिज़नेस क्रियाओं को परिभाषित करता है।

Evaluation Context डिज़ाइन करें

संदर्भ में एक targeting key, उपयोगकर्ता या संगठन विशेषताएँ, और ट्रांज़ैक्शन द्वारा प्रसारित फ़ील्ड शामिल हो सकते हैं। केवल नियमों द्वारा आवश्यक डेटा भेजें; ईमेल, IP और डिवाइस पहचानकर्ताओं को हैश करें, ट्रिम करें या छोड़ दें। अनुरोधों के बीच साझा की गई म्यूटेबल ऑब्जेक्ट का उपयोग करने के बजाय अनुरोध के साथ ट्रांज़ैक्शन संदर्भ का प्रसार करें।

Typed Evaluation और विवरण का उपयोग करें

उसी प्रकार के डिफ़ॉल्ट के साथ बूलियन, स्ट्रिंग, संख्याओं और संरचित मानों के लिए मिलान API का उपयोग करें। Evaluation details निदान और प्रयोग विश्लेषण के लिए provider, कारण, वैरिएंट, त्रुटि कोड और मेटाडेटा ले जा सकते हैं। विवरण ऑथराइजेशन निर्णय नहीं हैं; एक कॉलर को "फ़्लैग बंद है" और "उपयोगकर्ता को अनुमति नहीं है" के बीच अंतर करना चाहिए।

Hooks और विफलता नीति रखें

Hooks before, after, error और finally चरणों में मानों को सत्यापित कर सकते हैं, टेलीमेट्री जोड़ सकते हैं, त्रुटियों को रिकॉर्ड कर सकते हैं, या संदर्भ को समृद्ध कर सकते हैं। उन्हें idempotent, कम-विलंबता (low-latency) और गोपनीयता-सुरक्षित होना चाहिए। एक रिमोट provider टाइमआउट या प्रकार की त्रुटि एक सुरक्षित डिफ़ॉल्ट और गिरावट मीट्रिक का उपयोग करती है। उच्च-जोखिम वाली कार्यक्षमता fail-closed हो सकती है, लेकिन उपयोगकर्ता प्रभाव और पुनर्प्राप्ति की व्याख्या करें।

मॉडल उच्च-गुणवत्ता वाला उत्तर

मैं OpenFeature को एक एप्लिकेशन मूल्यांकन अनुबंध के रूप में मानता हूँ। कॉलर एक typed API का उपयोग करता है और एक प्रकार-मिलान सुरक्षित डिफ़ॉल्ट की आपूर्ति करता है; evaluation context केवल targeting key और नियम द्वारा आवश्यक विशेषताओं को ले जाता है। Provider एक ठोस फ़्लैग सिस्टम से नियमों को प्राप्त और मूल्यांकन करता है, एक मान, कारण, वैरिएंट, त्रुटि कोड और मेटाडेटा लौटाता है। Hooks जीवनचक्र के चारों ओर संदर्भ को सत्यापित, समृद्ध और टेलीमेट्री उत्सर्जित कर सकते हैं, लेकिन वे ऑथराइजेशन को प्रतिस्थापित नहीं करते हैं या चुपचाप परिणामों को फिर से नहीं लिखते हैं। Provider टाइमआउट, एक गायब फ़्लैग, या एक प्रकार का बेमेल परिभाषित डिफ़ॉल्ट का पालन करता है और त्रुटि मेट्रिक्स उत्सर्जित करता है। लॉग ईमेल या पूर्ण अनुरोध संदर्भ के बजाय एक अज्ञात targeting key, फ़्लैग की, वैरिएंट और नियम संस्करण रिकॉर्ड करते हैं। जोखिम के अनुसार रिलीज़ प्रयोग के लिए fail-open या fail-closed चुनें, फिर कैश समाप्ति, provider पुनर्प्राप्ति और रोलबैक का अभ्यास करें।

सामान्य गलतियाँ

  • OpenFeature को एक पूर्ण फ़्लैग कंसोल, कॉन्फ़िगरेशन वितरक, या ऑथराइजेशन सेवा कहना।
  • किसी hook को बिना कोई कारण दर्ज किए मान बदलने देना, जिससे परिणाम अस्पष्ट हो जाते हैं।
  • गलत प्रकार के साथ डिफ़ॉल्ट का उपयोग करना या गायब फ़्लैग को सफलता के रूप में मानना।
  • न्यूनतमकरण के बिना evaluation context में एक पूर्ण उपयोगकर्ता ऑब्जेक्ट, ईमेल या IP भेजना।
  • विफल provider को हमेशा के लिए पुनः प्रयास करना या एक स्पष्ट fail-open/fail-closed नीति को छोड़ देना।
  • Evaluation details को अंतिम अनुमति निर्णय के रूप में मानना।

अनुवर्ती प्रश्न और उत्तर

1. क्या targetingKey एक ईमेल पता हो सकता है?

केवल तभी जब नियम को वास्तव में इसकी आवश्यकता हो और गोपनीयता समीक्षा इसकी अनुमति दे। एक स्थिर, अपरिवर्तनीय उपयोगकर्ता या संगठन पहचानकर्ता आमतौर पर अधिक सुरक्षित होता है। लॉग और रिमोट providers को अभी भी न्यूनतमकरण और प्रतिधारण सीमाओं की आवश्यकता होती है।

2. जब कोई provider त्रुटि लौटाता है तो क्या होना चाहिए?

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

3. क्या hooks ऑडिटिंग लागू कर सकते हैं?

वे मूल्यांकन घटनाओं के लिए एक टेलीमेट्री प्रवेश बिंदु हो सकते हैं, लेकिन ऑडिटिंग के लिए स्वतंत्र अखंडता, पहुंच नियंत्रण और प्रतिधारण की भी आवश्यकता होती है। जब तक कि आवश्यकता स्पष्ट रूप से ऑडिट सफलता को एक हार्ड गेट न बना दे, तब तक hook की विफलता को प्रत्येक मूल्यांकन को ब्लॉक नहीं करना चाहिए।

सार्वजनिक स्रोत

संबंधित प्रश्न