इस साइट की सामग्री का अनुवाद कृत्रिम बुद्धिमत्ता (AI) या मशीन अनुवाद तकनीक का उपयोग करके किया गया है, और इसमें त्रुटियाँ हो सकती हैं.

Skip to content

बड़े पैमाने पर प्लेटफ़ॉर्म विश्वसनीयता प्रदान करना

किसी भी स्केलेबल वितरित प्लेटफ़ॉर्म को चलाने के लिए विश्वसनीयता के प्रति प्रतिबद्धता की आवश्यकता होती है, ताकि ग्राहकों को जब उन्हें आवश्यकता हो, तब उन्हें वह सब कुछ मिल सके जिसकी उन्हें ज़रूरत है। निर्भरताएँ काफी जटिल हो सकती हैं, खासकर Roblox जैसे बड़े प्लेटफ़ॉर्म के साथ। विश्वसनीय सेवाएँ बनाना यह सुनिश्चित करता है कि, निर्भरताओं की जटिलता और स्थिति की परवाह किए बिना, कोई भी सेवा बाधित नहीं होगी (यानी अत्यधिक उपलब्ध), त्रुटि-मुक्त (यानी उच्च गुणवत्ता) और बिना त्रुटियों के (यानी दोष सहनशीलता) संचालित होगी।

विश्वसनीयता क्यों मायने रखती है

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

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

CAP प्रमेय के अनुसार, कोई भी वितरित प्रणाली इन तीन पहलुओं में से केवल दो की गारंटी दे सकती है, इसलिए हमारी अनुपालन सेवाएँ अत्यधिक उपलब्ध और विभाजन-प्रतिरोधी होने के लिए कुछ स्थिरता का त्याग करती हैं। फिर भी, हमारी सेवाओं ने बहुत कम त्याग किया और नीचे बताए गए उचित वास्तुशिल्प परिवर्तनों के साथ अच्छी स्थिरता प्राप्त करने के तंत्र खोजे।

उच्च विश्वसनीयता प्राप्त करने की प्रक्रिया पुनरावृत्तिशील है, जिसमें निरंतर काम के साथ सख्त माप का मेल होता है ताकि घटनाएं होने से पहले दोषों को रोकने, खोजने, पता लगाने और ठीक करने में मदद मिल सके। हमारी टीम ने निम्नलिखित प्रथाओं में महत्वपूर्ण मूल्य की पहचान की:

  • सही माप - इस बात के चारों ओर पूर्ण अवलोकन क्षमता का निर्माण करें कि गुणवत्ता ग्राहकों को कैसे प्रदान की जाती है और निर्भरताएँ हमें गुणवत्ता कैसे प्रदान करती हैं।
  • सक्रिय पूर्वानुमान - वास्तुशिल्प समीक्षा और निर्भरता जोखिम मूल्यांकन जैसी गतिविधियाँ करें।
  • सुधार को प्राथमिकता दें - हमारी सेवा से जुड़ी सेवाओं और निर्भरताओं के लिए घटना रिपोर्ट के समाधान पर अधिक ध्यान दें।

उच्च विश्वसनीयता का निर्माण गुणवत्ता की संस्कृति की मांग करता है। हमारी टीम पहले से ही प्रदर्शन-संचालित विकास में निवेश कर रही थी और जानती है कि किसी प्रक्रिया की सफलता उसके अपनाए जाने पर निर्भर करती है। टीम ने इस प्रक्रिया को पूरी तरह से अपनाया और इन प्रथाओं को एक मानक के रूप में लागू किया। निम्नलिखित आरेख इस प्रक्रिया के घटकों को दर्शाता है:

सही माप की शक्ति

मेट्रिक्स में और गहराई से जाने से पहले, सेवा स्तर मापों के संबंध में एक त्वरित स्पष्टीकरण देना आवश्यक है।

  • SLO (सर्विस लेवल ऑब्जेक्टिव) वह विश्वसनीयता लक्ष्य है जिसके लिए हमारी टीम प्रयास करती है (यानी 99.999%)।
  • SLI (सर्विस लेवल इंडिकेटर) किसी निर्धारित समय-सीमा के लिए प्राप्त विश्वसनीयता है (जैसे कि पिछले फरवरी में 99.975%)।
  • SLA (सर्विस लेवल एग्रीमेंट) वह विश्वसनीयता है जिसे एक निर्दिष्ट समय-सीमा में प्रदान करने और हमारे उपभोक्ताओं द्वारा अपेक्षित करने पर सहमति बनी है (जैसे कि एक सप्ताह में 99.99%)।

