<पी> फ़ीचर फ़्लैगिंग ने इस प्रतिमान को बदल दिया है कि बैकएंड डेवलपर्स अपने द्वारा बनाई गई चीज़ों का परीक्षण और संशोधन कैसे कर सकते हैं। फ़ीचर फ़्लैग के साथ, हम किसी फ़ीचर को सक्षम और अक्षम कर सकते हैं या किसी चीज़ की कार्यक्षमता को एक क्लिक से तुरंत बदल सकते हैं (पुनः तैनात करने की कोई आवश्यकता नहीं है)। <पी> इस ट्यूटोरियल में, हम देखेंगे कि फ़ीचर फ़्लैग हमें यूआई से जब भी चाहें किसी फ़ीचर/कोड के एक हिस्से को सक्षम और अक्षम करने में मदद करते हैं, पूरे कोड को फिर से तैनात करने की आवश्यकता के बिना। <पी> चीजों को अधिक गहराई से समझने के लिए, हम स्क्रैच से एक ऐप बनाएंगे, फीचर फ़्लैगिंग क्षमताओं को देखेंगे, और एक ही डैशबोर्ड से हमारे बनाए गए फीचर फ़्लैग को प्रबंधित करने के लिए फ़्लैगस्मिथ नामक टूल का उपयोग करेंगे। यहां हम क्या कवर करेंगे:
- <पी> पूर्वावश्यकताएँ
- <पी> फ़ीचर फ़्लैग क्या है?
- <पी> बैकएंड विकास के लिए फ़ीचर फ़्लैग
- <पी> ओपन सोर्स टूल्स का उपयोग क्यों करें?
- <पी> आइए कोड करें!
- <पी> टूल प्रारंभ करना
- <पी> एपीआई के लिए एंडपॉइंट बनाना
- <पी> फ़ीचर फ़्लैगिंग कैसे जोड़ें
- <पी> फ़ीचर फ़्लैग कोड तर्क को समझना
- <पी> फ़्लैसस्मिथ डैशबोर्ड में फ़ीचर फ़्लैग कैसे बनाएं
- <पी> दर सीमित करने वाला फ़ीचर फ़्लैग
- <पी> बीटा फ़ीचर फ़्लैग
- <पी> एक्सेस कुंजी प्राप्त करना
- <पी> एपीआई चला रहा है
- <पी> रेट_लिमिट फ़्लैग को अपडेट किया जा रहा है
- <पी> GitHub ऐप के साथ फ़ीचर फ़्लैग को कैसे एकीकृत करें
- <पी> फ़्लैगस्मिथ GitHub ऐप का परीक्षण
- <पी> निष्कर्ष
आवश्यकताएँ
- <पी> गोलांग स्थापित और इसकी एक मध्यम स्तर की समझ।
- <पी> एक चालू रेडिस इंस्टेंस (दूरस्थ या स्थानीय इंस्टेंस)
- <पी> फ़्लैगस्मिथ खाता (यह मुफ़्त है। हम इसे बाद में लेख में शामिल करेंगे।)
फ़ीचर फ़्लैग क्या है?
<पी> फ़ीचर फ़्लैग विकास की एक तकनीक है जो टीमों को स्रोत कोड को संशोधित किए बिना या पुनः तैनात किए बिना सुविधाओं को चालू या बंद करने की अनुमति देती है। <पी> इसे थोड़ा सरल बनाने के लिए, उन्हें सशर्त कथनों (उदाहरण के लिए, यदि-और कथन) की तरह कार्य करने के रूप में सोचें:किसी चीज़ के सही या गलत होने के आधार पर, यह उस कोड पथ को निर्धारित करता है जिसे निष्पादित किया जाएगा। बैकएंड डेवलपमेंट के लिए फ़ीचर फ़्लैग
<पी> आपने फ़्रंटएंड और वेबसाइटों में फ़ीचर फ़्लैग का उपयोग देखा होगा, लेकिन उनमें और भी बहुत कुछ है। आप एपीआई की कार्यक्षमता को संशोधित करने, दर सीमा को संशोधित/सेट करने, एपीआई एंडपॉइंट की कार्यक्षमता को बदलने या इसे पूरी तरह से बंद करने जैसे काम करने के लिए सर्वर साइड पर उनका उपयोग कर सकते हैं। बैकएंड डेवलपर्स के रूप में, हम फीचर फ़्लैग के साथ अपने परीक्षण को उन्नत कर सकते हैं। <पी> इसे प्रदर्शित करने के लिए, हम एक डेमो ऐप बनाएंगे। डेमो ऐप को बीटा परीक्षण या प्रारंभिक रोलिंग उद्देश्यों के लिए एपीआई में एक नया एंडपॉइंट जोड़ने के लिए तुरंत कार्यक्षमता (दर सीमा) को संशोधित करने से लेकर फीचर फ़्लैगिंग क्षमताओं को दिखाने के लिए क्यूरेट किया गया है। हम रास्ते में पूरी तरह से ओपन-सोर्स टूल का उपयोग करेंगे! <पी> इस ऐप को बनाने के लिए हम ओपन सोर्स टूल्स (गोलंग, रेडिस और फ्लैगस्मिथ) का उपयोग करेंगे। ओपन सोर्स अधिक पारदर्शिता और विश्वास लाता है और बैकएंड डेवलपर्स के वैश्विक समुदाय के साथ सहयोग को प्रोत्साहित करता है। <पी> ओपन सोर्स टूल को एकीकृत करके, हम निर्माण और परीक्षण करते समय पूर्ण दृश्यता प्राप्त करते हैं। उदाहरण के लिए, हम फ़ीचर फ़्लैग को GitHub के साथ एकीकृत करेंगे, जो हमें फ़्लैगस्मिथ फ़ीचर फ़्लैग को GitHub पुल रिक्वेस्ट या इश्यू के साथ जोड़कर किसी फ़ीचर के जीवनचक्र को ट्रैक करने देता है। यह हमें प्रत्येक संशोधन को मैन्युअल रूप से ट्रैक किए बिना हमारी सुविधाओं में परिवर्तनों के साथ अपडेट रहने देता है। हम विभिन्न परिवेशों में अपनी सुविधाओं की स्थिति को आसानी से ट्रैक कर सकते हैं। आइए कोड करें!
<पी> इस ट्यूटोरियल में, आप देखेंगे कि फीचर फ़्लैगिंग तंत्र के साथ परीक्षण से पहले और बाद में ऐप की कार्यक्षमता कैसे बदलती है। हम जिन टूल और फ्रेमवर्क का उपयोग करेंगे वे हैं गोलांग, डॉकर, रेडिस, फ्लैगस्मिथ और गिटहब। जैसा कि चर्चा की गई है, सभी खुले स्रोत हैं और परीक्षण के लिए खाता बनाने के लिए स्वतंत्र हैं। <पी> आरंभ करने के लिए, अपनी पसंदीदा आईडीई खोलें, गोलांग प्रोजेक्ट प्रारंभ करें, और फिर नीचे दिए गए कोड को main.go में कॉपी करें फ़ाइल. फिर go mod tidy चलाएँ सभी आवश्यक निर्भरताएँ स्थापित करने के लिए। <पी> आइए समझें कि नीचे दिए गए कोड स्निपेट में क्या चल रहा है: package main
import (
"context"
"errors"
"fmt"
"log"
"net/http"
"os"
"strconv"
"github.com/gin-gonic/gin"
"github.com/go-redis/redis_rate/v10"
"github.com/joho/godotenv"
"github.com/redis/go-redis/v9"
)
var (
redisClient *redis.Client
limiter *redis_rate.Limiter
)
func initClients() {
redisClient = redis.NewClient(&redis.Options{
Addr: os.Getenv("REDIS_URL"),
})
limiter = redis_rate.NewLimiter(redisClient)
}
func main() {
err := godotenv.Load()
if err != nil {
log.Printf("Loading environment variable from the host system")
} else {
log.Printf("Loading environment from .env file")
}
initClients()
defer redisClient.Close()
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
err, remainingLimit := rateLimitCall(c.ClientIP())
if err != nil {
c.JSON(
http.StatusTooManyRequests,
gin.H{"error": "Rate Limit Hit"})
} else {
c.JSON(
http.StatusOK,
gin.H{"Your left over API request is": remainingLimit})
}
})
r.GET("/beta", func(c *gin.Context) {
c.JSON(
http.StatusOK,
gin.H{"message": "This is beta endpoint"})
})
r.Run(":" + os.Getenv("PORT"))
}
func rateLimitCall(ClientIP string) (error, int) {
ctx := context.Background()
rateLimitString := os.Getenv("RATE_LIMIT")
RATE_LIMIT, _ := strconv.Atoi(rateLimitString)
res, err := limiter.Allow(ctx, ClientIP, redis_rate.PerHour(RATE_LIMIT))
if err != nil {
panic(err)
}
if res.Remaining == 0 {
return errors.New("You have hit the Rate Limit for the API. Try again later"), 0
}
fmt.Println("remaining request for", ClientIP, "is", res.Remaining)
return nil, res.Remaining
}
टूल्स को प्रारंभ करना
func initClients() {
redisClient = redis.NewClient(&redis.Options{
Addr: os.Getenv("REDIS_URL"),
})
limiter = redis_rate.NewLimiter(redisClient)
}
func main() {
err := godotenv.Load()
if err != nil {
log.Printf("Loading environment variable from the host system")
} else {
log.Printf("Loading environment from .env file")
}
initClients()
defer redisClient.Close()
r := gin.Default()
...
})
<पी> शीर्ष पर, हम रेडिस और रेट लिमिटर क्लाइंट्स को स्टोर करने के लिए वेरिएबल्स की घोषणा करते हैं ताकि उन्हें एक बार पुन:उपयोग और आरंभ किया जा सके। फिर हम उन्हें initClients() में आरंभ करते हैं . <पी> main() में , सबसे पहले, हम सिस्टम या .env फ़ाइल से पर्यावरण चर लोड करते हैं। फिर हम initClients() पर कॉल करते हैं . यह क्लाइंट बनाएगा और उन्हें हमारे द्वारा बनाए गए वेरिएबल्स में संग्रहीत करेगा। <पी> इसके बाद, हम एक जिन बनाते हैं राउटर जो हमारे आने वाले सभी अनुरोधों को संभालता है। ये वे पर्यावरण चर हैं जिनकी हमें अपने .env में आवश्यकता है फ़ाइल. इस डेमो के लिए, हमें दर-सीमित कार्यक्षमता के लिए सभी डेटा को संग्रहीत करने के लिए चलने वाले एक रेडिस इंस्टेंस की आवश्यकता है। हम डॉकर या किसी भी रिमोट मशीन का उपयोग कर सकते हैं - बस REDIS_URL को अपडेट करना याद रखें तदनुसार. मैं डॉकर का उपयोग करने जा रहा हूं। <पी> हम एक मील आगे भी जा सकते हैं और फ़ीचर फ़्लैग से सभी पर्यावरण चर प्राप्त कर सकते हैं, लेकिन हम यहां ऐसा नहीं करेंगे। REDIS_URL=localhost:6379
PORT=8080
RATE_LIMIT=10
एपीआई के लिए एंडपॉइंट बनाना
r.GET("/ping", func(c *gin.Context) {
err, remainingLimit := rateLimitCall(c.ClientIP())
if err != nil {
c.JSON(
http.StatusTooManyRequests,
gin.H{"error": "Rate Limit Hit"})
} else {
c.JSON(
http.StatusOK,
gin.H{"Your left over API request is": remainingLimit})
}
})
r.GET("/beta", func(c *gin.Context) {
c.JSON(
http.StatusOK,
gin.H{"message": "This is beta endpoint"})
})
r.Run(":" + os.Getenv("PORT"))
<पी> फिर हम दो GET बनाते हैं समापनबिंदु, /ping और /beta . हर बार जब कोई /ping हिट करता है समापन बिंदु को हम rateLimitCall() कहते हैं समारोह. यह आईपी पते से आने वाले अनुरोधों की जांच करता है और दर सीमा निर्धारित करता है . यह सब हमारे द्वारा बनाए गए रेडिस इंस्टेंस में संग्रहीत है। <पी> तो, अब यदि उपयोगकर्ता ने /ping के साथ इंटरैक्ट किया है एपीआई एंडपॉइंट पहली बार, 10 प्रति घंटा की सीमा के साथ एक प्रविष्टि बनाएगा . सीमा संख्या 10 RATE_LIMIT से आता है हम सेट करते हैं, और प्रति घंटा ताज़ा फ़ॉर्म redis_rate.PerHour(RATE_LIMIT) से आता है समारोह. <पी> इसके बाद, हम जांचते हैं कि उपयोगकर्ता के पास शेष सीमा है या नहीं। यदि हां, तो हम उनके शेष अनुरोधों की संख्या बताते हुए एक संदेश लौटाएंगे। अन्यथा, यदि वे सीमा सीमा तक पहुंचते हैं, तो हम उन्हें यह बताते हुए एक संदेश लौटाते हैं। <पी> /ping के अलावा समापन बिंदु, हमारे पास एक और समापन बिंदु /beta है . यह एक साधारण संदेश देता है, लेकिन बाद में हम देखेंगे कि कैसे (फ़ीचर फ़्लैग का उपयोग करके) हम इस एंडपॉइंट की कार्यक्षमता को पूरी तरह से चालू और बंद कर सकते हैं। फ़ीचर फ़्लैगिंग कैसे जोड़ें
<पी> अब हमारे ऐप में फीचर फ़्लैगिंग क्षमताओं को जोड़ने का समय आ गया है। हम फ़्लैगस्मिथ का उपयोग करने जा रहे हैं. फ़्लैगस्मिथ एक ओपन सोर्स सॉफ़्टवेयर है जो हमें वेब, मोबाइल और सर्वर-साइड एप्लिकेशन पर फ़ीचर फ़्लैग आसानी से बनाने और प्रबंधित करने देता है। <पी> फ़्लैगस्मिथ का उपयोग करके, हम सुविधाओं को एक ध्वज में लपेट सकते हैं और फिर उन्हें विभिन्न वातावरणों, उपयोगकर्ताओं या उपयोगकर्ता खंडों के लिए चालू या बंद कर सकते हैं। और फिर आप पुन:तैनाती की आवश्यकता के बिना फ्लैगस्मिथ डैशबोर्ड से उन सभी को प्रबंधित करने में सक्षम होंगे। <पी> तो, आइए नीचे दिए गए कमांड को चलाकर फ्लैगस्मिथ पैकेज स्थापित करें: go get github.com/Flagsmith/flagsmith-go-client/v3
<पी> फिर हम पैकेज को फ्लैगस्मिथ उपनाम देकर आयात करते हैं . हमारे मौजूदा कोड पर फ़ीचर फ़्लैगिंग लागू करने के बाद नीचे अद्यतन कार्यक्षमता दी गई है। <पी> आइए हमारे द्वारा यहां किए गए परिवर्तनों को समझें (मैं कोड स्निपेट के नीचे समझाऊंगा): package main
import (
"context"
"errors"
"fmt"
"log"
"net/http"
"os"
flagsmith "github.com/Flagsmith/flagsmith-go-client/v3"
"github.com/gin-gonic/gin"
"github.com/go-redis/redis_rate/v10"
"github.com/joho/godotenv"
"github.com/redis/go-redis/v9"
)
var (
redisClient *redis.Client
limiter *redis_rate.Limiter
flagsmithClient *flagsmith.Client
)
func initClients() {
redisClient = redis.NewClient(&redis.Options{
Addr: os.Getenv("REDIS_URL"),
})
limiter = redis_rate.NewLimiter(redisClient)
flagsmithClient = flagsmith.NewClient(os.Getenv("FLAGSMITH_ENVIRONMENT_KEY"))
}
func main() {
err := godotenv.Load()
if err != nil {
log.Printf("Loading environment variable from the host system")
} else {
log.Printf("Loading environment from .env file")
}
initClients()
defer redisClient.Close()
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
err, remainingLimit := rateLimitCall(c.ClientIP())
if err != nil {
c.JSON(
http.StatusTooManyRequests,
gin.H{"error": "Rate Limit Hit"})
} else {
c.JSON(
http.StatusOK,
gin.H{"Your left over API request is": remainingLimit})
}
})
r.GET("/beta", func(c *gin.Context) {
flags := getFeatureFlags()
isEnabled, _ := flags.IsFeatureEnabled("beta")
if isEnabled {
c.JSON(
http.StatusOK,
gin.H{"message": "This is beta endpoint"})
} else {
c.String(http.StatusNotFound, "404 page not found")
}
})
r.Run(":" + os.Getenv("PORT"))
}
func rateLimitCall(ClientIP string) (error, int) {
ctx := context.Background()
flags := getFeatureFlags()
rateLimitInterface, _ := flags.GetFeatureValue("rate_limit")
RATE_LIMIT := int(rateLimitInterface.(float64))
fmt.Println("Current Rate Limit is", RATE_LIMIT)
res, err := limiter.Allow(ctx, ClientIP, redis_rate.PerHour(RATE_LIMIT))
if err != nil {
panic(err)
}
if res.Remaining == 0 {
return errors.New("You have hit the Rate Limit for the API. Try again later"), 0
}
fmt.Println("remaining request for", ClientIP, "is", res.Remaining)
return nil, res.Remaining
}
func getFeatureFlags() flagsmith.Flags {
ctx := context.Background()
flags, _ := flagsmithClient.GetEnvironmentFlags(ctx)
return flags
}
फ़ीचर फ़्लैग कोड लॉजिक को समझना
func getFeatureFlags() flagsmith.Flags {
ctx := context.Background()
flags, _ := flagsmithClient.GetEnvironmentFlags(ctx)
return flags
}
<पी> सबसे पहले, आइए सीधे नए getFeatureFlags() पर जाएं फ़ंक्शन हमने नीचे बनाया है। यह फ़ंक्शन GetEnvironmentFlags() पर कॉल करके हमारे द्वारा फ़्लैगस्मिथ डैशबोर्ड पर बनाए गए सभी फ़्लैग वापस कर देगा। flagsmithClient पर विधि . <पी> हमने flagsmithClient शुरू किया initClients() के अंदर समारोह. फ़्लैगस्मिथ क्लाइंट को एक्सेस कुंजी (NewClient()) की आवश्यकता है फ़ंक्शन) जिसे हम फ़्लैगस्मिथ डैशबोर्ड से प्राप्त कर सकते हैं। जैसा कि हमने रेडिस और लिम्टर क्लाइंट के लिए किया था, हम पुन:प्रयोज्यता के लिए क्लाइंट को एक वैश्विक चर में संग्रहीत करेंगे। आप बाद के चरणों में डैशबोर्ड, फ़्लैग बनाना और कुंजी पुनर्प्राप्त करना समझेंगे। func rateLimitCall(ClientIP string) (error, int) {
ctx := context.Background()
flags := getFeatureFlags()
rateLimitInterface, _ := flags.GetFeatureValue("rate_limit")
RATE_LIMIT := int(rateLimitInterface.(float64))
fmt.Println("Current Rate Limit is", RATE_LIMIT)
res, err := limiter.Allow(ctx, ClientIP, redis_rate.PerHour(RATE_LIMIT))
if err != nil {
panic(err)
}
if res.Remaining == 0 {
return errors.New("You have hit the Rate Limit for the API. Try again later"), 0
}
fmt.Println("remaining request for", ClientIP, "is", res.Remaining)
return nil, res.Remaining
}
<पी> अब rateLimitCall() पर आते हैं फ़ंक्शन, RATE_LIMIT प्राप्त करने के बजाय पर्यावरण से, हमें rate_limit से मान मिलता है झंडा (जिसे हम बाद में बनाएंगे)। हम getFeatureFlags() पर कॉल करते हैं और ध्वज rate_limit प्राप्त करें सभी झंडों से मूल्य हटा दें। <पी> इन्हें फीचर फ़्लैग के रूप में सेट करके, हम डैशबोर्ड से किसी भी समय सीमा को गतिशील रूप से बदल सकते हैं। हमें कोड की कार्यक्षमता को बदलने या RATE_LIMIT को बदलकर इसे पारंपरिक तरीके से करने की आवश्यकता नहीं है। मान और सर्वर को फिर से चलाना ताकि यह नए अद्यतन मान पकड़ सके। r.GET("/beta", func(c *gin.Context) {
flags := getFeatureFlags()
isEnabled, _ := flags.IsFeatureEnabled("beta")
if isEnabled {
c.JSON(
http.StatusOK,
gin.H{"message": "This is beta endpoint"})
} else {
c.String(http.StatusNotFound, "404 page not found")
}
})
<पी> अब /beta पर आते हैं एंडपॉइंट, बीटा फ़्लैग सक्षम या अक्षम है या नहीं, इसके आधार पर, यह एंडपॉइंट क्वेरी को पूरा करेगा। अन्यथा, यह एक गैर-पहुंच योग्य समापन बिंदु के रूप में कार्य करेगा और 404 त्रुटि संदेश लौटाएगा। <पी> हमारे उदाहरण में, मैंने यह दिखाने के लिए एक बुनियादी प्लेसहोल्डर संदेश जोड़ा है कि यह कैसे काम करेगा, लेकिन यह परीक्षण और प्रारंभिक रिलीज़ (बीटा) में नई संभावनाएं खोलता है। यदि एपीआई में एक नया समापन बिंदु है, तो हम कार्यक्षमता को फीचर ध्वज में लपेट सकते हैं और इसे एक बटन के एक क्लिक से उपलब्ध और अनुपलब्ध बना सकते हैं। इसके अलावा, हम शेड्यूलिंग और कैनरी रिलीज़ जैसे और भी बहुत कुछ कर सकते हैं। <पी> इसके अलावा, हमारा .env फ़ाइल इस तरह दिखेगी. हमने RATE_LIMIT हटा दिया है और FLAGSMITH_ENVIRONMENT_KEY जोड़ा गया . REDIS_URL=localhost:6379
PORT=8080
FLAGSMITH_ENVIRONMENT_KEY=ser.ZRd***********469
फ्लैसस्मिथ डैशबोर्ड में फ़ीचर फ़्लैग कैसे बनाएं
<पी> आइए ऊपर उपयोग किए गए झंडे बनाने और एक्सेस कुंजी प्राप्त करने के लिए फ़्लैगस्मिथ डैशबोर्ड पर जाएं। यदि आपके पास फ़्लैगस्मिथ खाता नहीं है तो आप यहां निःशुल्क साइन अप कर सकते हैं। <पी> साइन अप करने के बाद आपको एक संगठन और एक प्रोजेक्ट बनाने के लिए प्रेरित किया जाएगा। परियोजना पृथक्करण अच्छा है, क्योंकि यह हमें विभिन्न परियोजनाओं के लिए तर्क को अलग करने में मदद करता है। एक बार जब आप काम पूरा कर लेंगे, तो आपको नीचे स्क्रीनशॉट की तरह एक डैशबोर्ड दिखाई देगा। <पी> परिवर्तनों की तुलना करने के लिए एकीकरण से लेकर झंडों को शेड्यूल करने तक हमारे पास ढेर सारी कार्यक्षमताएं हैं। गो के अलावा, फ्लैगस्मिथ कई एसडीके प्रदान करता है। आप उस पर क्लिक कर सकते हैं जहां भाषा का नाम लिखा है और यह आपको उस भाषा के लिए कुछ बॉयलरप्लेट कोड देगा। <पी>
रेट लिमिटिंग फ़ीचर फ़्लैग
<पी> अब, आइए दर सीमा के लिए अपना पहला फ़ीचर फ़्लैग बनाएं। फ़ीचर बनाएं पर क्लिक करें ऊपरी दाएं कोने में बटन. एक साइडबार विंडो खुलेगी. नाम सेट करें, फिर बनाते समय ध्वज को सही दिशा में चालू करने के लिए, हम डिफ़ॉल्ट रूप से सक्षम का चयन कर सकते हैं। पी> <पी> मान अनुभाग में, हमें ध्वज मान सेट करने की आवश्यकता है। यह Txt, JSON, XML इत्यादि जैसे प्रारूप ले सकता है। चूंकि हमारा फीचर मान सरल टेक्स्ट है जैसे 20, 30, इत्यादि, हम Txt (डिफ़ॉल्ट एक) चुनेंगे और एक यादृच्छिक सीमा निर्धारित करेंगे - हम 20 के साथ जाएंगे। . <पी> आप टैग और विवरण भी दे सकते हैं. फ़ीचर फ़्लैग को फ़िल्टर करते समय टैग सहायक हो सकते हैं। उदाहरण के लिए, हम एक टैग backend बना सकते हैं बैकएंड से संबंधित सभी फीचर फ़्लैग को फ़िल्टर करने के लिए। विवरण इस बात का संक्षिप्त विवरण है कि यह विशेष भविष्य का ध्वज सक्षम होने पर क्या करता है (और भविष्य को समझने में मदद करेगा)। <पी> नीचे दिया गया स्क्रीनशॉट दिखाता है कि विवरण भरने के बाद यह कैसा दिखेगा। फिर, फ़ीचर बनाएं पर क्लिक करें झंडा बनाने के लिए बटन. <पी>
बीटा फ़ीचर फ़्लैग
<पी> आइए अब दूसरा, beta बनाएं फ़ीचर ध्वज. यह पहली प्रक्रिया के समान ही होगी, लेकिन इसमें हमें कोई ध्वज मान सेट करने और उस कॉलम को खाली छोड़ने की आवश्यकता नहीं है। एक बार जब हम दोनों झंडे बना लेंगे, तो हमारा डैशबोर्ड इस तरह दिखेगा। यह ध्वज का नाम, मूल्य, वर्तमान स्थिति (देखें) इत्यादि दिखाता है। <पी>
एक्सेस कुंजी प्राप्त करना
<पी> एक्सेस कुंजी प्राप्त करने के लिए, SDK कुंजी पर क्लिक करें साइडबार से, और सर्वर-साइड पर्यावरण कुंजी बनाएं पर क्लिक करें कुंजी उत्पन्न करने के लिए बटन। चूँकि हमारा ऐप सर्वर-साइड है, इसलिए केवल उसी का उपयोग करना अच्छा है। फिर उस कुंजी को कॉपी करके .env में रखे गए मान में पेस्ट करें FLAGSMITH_ENVIRONMENT_KEY के लिए कुंजी. <पी>
एपीआई चला रहा है
<पी> अब सब कुछ सेट हो गया है, तो आइए आईडीई पर वापस जाएं और go run main.go निष्पादित करके सर्वर चलाएं। टर्मिनल में कमांड. हम यह संदेश टर्मिनल में देखेंगे। यदि आपको कोई त्रुटि आती है, तो बस जांच लें कि पैकेज सही ढंग से इंस्टॉल किए गए हैं, वेरिएबल सही ढंग से सेट हैं, और ऐप रेडिस इंस्टेंस तक पहुंचता है। <पी>
<पी> अब यदि हम localhost:8080/ping पर जाते हैं , हमें एक संदेश मिलेगा {"Your left over API request is":19} . सीमा 20 थी, हमने अब एक अनुरोध किया, और शेष 19 है। <पी>
rate_limit को अपडेट किया जा रहा है झंडा
<पी> आइए rate_limit को अपडेट करें मान को 10 पर फ़्लैग करें और देखें क्या होता है। ऐसा करने के लिए, फिर से फ़्लैगस्मिथ डैशबोर्ड पर जाएँ और फ़्लैग नाम पर क्लिक करें। एक साइड मेन्यू बार खुलेगा. मान को 10 पर अपडेट करें, और फ़ीचर मान अपडेट करें पर क्लिक करें बटन. <पी> हम अपडेट शेड्यूल भी कर सकते हैं. उदाहरण के लिए, यह तब उपयोगी हो सकता है जब हम एक निश्चित समय सीमा पर ट्रैफ़िक में बढ़ोतरी की उम्मीद करते हैं और सर्वर लोड को कम करने के लिए प्रति उपयोगकर्ता सीमा कम करते हैं। <पी>
<पी> यदि आप अब localhost:8080/ping पर जाते हैं , आपको एक संदेश मिलेगा {"Your left over API request is":8} - क्योंकि कुल सीमा 10 है और हम पहले ही दो बार अनुरोध कर चुके हैं। <पी>
<पी> आइए अब /beta का परीक्षण करें समापनबिंदु. लोकलहोस्ट:8080/बीटा पर जाएँ, और हमें एक संदेश {"message":"This is beta endpoint"} दिखाई देगा . <पी>
<पी> अब फ़्लैगस्मिथ डैशबोर्ड पर वापस जाएँ और इस फ़्लैग को अक्षम करने के लिए स्विच को टॉगल करें। अब यूआरएल पर जाएं. आपको 404 संदेश मिलेगा जैसे यह समापन बिंदु कभी अस्तित्व में नहीं था। <पी>
<पी> अब जब हमने कार्यक्षमता स्थापित कर ली है और फीचर फ़्लैगिंग क्षमताओं का प्रदर्शन कर लिया है, तो आइए देखें कि हम फ़्लैसगस्मिथ गिटहब ऐप को कैसे एकीकृत कर सकते हैं। GitHub ऐप के साथ फ़ीचर फ़्लैग को कैसे एकीकृत करें
<पी> सबसे पहले, सुनिश्चित करें कि आपने अपना ऐप GitHub पर भेज दिया है। उसके बाद, GitHub मार्केटप्लेस से अपने रेपो पर GitHub Flasgsmith ऐप इंस्टॉल करें। <पी> GitHub और Falagsmith को एकीकृत करके, हम आपके फीचर फ़्लैग/फीचर्स पर अपडेट को GitHub इश्यूज़ और पुल रिक्वेस्ट में टिप्पणियों के रूप में देख सकते हैं। यह हमें किसी समस्या को बनाने से लेकर पीआर को मर्ज करने और परिवर्तनों को तैनात करने तक सुविधाओं को आसानी से ट्रैक करने की अनुमति देता है। <पी>
<पी> फिर अपने संगठन और रिपॉजिटरी का चयन करें जहां आप ऐप इंस्टॉल करना चाहते हैं। आप इसे अपने सभी रिपो पर स्थापित कर सकते हैं या किसी विशेष का चयन कर सकते हैं। <पी> जैसे ही आप इसे इंस्टॉल करते हैं, आपको एकीकरण को कॉन्फ़िगर करने और पूरा करने के लिए फ्लैगमिथ डैशबोर्ड पर स्वचालित रूप से रीडायरेक्ट किया जाएगा। अधिकांश डेटा पहले से भरा हुआ होगा, इसलिए आपको बस एक प्रोजेक्ट चुनना और जोड़ना होगा, और फिर कॉन्फ़िगरेशन सहेजना होगा। <पी>
<पी> एक बार जब आप सहेजें कॉन्फ़िगरेशन बटन दबाते हैं , यह आपको वापस मुख्य फ़्लैगस्मिथ डैशबोर्ड पर रीडायरेक्ट कर देगा जहां हम पहले काम कर रहे थे। <पी> आइए अब मौजूदा फ़्लैग में से एक को GitHub इश्यू/पुल रिक्वेस्ट के साथ लिंक करें (इसका परीक्षण करने के लिए एक डमी पीआर/इश्यू बनाएं), या आप परीक्षण के लिए एक नया फ़्लैग बना सकते हैं। आइए बीटा फ़्लैग के साथ आगे बढ़ें जिसे हमने beta के लिए पहले ही बना लिया है समापन बिंदु. <पी> फ़्लैग को किसी मौजूदा समस्या या पुल अनुरोध के साथ जोड़ने के लिए, फ़्लैग नाम पर क्लिक करें, और दाईं ओर से एक साइड मेनू पॉप अप हो जाएगा। फिर, 'लिंक' टैब चुनें। फिर पुल रिक्वेस्ट विकल्प चुनें, और वह पुल रिक्वेस्ट चुनें जिसे आप लिंक करना चाहते हैं। इस फ़्लैग से जुड़े आपके सभी मुद्दे और पुल अनुरोध नीचे दिखाई दे रहे हैं: <पी>
<पी> यह सत्यापित करने के लिए कि ध्वज सफलतापूर्वक लिंक हो गया है, नाम के नीचे तीर आइकन वाले हाइपरलिंक पर क्लिक करें स्तंभ शीर्षक. यह आपको GitHub पर उस विशेष अंक/पुल अनुरोध पर ले जाएगा। आप देख सकते हैं कि फ़्लैगस्मिथ गिटहब ऐप ने पर्यावरण, सक्षम मूल्य इत्यादि जैसे सभी विवरणों के साथ नीचे टिप्पणी की है। <पी>
फ्लैगस्मिथ GitHub ऐप का परीक्षण
<पी> इसके बाद, जब आप फ़्लैग सेटिंग में कोई बदलाव करते हैं, जैसे फ़्लैग को चालू/बंद करना या मान बदलना, तो बॉट सभी अद्यतन विवरणों के साथ टिप्पणी करेगा। <पी> आइए ध्वज को बंद करके परीक्षण करें। जैसे ही आप डैशबोर्ड से फ़्लैश बंद करते हैं, बॉट को टिप्पणी करनी चाहिए कि ध्वज अब अक्षम कर दिया गया है: <पी>
<पी> बस इतना ही इस तरह फ़्लैगस्मिथ को GitHub के साथ एकीकृत करना आसान है। निष्कर्ष
<पी> संक्षेप में, अब आप जानते हैं कि आप अपने ऐप की कार्यक्षमता को तुरंत बदलने के लिए बैकएंड डेवलपर के रूप में फीचर फ़्लैग का लाभ कैसे उठा सकते हैं। <पी> चीजों को अगले स्तर पर ले जाने के लिए, हमने अपने डेमो ऐप को फ्लैगस्मिथ गिटहब ऐप के साथ एकीकृत किया ताकि यह मैन्युअल रूप से अपडेट किए बिना पुल अनुरोधों/मुद्दों पर हमारे फीचर फ्लैग की स्थिति में बदलाव के साथ अपडेट रह सके। <पी> यहां फ्लैगस्मिथ रेपो देखें और अपना समर्थन दिखाने के लिए इनमें से प्रत्येक प्रोजेक्ट को एक स्टार देना न भूलें। तकनीकी सहायता प्राप्त करने के लिए आप उनके अद्भुत समुदाय में भी शामिल हो सकते हैं। <पी> आप यहां सोशल मीडिया पर मुझसे - प्रदुम्न सराफ से जुड़ सकते हैं। <पी> मुफ़्त में कोड करना सीखें. फ्रीकोडकैंप के ओपन सोर्स पाठ्यक्रम ने 40,000 से अधिक लोगों को डेवलपर्स के रूप में नौकरी पाने में मदद की है। आरंभ करें