- Cloudflare Flagship Cloudflare की feature flag service है, जो code को दोबारा deploy किए बिना application में features की visibility को नियंत्रित करती है
- flags को targeting rules और percentage-based rollout से परिभाषित किया जाता है, और इन्हें Workers native binding में सीधे evaluate किया जा सकता है
- यह OpenFeature के साथ compatible है, और @cloudflare/flagship SDK की मदद से Workers, Node.js, और browser में flags evaluate किए जा सकते हैं
- targeting user attributes, 11 comparison operators, AND/OR grouping, और sequential evaluation को support करता है, और consistent hashing से values स्थिर रखी जाती हैं
- variations boolean, string, number, और JSON objects को support करती हैं, और Cloudflare dashboard में app unit के आधार पर create, modify, और delete की जाती हैं
मुख्य विशेषताएँ
-
Workers binding
- Binding reference
- Workers की native binding के रूप में flags evaluate किए जाते हैं
- type-safe methods और default value के लिए automatic fallback प्रदान किया जाता है
-
OpenFeature SDK
- View SDK docs
- @cloudflare/flagship OpenFeature provider के रूप में Workers, Node.js, और browser में flags evaluate कर सकता है
- किसी दूसरे flag provider से switch करते समय केवल configuration की एक line बदलनी होती है
-
Targeting rules
- Learn about targeting
- user attributes के आधार पर अलग-अलग flag values दी जाती हैं
- rules 11 comparison operators, logical AND/OR grouping, और sequential evaluation को support करते हैं
-
Percentage-based rollout
- Learn about rollouts
- features को user percentage के हिसाब से धीरे-धीरे release किया जा सकता है
- consistent hashing यह सुनिश्चित करता है कि एक ही user को हमेशा वही flag value मिले
-
Multi-type variations
- Use Multi-type variations
- flag variations boolean, string, number, और structured JSON object हो सकती हैं
- object variation का उपयोग करके पूरे configuration block को एक ही flag के रूप में pass किया जा सकता है
-
Flag management
- Use Flag management
- Cloudflare dashboard में flags को create, update, और delete किया जा सकता है
- flags को apps के रूप में व्यवस्थित किया जाता है, जो project या service से map होते हैं
- पहला feature flag Get started guide में बनाया जा सकता है
संबंधित Cloudflare सेवाएँ
- Workers: Cloudflare के global network पर serverless applications बनाए जाते हैं, और Flagship binding के रूप में Workers के साथ native integration देता है
- KV: Cloudflare के global network में key-value data store किया जाता है, और Flagship इसी infrastructure का उपयोग flag configurations पहुँचाने के लिए करता है
1 टिप्पणियां
Hacker News की राय
0 network round-trip वाला abstraction को कम करके नहीं आंकना चाहिए।
f(feature_name, context)में context को बहुत बारीकी से ट्यून किया जा सकता है—जैसे किसी खास inventory, किसी खास supplier, किसी खास B2B customer के किसी खास user, किसी खास business model subtype, या किसी खास time slot में दिखाना है या नहींअगर आप logic सीधे लिख सकते हैं और उसे constant की तरह तेज़ी से tight loop में चला सकते हैं, तो business agility काफ़ी बढ़ जाती है। अगर लगता है कि कुछ ग्राहकों के लिए copy बदल सकती है, तो उसे configurable code की तरह बनाया जा सकता है, और testing व flags भी स्वाभाविक रूप से साथ आ जाते हैं
लेकिन ऐसे 0-hop setup के लिए एक परिष्कृत client execution engine चाहिए, और Cloudflare ने यहाँ ऐसा कुछ implement किया है, ऐसा नहीं लगता। memory constraints वाले Workers में यह समझ आता है, लेकिन पारंपरिक infrastructure में यह कम तर्कसंगत लगता है
Statsig का तरीका काफ़ी पसंद है: यह “Server SDKs hold the entire ruleset of your project in memory...” वाला approach है
https://docs.statsig.com/sdks/how-evaluation-works
इसे खुद भी बनाया जा सकता है। हर कुछ सेकंड में background thread में ruleset को कुछ data structures में sync करके reference को atomically swap कर दें। फिर सिर्फ applicable rule dimensions के लिए CRUD interface चाहिए
लेकिन कौन किस constant candidate को छू सकता है, इस पर governance ज़रूरी है। बड़ी ताकत के साथ बड़ी ज़िम्मेदारी आती है
feature flags को मैं trunk-based development के साथ QA environment में feature on करने, production में अभी rollout न करने, और PO/PM testing संभव बनाने वाले साधन के रूप में देखता हूँ। trunk-based development बिना जटिल branching strategy के तेज़ और आसान DevOps को सक्षम बनाता है
दूसरी ओर application configuration, application का हिस्सा है, और business context के अनुसार app को customize करने का क्षेत्र है। इसके लिए कोई framework या tool है या नहीं, पता नहीं, लेकिन दोनों को स्पष्ट रूप से अलग रखना चाहिए
उसी modulo+random combination की वजह से LaunchDarkly जैसे tools को कई भाषाओं के लिए SDK देने पड़े, और जिन SDKs से मुझे काम करना पड़ा वे उस भाषा के हिसाब से बिल्कुल उपयुक्त नहीं थे। evaluation को edge तक धकेलने के कारण पूरा system ज़रूरत से ज़्यादा जटिल हो गया, ऐसा मुझे लगता है
व्यवहार में “इस customer के लिए” current flag table को कभी-कभार फिर से fetch कर लेना ही काफ़ी होता है, और यह काफ़ी कम झंझट वाला है। Flipper होने से अब यह सब खुद संभालना नहीं पड़ता, यह अच्छी बात है
https://www.stigg.io/blog-posts/entitlements-untangled-the-m...
contract के हिसाब से per-seat pricing थोड़ी कड़ी है, लेकिन संभालने लायक है
यह gold-plated Boolean-as-a-service जैसा लगता है
अगर इस तरह सरल बना दें, तो दुनिया की हर service को bits-as-a-service कहकर घटाया जा सकता है। असल में इन चीज़ों की वैध business value होती है, और इन्हें उपलब्ध कराने की प्रक्रिया में जटिलता भी होती है
किसी भी SaaS tool को “excel-as-a-service” कहा जा सकता है, और यह उसी तरह का बेअसर वर्णन है
JS SDK docs में यह warning है: “क्लाइंट provider को flag values लाने के लिए API token चाहिए। यह token किसी एक app तक सीमित नहीं है, इसलिए token रखने वाला कोई भी व्यक्ति account के सभी apps के flags evaluate कर सकता है। public applications में इसे सावधानी से इस्तेमाल करें”
https://developers.cloudflare.com/flagship/sdk/client-provid...
browser में deploy होने के लिए डिज़ाइन किए गए client SDK के लिए यह सावधानी क्यों ज़रूरी है, यह जानना दिलचस्प है। क्या इसका मतलब यह है कि कोई भी client नया
targetingKeyभेजकर दूसरे users के flags देख सकता है?flags में महत्वपूर्ण जानकारी नहीं होनी चाहिए, लेकिन यह एक दिलचस्प design choice लगती है
ऐसा नहीं लगता कि 6 महीने पहले Cloudflare ने गंभीरता से तय किया होगा कि LaunchDarkly का competitor बनाना है
यह अच्छा है, लेकिन विडंबना यह है कि शायद Flagship के ज़रिए मिलने वाली इस सुविधा का मैं अभी भी इंतज़ार कर रहा हूँ
https://blog.cloudflare.com/enterprise-grade-features-for-al...
अभी तक ऐसा लगता है कि enterprise-only सुविधाएँ नीचे के paid accounts तक आई ही नहीं हैं
खास तौर पर मेरी रुचि इसमें है:
https://developers.cloudflare.com/speed/optimization/content...
आजकल Cloudflare अच्छा काम कर रहा है, लेकिन granular permission management की कमी है। अभी भी production environment के लिए पूरी तरह अलग account बनाना पड़ता है, और एक domain सिर्फ एक ही account से बंध सकता है, इसलिए SSO उलझ जाता है
email भेजने के लिए अभी भी AWS इस्तेमाल करता हूँ, इसलिए अच्छा होगा अगर Cloudflare की तरफ़ से भी यह आ जाए
OpenFeature के बारे में पहली बार सुन रहा हूँ, बढ़िया लग रहा है। क्या किसी ने इसे integrate किया है? https://openfeature.dev
पारदर्शिता के लिए बता दूँ, मैं Flagsmith का CTO हूँ। पिछले कुछ वर्षों में OpenFeature adoption का काफ़ी स्पष्ट बढ़ता हुआ curve देखा है। पहले हम ग्राहकों को इसे आज़माने की सलाह देते थे, लेकिन अब ग्राहक खुद OpenFeature को requirement के रूप में लेकर आते हैं
अब vendor support भी काफ़ी mature हो चुका है और लगभग सभी भाषाओं को cover करता है। अगर आप किसी नई service में feature flags integrate करना चाहते हैं, या अपने in-house implementation से third-party solution पर जाना चाहते हैं, तो मैं OpenFeature की सिफारिश करूँगा
पूरी तरह custom backend बनाने में लगभग 2 हफ़्ते लगे। कई भाषाओं के SDK भी बिना समस्या के काम कर रहे थे। एक bug मिला था, लेकिन report करते ही उसी दिन ठीक कर दिया गया
मैं feature flags को ठीक से समझ नहीं पा रहा हूँ। database के Boolean से मूल रूप से यह अलग कैसे है?
जो टीमें इसे खुद बनाती हैं, वे आम तौर पर तब जल्दी मुश्किल में फँस जाती हैं जब product management, marketing, और sales ज़्यादा जटिल rules के साथ targeting करना चाहते हैं
कुल मिलाकर यह कोई असाधारण रूप से कठिन समस्या नहीं है, लेकिन इसका scale बड़ा है। शुरुआत में बहुत सी ऐसी चीज़ें चाहिए होती हैं जो दिखाई नहीं देतीं
feature flags को मूल रूप से permissions system के क़रीब समझा जा सकता है। यह कुछ खास users को कुछ खास features तक पहुँच देने की बात है, और जिसने भी permissions system संभाला है, वह जानता है कि group membership, hierarchical groups, roles, ACL आदि कितने जटिल हो सकते हैं। ये सब feature flag system के अलग-अलग targeting rules जैसे ही हैं
Cloudflare भी आंतरिक रूप से नए features या builds को पहले free customers तक rollout करता है, और stabilization period के बाद धीरे-धीरे बड़े customers तक फैलाता है
feature flags को एक तरह के fuzz test की तरह random तरीके से भी on किया जा सकता है। इसे सिर्फ “कुछ नया” मत समझिए, यह “व्यवहार में बदलाव” भी हो सकता है
आप इसे सभी clients के ऊपर एक Boolean की तरह सोच सकते हैं, लेकिन आम तौर पर इसे उस तरह implement नहीं किया जाता
feature flags की मुख्य खूबी यह है कि वे कई महीनों और बहुत सारे commits लेने वाले बड़े features पर भी main branch में काम करना संभव बनाते हैं। मेरे लिए यह एक हल्का और ज़्यादा iterative development process बनाता है
यह अलग branch बनाए रखने और बड़े development-in-progress features के लिए अलग deployment targets रखने के तरीके के विपरीत है
feature flags को अक्सर ज़रूरत से ज़्यादा overengineer किया जाता है
बस configuration value, database value, या environment variable देखकर dynamic रूप से एक path या दूसरे path पर जाना होता है
बात इतनी ही है। features को छोटा बनाना चाहिए, या code को इस तरह refactor करना चाहिए कि ऊँचे स्तर पर आसानी से switch किया जा सके
अगर ऐसा आसानी से नहीं हो सकता, तो microservices के बीच feature activation coordinate करने के लिए जटिल feature flag implementation मददगार हो सकता है
अगर features बहुत ज़्यादा हों, तो dashboard भी उपयोगी हो सकता है
लेकिन मेरे हिसाब से ये दोनों ही इस बात के मज़बूत संकेत हैं कि feature flags से बचना चाहिए। feature flags local और temporary बदलावों के लिए ज़्यादा उपयुक्त हैं, वरना complexity जमा होती जाती है और management व maintenance कठिन हो जाते हैं
बेशक, आप यह नहीं चाहेंगे कि user revenue threshold पार करते ही या border पार करते ही feature खो दे, इसलिए किसी न किसी तरह का tracking implementation चाहिए। analytics और error tracking को भी feature flag service से बात करनी होगी
यह rocket science नहीं है, लेकिन environment variable से निश्चित रूप से ज़्यादा जटिल है
जब Cloudflare उन चीज़ों को देना शुरू करता है जिनके लिए पहले दूसरे provider का इस्तेमाल करना पड़ता था, तो हमेशा उत्साह होता है। इस बात पर भरोसा रहता है कि यह मज़बूत होगा
Function में Statsig का इस्तेमाल किया था। शुरुआत में एक product में दो लोगों ने इसका इस्तेमाल शुरू किया था, लेकिन 12 महीनों के भीतर product copy और rollout का बड़ा हिस्सा Statsig से चलने लगा
Statsig में client-side evaluation है, इसलिए Statsig server को user data process किए बिना भी internal concepts के आधार पर rules और rollout लिखे जा सकते हैं
उम्मीद है Cloudflare यहाँ एक परिष्कृत product बनाएगा ताकि आगे दूसरे products का इस्तेमाल न करना पड़े
मैं तकनीकी बारीकियाँ अच्छी तरह नहीं जानने वाला एक सामान्य user हूँ, लेकिन Cloudflare मुझे इस्तेमाल करने में काफ़ी आसान लगता है। उम्मीद है यह अच्छा काम जारी रखेगा