SLI में उपलब्धता (कोई अनसुलझा या अनुपस्थित प्रतिक्रिया नहीं), विफलता सहनशीलता (कोई सेवा त्रुटि नहीं) और प्राप्त गुणवत्ता (कोई अप्रत्याशित त्रुटि नहीं) को दर्शाया जाना चाहिए। इसलिए, हमने अपनी SLI को किसी सेवा को भेजे गए कुल अनुरोधों की तुलना में सफल प्रतिक्रियाओं के "सफलता अनुपात" के रूप में परिभाषित किया है। सफल प्रतिक्रियाएं वे अनुरोध हैं जो समय पर और सही रूप में भेजे गए थे, जिसका अर्थ है कि कोई कनेक्टिविटी, सेवा या अप्रत्याशित त्रुटि नहीं हुई।

यह एसएलआई या सफलता अनुपात उपभोक्ताओं के दृष्टिकोण से (यानी, क्लाइंट्स) एकत्र किया जाता है। इसका उद्देश्य हमारे उपभोक्ताओं को प्रदान किए गए वास्तविक एंड-टू-एंड अनुभव को मापना है ताकि हमें विश्वास हो कि एसएलए पूरे हो रहे हैं। ऐसा न करने पर विश्वसनीयता की एक झूठी भावना पैदा होगी जो हमारे क्लाइंट्स से जुड़ने से संबंधित सभी बुनियादी ढांचे की चिंताओं को अनदेखा कर देगी। उपभोक्ता एसएलआई की तरह ही, हम किसी भी संभावित जोखिम को ट्रैक करने के लिए निर्भरता एसएलआई एकत्र करते हैं। व्यावहारिक रूप से, सभी डिपेंडेंसी SLAs को सर्विस SLA के साथ संरेखित होना चाहिए और उन पर एक सीधी निर्भरता होती है। एक की विफलता सभी की विफलता को दर्शाती है। हम स्वयं सेवा (यानी, सर्वर) से भी मेट्रिक्स को ट्रैक और रिपोर्ट करते हैं, लेकिन यह उच्च विश्वसनीयता का व्यावहारिक स्रोत नहीं है।

SLI के अलावा, हर बिल्ड गुणवत्ता मेट्रिक्स एकत्र करता है जिन्हें हमारे CI वर्कफ़्लो द्वारा रिपोर्ट किया जाता है। यह अभ्यास गुणवत्ता गेट (यानी, कोड कवरेज) को मजबूती से लागू करने और अन्य सार्थक मेट्रिक्स, जैसे कि कोडिंग मानक अनुपालन और स्टैटिक कोड विश्लेषण, को रिपोर्ट करने में मदद करता है। इस विषय को पहले एक अन्य लेख, 'परफॉर्मेंस द्वारा संचालित माइक्रोसर्विसेज का निर्माण' (Building Microservices Driven by Performance) में शामिल किया गया था। विश्वसनीयता की बात करें तो गुणवत्ता पर सावधानीपूर्वक ध्यान देना महत्वपूर्ण हो जाता है, क्योंकि हम उत्कृष्ट स्कोर प्राप्त करने में जितना अधिक निवेश करते हैं, हमें उतना ही अधिक विश्वास होता है कि प्रतिकूल परिस्थितियों में सिस्टम विफल नहीं होगा।

हमारी टीम के पास दो डैशबोर्ड हैं। एक कंज्यूमर्स SLI और डिपेंडेंसीज़ SLI दोनों में पूरी दृश्यता प्रदान करता है। दूसरा सभी गुणवत्ता मेट्रिक्स दिखाता है। हम सब कुछ एक ही डैशबोर्ड में मर्ज करने पर काम कर रहे हैं, ताकि जिन सभी पहलुओं की हम परवाह करते हैं, वे एकत्रित हो जाएं और किसी भी निर्धारित समय-सीमा के भीतर रिपोर्ट करने के लिए तैयार रहें।

विफलता की आशंका

आर्किटेक्चरल रिव्यू करना विश्वसनीय होने का एक मौलिक हिस्सा है। सबसे पहले, हम यह निर्धारित करते हैं कि क्या रिडंडेंसी मौजूद है और यदि निर्भरताएँ बंद हो जाती हैं तो क्या सेवा के जीवित रहने का कोई साधन है। सामान्य प्रतिकृति (replication) विचारों से परे, हमारी अधिकांश सेवाओं ने बेहतर डुअल कैश हाइड्रेशन तकनीकें, डुअल रिकवरी रणनीतियाँ (जैसे फेलओवर लोकल कतारें), या डेटा हानि रणनीतियाँ (जैसे लेनदेन संबंधी सहायता) लागू की हैं। ये विषय इतने व्यापक हैं कि एक और ब्लॉग प्रविष्टि की आवश्यकता बनती है, लेकिन अंततः सबसे अच्छी सिफारिश यह है कि ऐसे विचारों को लागू किया जाए जो आपदा के परिदृश्यों पर विचार करें और किसी भी प्रदर्शन दंड को कम से कम करें।

एक और महत्वपूर्ण पहलू जिसकी भविष्यवाणी की जा सकती है, वह है कोई भी ऐसी चीज़ जो कनेक्टिविटी में सुधार कर सकती है। इसका मतलब है ग्राहकों के लिए कम विलंबता (low latency) के प्रति आक्रामक होना और उन्हें कैश-कंट्रोल तकनीकों, साइडकार और टाइमआउट, सर्किट ब्रेकर और पुनः प्रयासों के लिए कुशल नीतियों का उपयोग करके बहुत अधिक ट्रैफ़िक के लिए तैयार करना। ये प्रथाएँ HTTP और gRPC में कैश, स्टोर, कतारों और परस्पर निर्भर क्लाइंट्स सहित किसी भी क्लाइंट पर लागू होती हैं। इसका यह भी मतलब है कि सेवाओं से स्वस्थ संकेतों को बेहतर बनाना और यह समझना कि सभी कंटेनर ऑर्केस्ट्रेशन में हेल्थ चेक एक महत्वपूर्ण भूमिका निभाते हैं। हमारी अधिकांश सेवाएँ हेल्थ चेक फीडबैक के हिस्से के रूप में क्षरण के लिए बेहतर संकेत देती हैं और स्वस्थ संकेत भेजने से पहले सभी महत्वपूर्ण घटकों के कार्यात्मक होने की पुष्टि करती हैं।

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

डिपेंडेंसी जोखिम मूल्यांकन, डिपेंडेंसी से जुड़ी संभावित समस्याओं की पहचान करने का एक महत्वपूर्ण उपकरण है। इसका मतलब है कि हम कम SLI वाली डिपेंडेंसी की पहचान करते हैं और SLA संरेखण के लिए कहते हैं। उन डिपेंडेंसी पर एकीकरण चरणों के दौरान विशेष ध्यान देने की आवश्यकता होती है, इसलिए हम यह जांचने के लिए अतिरिक्त समय देते हैं कि क्या नई डिपेंडेंसी हमारी योजनाओं के लिए पर्याप्त परिपक्व हैं। इसका एक अच्छा उदाहरण Roblox स्टोरेज-एज़-ए-सर्विस के लिए हमारा प्रारंभिक अपनाना है। इस सेवा के साथ एकीकरण के लिए बग टिकट दर्ज करने और निष्कर्षों तथा प्रतिक्रिया को संप्रेषित करने के लिए आवधिक सिंक बैठकों की आवश्यकता थी। यह सारा काम "विश्वसनीयता" टैग का उपयोग करता है ताकि हम इसके स्रोत और प्राथमिकताओं को जल्दी से पहचान सकें। जब तक हमें यह विश्वास नहीं हो गया कि नई निर्भरता हमारे लिए तैयार है, तब तक विशेषण (characterization) अक्सर होता रहा। इस अतिरिक्त काम ने उस निर्भरता को उस आवश्यक विश्वसनीयता के स्तर पर लाने में मदद की जिसकी हम एक सामान्य लक्ष्य के लिए मिलकर काम करते हुए उम्मीद करते हैं।

अराजकता में संरचना लाएँ

घटनाएँ होना कभी भी वांछनीय नहीं होता है। लेकिन जब वे होती हैं, तो अधिक विश्वसनीय होने के लिए उनसे एकत्रित करने और सीखने के लिए सार्थक जानकारी होती है। हमारी टीम के पास एक टीम घटना रिपोर्ट है जो सामान्य कंपनी-व्यापी रिपोर्ट के अलावा बनाई जाती है, इसलिए हम उनके प्रभाव के पैमाने की परवाह किए बिना सभी घटनाओं पर ध्यान केंद्रित करते हैं। हम मूल कारण का पता लगाते हैं और भविष्य में इसे कम करने के लिए सभी कार्यों को प्राथमिकता देते हैं। इस रिपोर्ट के हिस्से के रूप में, हम अन्य टीमों को उच्च प्राथमिकता के साथ निर्भरता घटनाओं को ठीक करने के लिए बुलाते हैं, उचित समाधान के साथ अनुवर्ती कार्रवाई करते हैं, पुनरावलोकन करते हैं और ऐसे पैटर्न खोजते हैं जो हम पर लागू हो सकते हैं।

टीम प्रत्येक सेवा के लिए एक मासिक विश्वसनीयता रिपोर्ट तैयार करती है जिसमें यहां बताए गए सभी एसएलआई (SLI), विश्वसनीयता के कारण हमारे द्वारा खोले गए कोई भी टिकट और सेवा से संबंधित कोई भी संभावित घटनाएं शामिल होती हैं। हम इन रिपोर्टों को तैयार करने के इतने आदी हो गए हैं कि अगला स्वाभाविक कदम इनके निष्कर्षण को स्वचालित करना है। इस आवधिक गतिविधि को करना महत्वपूर्ण है, और यह एक अनुस्मारक है कि विश्वसनीयता को हमारे विकास में लगातार ट्रैक और ध्यान में रखा जा रहा है।

हमारे इंस्ट्रूमेंटेशन में कस्टम मेट्रिक्स और बेहतर अलर्ट शामिल हैं ताकि ज्ञात और अपेक्षित समस्याओं के होने पर हमें जल्द से जल्द पेज किया जा सके। सभी अलर्ट, फर्जी सकारात्मक (false positives) सहित, हर हफ्ते समीक्षा किए जाते हैं। इस बिंदु पर, सभी दस्तावेज़ों को अंतिम रूप देना महत्वपूर्ण है ताकि हमारे उपभोक्ता जान सकें कि अलर्ट ट्रिगर होने पर और त्रुटियां होने पर क्या उम्मीद करनी है, और फिर हर कोई जानता है कि क्या करना है (उदाहरण के लिए, प्लेबुक और एकीकरण दिशानिर्देश संरेखित और अक्सर अपडेट किए जाते हैं)।

अंततः, हमारी संस्कृति में गुणवत्ता को अपनाना उच्च विश्वसनीयता तक पहुँचने में सबसे महत्वपूर्ण और निर्णायक कारक है। हम देख सकते हैं कि हमारे दिन-प्रतिदिन के काम में लागू की गई ये प्रथाएँ पहले से ही लाभदायक साबित हो रही हैं। हमारी टीम विश्वसनीयता को लेकर जुनूनी है और यह हमारी सबसे महत्वपूर्ण उपलब्धि है। हमने संभावित दोषों के प्रभाव और उनके उत्पन्न होने की संभावना के प्रति अपनी जागरूकता बढ़ाई है। इन प्रथाओं को लागू करने वाली सेवाओं ने लगातार अपने SLO और SLA को पूरा किया है। विश्वसनीयता की रिपोर्टें, जो हमारे द्वारा किए जा रहे सभी कामों को ट्रैक करने में हमारी मदद करती हैं, हमारी टीम द्वारा किए गए काम का प्रमाण हैं, और अन्य टीमों को सूचित करने और प्रभावित करने के लिए अमूल्य सबक के रूप में काम करती हैं। इस तरह विश्वसनीयता की संस्कृति हमारे प्लेटफ़ॉर्म के सभी घटकों को प्रभावित करती है।

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

अल्बर्टो रोब्लॉक्स में अकाउंट आईडी टीम के एक प्रिंसिपल सॉफ्टवेयर इंजीनियर हैं। वह गेम उद्योग में लंबे समय से हैं, और कई AAA गेम टाइटल्स और सोशल मीडिया प्लेटफॉर्म पर उनका काम रहा है, जिनका ध्यान अत्यधिक स्केलेबल आर्किटेक्चर पर रहा है। अब वह सर्वोत्तम विकास प्रथाओं को लागू करके रोब्लॉक्स को विकास और परिपक्वता तक पहुँचने में मदद कर रहे हैं।