या साइटवरील सामग्री कृत्रिम बुद्धिमत्ता (AI) किंवा मशीन भाषांतर तंत्रज्ञानाचा वापर करून भाषांतरित केली आहे आणि त्यात त्रुटी असू शकतात.

Skip to content

मोठ्या प्रमाणावर प्लॅटफॉर्म विश्वसनीयता प्रदान करणे

कोणताही स्केलेबल वितरित प्लॅटफॉर्म चालवताना विश्वसनीयतेबद्दल बांधिलकी आवश्यक असते, जेणेकरून ग्राहकांना जेव्हा आवश्यक असेल तेव्हा ते मिळेल. आश्रितता खूपच गुंतागुंतीची असू शकतात, विशेषतः Roblox सारख्या मोठ्या प्लॅटफॉर्मवर. विश्वासार्ह सेवा तयार करणे म्हणजे आश्रिततांच्या गुंतागुंती आणि स्थितीची पर्वा न करता कोणतीही सेवा अखंडपणे उपलब्ध (उच्च उपलब्धता), बग-मुक्त (उच्च गुणवत्ता) आणि त्रुटींशिवाय (दोष सहनशीलता) कार्य करेल.

विश्वसनीयता का महत्त्वाची आहे

आमची अकाउंट आयडेंटिटी टीम उच्च विश्वसनीयता गाठण्यासाठी कटिबद्ध आहे, कारण आम्ही तयार केलेल्या अनुपालन सेवा प्लॅटफॉर्मचे मुख्य घटक आहेत. अनुपालन बिघडल्यास गंभीर परिणाम होऊ शकतात. Roblox च्या नैसर्गिक कार्यात अडथळा आणण्याचा खर्च खूप जास्त असतो, कारण अपयशानंतर पुनर्प्राप्तीसाठी अतिरिक्त संसाधने लागतात आणि वापरकर्त्याचा अनुभवही कमजोर होतो.

विश्वसनीयतेसाठीचा सामान्य दृष्टिकोन मुख्यत्वे उपलब्धतेवर केंद्रित असतो, परंतु काही प्रकरणांमध्ये या संज्ञा गोंधळून किंवा चुकीच्या अर्थाने वापरल्या जातात. उपलब्धतेच्या बहुतेक मापनांमध्ये फक्त सेवा चालू आहेत की नाही हे तपासले जाते, तर विभाजन सहनशीलता (partition tolerance) आणि सुसंगतता (consistency) यांसारख्या पैलूंना कधी कधी विसरले जाते किंवा चुकीच्या अर्थाने समजले जाते. 

CAP प्रमेयानुसार, कोणतीही वितरित प्रणाली या तीन पैलूंपैकी फक्त दोन पैलूंची हमी देऊ शकते, त्यामुळे आमच्या अनुपालन सेवा उच्च उपलब्धता आणि विभाजन-सहनशीलता राखण्यासाठी काही सुसंगतता त्याग करतात. तथापि, आमच्या सेवांनी फारसा त्याग केला नाही आणि खाली स्पष्ट केलेल्या वाजवी वास्तुशिल्पीय बदलांसह चांगली सुसंगतता साध्य करण्यासाठी यंत्रणा शोधल्या आहेत.

उच्च विश्वासार्हता प्राप्त करण्याची प्रक्रिया पुनरावृत्ती करणारी आहे, ज्यात कडक मोजमाप सातत्यपूर्ण कामाशी जुळवून घेतले जाते, जेणेकरून अपघात घडण्यापूर्वी दोष प्रतिबंधित, शोधले, ओळखले आणि दुरुस्त केले जाऊ शकतील. आमच्या टीमने खालील पद्धतींमध्ये मोठे मूल्य ओळखले:

  • योग्य मापन - ग्राहकांना गुणवत्ता कशी वितरित केली जाते आणि अवलंबित्व आम्हाला गुणवत्ता कशी पुरवतात याबाबत पूर्ण दृश्यमानता निर्माण करणे.
  • सक्रिय पूर्वानुमान - आर्किटेक्चरल पुनरावलोकने आणि अवलंबित्वाच्या जोखमीचे मूल्यमापन यांसारख्या क्रियाकलाप पार पाडा.
  • दुरुस्तीला प्राधान्य द्या - आमच्या सेवेशी आणि तिच्या अवलंबित्वांशी संबंधित घटना अहवालांच्या निराकरणावर अधिक लक्ष केंद्रित करा.

उच्च विश्वसनीयता निर्माण करण्यासाठी गुणवत्तेची संस्कृती आवश्यक आहे. आमची टीम आधीच कार्यक्षमता-चालित विकासात गुंतवणूक करत होती आणि जाणते की प्रक्रियेची यशस्वीता तिच्या अवलंबनावर अवलंबून असते. टीमने ही प्रक्रिया पूर्णपणे स्वीकारली आणि या पद्धतींना मानक म्हणून लागू केले. खालील आकृतीत या प्रक्रियेतील घटक दाखवले आहेत:

योग्य मापनाची शक्ती

मेट्रिक्समध्ये अधिक खोलवर जाण्यापूर्वी, सेवा स्तर मापनांबाबत एक त्वरित स्पष्टीकरण देणे आवश्यक आहे.

  • SLO (Service Level Objective) ही आमच्या टीमने लक्ष्य केलेली विश्वसनीयता आहे (उदा. 99.999%).
  • SLI (Service Level Indicator) म्हणजे ठराविक कालावधीसाठी साध्य केलेली विश्वसनीयता (उदा. मागील फेब्रुवारीत 99.975%).
  • SLA (Service Level Agreement) म्हणजे ठराविक कालावधीत आमच्या ग्राहकांना पुरवण्याची आणि त्यांच्याकडून अपेक्षित असलेली विश्वसनीयता (उदा. आठवड्याला 99.99%).

SLI मध्ये उपलब्धता (कोणतीही अनपेक्षित किंवा हरवलेली प्रतिसाद नसावी), अपयश सहनशक्ती (कोणतीही सेवा त्रुटी नसावी) आणि प्राप्त गुणवत्ता (कोणतीही अनपेक्षित त्रुटी नसावी) यांचा प्रतिबिंब दिसला पाहिजे. म्हणून, आम्ही आमचे SLI सेवा पाठवलेल्या एकूण विनंत्यांपैकी यशस्वी प्रतिसादांचे "यश गुणोत्तर" म्हणून परिभाषित केले आहे. यशस्वी प्रतिसाद म्हणजे वेळेत आणि योग्य स्वरूपात पाठवलेल्या विनंत्या, म्हणजेच कोणतीही कनेक्टिव्हिटी, सेवा किंवा अनपेक्षित त्रुटी घडलेली नाहीत.

हा SLI किंवा यशस्वी प्रमाण ग्राहकांच्या दृष्टीकोनातून (उदा. क्लायंट्स) गोळा केला जातो. याचा उद्देश म्हणजे आमच्या ग्राहकांना प्रत्यक्ष प्रदान केलेला संपूर्ण अनुभव मोजणे, ज्यामुळे आम्हाला खात्री होते की SLA पूर्ण होत आहेत. असे न केल्यास आमच्या क्लायंट्सशी कनेक्ट होण्यासाठी लागणाऱ्या सर्व पायाभूत सुविधांच्या समस्यांकडे दुर्लक्ष करून विश्वासार्हतेची खोटी भावना निर्माण होईल. ग्राहक SLI प्रमाणेच, संभाव्य धोके ओळखण्यासाठी आम्ही अवलंबित्वाचे SLI देखील गोळा करतो. वास्तविक, सर्व अवलंबित्व SLA सेवा SLA शी सुसंगत असावीत आणि त्यांच्याशी थेट अवलंबित्व असते. एखाद्याच्या अपयशाचा अर्थ सर्वांचे अपयश होय. आम्ही सेवेकडून (उदा. सर्व्हर) मेट्रिक्स ट्रॅक आणि रिपोर्ट करतो, परंतु हा उच्च विश्वासार्हतेचा व्यावहारिक स्रोत नाही.

SLI व्यतिरिक्त, प्रत्येक बिल्ड गुणवत्ता मेट्रिक्स गोळा करते जी आमच्या CI वर्कफ्लोद्वारे अहवालित केली जातात. ही पद्धत गुणवत्ता गेट्स (उदा., कोड कव्हरेज) कडे कडकपणे अंमलात आणण्यास आणि कोडिंग मानक अनुपालन आणि स्टॅटिक कोड विश्लेषण यांसारख्या इतर अर्थपूर्ण मेट्रिक्स अहवालित करण्यास मदत करते. हा विषय यापूर्वी 'परफॉर्मन्सद्वारे प्रेरित मायक्रोसर्व्हिसेस तयार करणे' या दुसऱ्या लेखात समाविष्ट केला गेला होता. विश्वसनीयतेच्या बाबतीत गुणवत्तेकडे काटेकोर लक्ष देणे महत्त्वाचे ठरते, कारण उत्कृष्ट गुण मिळवण्यासाठी आपण जितके अधिक प्रयत्न करतो, तितकीच आपल्याला खात्री होते की प्रतिकूल परिस्थितीतही सिस्टम अपयशी ठरणार नाही.

आमच्या टीमकडे दोन डॅशबोर्ड आहेत. एक कंझ्युमर्स SLI आणि डिपेंडन्सीज SLI या दोन्हींची संपूर्ण दृश्यमानता प्रदान करतो. दुसरा सर्व गुणवत्ता मेट्रिक्स दाखवतो. आम्ही सर्वकाही एकाच डॅशबोर्डमध्ये विलीन करण्यावर काम करत आहोत, जेणेकरून आम्हाला महत्त्वाचे असलेले सर्व पैलू एकत्रित होतील आणि कोणत्याही ठराविक कालावधीत अहवाल देण्यासाठी तयार असतील.

अपयशाची अपेक्षा करा

आर्किटेक्चरल रिव्ह्यू करणे हे विश्वासार्हतेचा एक मूलभूत भाग आहे. प्रथम, आम्ही निर्धारित करतो की पुनरावृत्ती (redundancy) उपस्थित आहे का आणि सेवा अवलंबितांना (dependencies) अडचणीत आल्यास टिकून राहण्यासाठी आवश्यक साधने आहेत का. सामान्य पुनरावृत्ती (replication) कल्पनांपलीकडे, आमच्या बहुतेक सेवांनी सुधारित द्वि-कॅश हायड्रेशन तंत्र, दुहेरी पुनर्प्राप्ती धोरणे (जसे की फेलओव्हर स्थानिक क्यूज), किंवा डेटा गमावण्याच्या धोरणांचा (जसे की व्यवहार-आधारित समर्थन) अवलंब केला आहे. हे विषय इतके विस्तृत आहेत की त्यावर स्वतंत्र ब्लॉग पोस्ट लिहिता येईल, परंतु शेवटी सर्वोत्तम शिफारस म्हणजे आपत्तीच्या परिस्थितींचा विचार करणाऱ्या कल्पना अंमलात आणणे आणि कोणतीही कार्यक्षमता दंड कमीतकमी ठेवणे.

अपेक्षित ठेवण्याचा आणखी एक महत्त्वाचा पैलू म्हणजे कनेक्टिव्हिटी सुधारू शकणारी कोणतीही गोष्ट. याचा अर्थ क्लायंटसाठी कमी विलंब (latency) बाबत आक्रमक राहणे आणि कॅश-कंट्रोल तंत्र, साइडकार आणि टाइमआउट, सर्किट ब्रेकर आणि पुनःप्रयत्नांसाठी कार्यक्षम धोरणे वापरून त्यांना अत्यंत उच्च ट्रॅफिकसाठी तयार करणे होय. ही पद्धत कॅशे, स्टोअर्स, क्यू आणि HTTP व gRPC मधील परस्पर अवलंबून असलेल्या क्लायंट्ससह कोणत्याही क्लायंटला लागू होते. याचा अर्थ सेवांमधून येणाऱ्या निरोगी सिग्नलमध्ये सुधारणा करणे आणि हे समजून घेणे की सर्व कंटेनर ऑर्केस्ट्रेशनमध्ये हेल्थ चेक्सची महत्त्वाची भूमिका असते. आमच्या बहुतेक सेवा हेल्थ चेक फीडबॅकच्या भाग म्हणून डिटोरेशनसाठी चांगले सिग्नल देतात आणि निरोगी सिग्नल पाठवण्यापूर्वी सर्व महत्त्वाचे घटक कार्यरत आहेत की नाहीत हे सत्यापित करतात.

सेवांना महत्वाच्या (critical) आणि अ-महत्वाच्या (non-critical) भागांमध्ये विभाजित करणे सर्वात महत्त्वाच्या कार्यक्षमतेवर लक्ष केंद्रित करण्यासाठी उपयुक्त ठरले आहे. पूर्वी आमच्याकडे एकाच सेवेत फक्त प्रशासकांसाठी (admin-only) एंडपॉइंट्स होते, आणि जरी त्यांचा वापर फारसा होत नसला तरीही त्यांचा एकूण विलंबता (latency) मेट्रिक्सवर परिणाम होत होता. त्यांना स्वतंत्र सेवेत हलविल्याने प्रत्येक मेट्रिकवर सकारात्मक परिणाम झाला.

डिपेंडन्सी रिस्क असेसमेंट हे डिपेंडन्सींमधील संभाव्य समस्या ओळखण्यासाठी एक महत्त्वाचे साधन आहे. याचा अर्थ असा की आम्ही कमी SLI असलेल्या डिपेंडन्सींची ओळख करतो आणि SLA संरेखनासाठी विनंती करतो. एकत्रीकरण टप्प्यांदरम्यान अशा डिपेंडन्सींकडे विशेष लक्ष देणे आवश्यक असते, त्यामुळे आम्ही नवीन डिपेंडन्सी आमच्या योजनांसाठी पुरेशी परिपक्व आहेत का हे तपासण्यासाठी बेंचमार्क आणि चाचणी करण्यासाठी अतिरिक्त वेळ देतो. याचे एक चांगले उदाहरण म्हणजे Roblox Storage-as-a-Service साठी आम्ही केलेली प्रारंभिक स्वीकारणी. या सेवेच्या एकत्रीकरणासाठी बग तिकीट दाखल करणे आणि निष्कर्ष व अभिप्राय देण्यासाठी नियमित समक्रमण बैठका घेणे आवश्यक होते. हे सर्व काम "reliability" टॅग वापरून केले जाते, ज्यामुळे आम्ही त्याचा स्रोत आणि प्राधान्यक्रम पटकन ओळखू शकतो. नवीन अवलंबित्व आमच्यासाठी तयार आहे याचा आत्मविश्वास येईपर्यंत वैशिष्ट्यनिर्धारण वारंवार केले गेले. या अतिरिक्त कामामुळे सामाईक उद्दिष्टासाठी एकत्र काम करताना अपेक्षित विश्वसनीयतेच्या पातळीवर अवलंबित्व आणण्यासाठी मदत झाली.

गोंधळात रचना आणा

अपघात होणे कधीही चांगले नसते. परंतु जेव्हा ते घडतात, तेव्हा अधिक विश्वासार्ह होण्यासाठी गोळा करण्यासाठी आणि शिकण्यासाठी अर्थपूर्ण माहिती असते. आमच्या टीमकडे कंपनी-व्यापी सामान्य अहवालापेक्षा वेगळा, स्वतंत्र टीम अपघात अहवाल असतो, त्यामुळे आम्ही त्यांच्या परिणामाच्या प्रमाणाची पर्वा न करता सर्व अपघातांवर लक्ष केंद्रित करतो. आम्ही मूळ कारण ओळखतो आणि भविष्यात त्यावर उपाय करण्यासाठी सर्व कामांना प्राधान्य देतो. या अहवालाचा एक भाग म्हणून, आम्ही इतर संघांना उच्च प्राधान्याने अवलंबित्व घटना दुरुस्त करण्यासाठी बोलावतो, योग्य तो निराकरण करतात, पुनरावलोकन करतात आणि आमच्यासाठी लागू होऊ शकणारे नमुने शोधतात.

संघ प्रत्येक सेवेसाठी मासिक विश्वसनीयता अहवाल तयार करतो ज्यात येथे स्पष्ट केलेले सर्व SLI, विश्वसनीयतेमुळे उघडलेल्या कोणत्याही तिकिटांचा आणि सेवेशी संबंधित कोणत्याही संभाव्य घटनांचा समावेश असतो. आम्ही हे अहवाल तयार करण्यास इतके सवयीचे झालो आहोत की त्यांचा निष्कर्ष काढणे स्वयंचलित करणे हा पुढील नैसर्गिक टप्पा आहे. ही आवर्ती क्रिया करणे महत्त्वाचे आहे, आणि हे एक स्मरणपत्र आहे की आमच्या विकासात विश्वसनीयतेवर सातत्याने लक्ष ठेवले जाते आणि त्याचा विचार केला जातो.

आमच्या साधनांमध्ये सानुकूल मेट्रिक्स आणि सुधारित अलर्ट्सचा समावेश आहे, ज्यामुळे ज्ञात आणि अपेक्षित समस्या उद्भवल्यास आम्हाला शक्य तितक्या लवकर सूचना मिळतात. सर्व अलर्ट्स, ज्यात खोटे सकारात्मक अलर्ट्सही (false positives) समाविष्ट आहेत, दर आठवड्याला पुनरावलोकन केल्या जातात. या टप्प्यावर सर्व दस्तऐवजीकरण नीटनेटके करणे महत्त्वाचे आहे, जेणेकरून आमच्या वापरकर्त्यांना अलर्ट्स ट्रिगर झाल्यावर आणि त्रुटी आढळल्यावर काय अपेक्षा करायची ते कळेल आणि त्यानंतर प्रत्येकाला काय करायचे ते माहीत असेल (उदा. प्लेबुक आणि एकत्रीकरण मार्गदर्शक तत्त्वे सुसंगत ठेवून वारंवार अद्ययावत केली जातात).

शेवटी, आमच्या संस्कृतीत गुणवत्तेचा अवलंब करणे हे उच्च विश्वासार्हता प्राप्त करण्यासाठी सर्वात महत्त्वाचे आणि निर्णायक घटक आहे. आपण पाहू शकतो की आमच्या दैनंदिन कामात लागू केलेल्या या पद्धतींना आधीच चांगले परिणाम मिळत आहेत. आमच्या टीमला विश्वसनीयतेची वेड आहे आणि हीच आमची सर्वात महत्त्वाची कामगिरी आहे. संभाव्य त्रुटींचा काय परिणाम होऊ शकतो आणि त्या कधी उद्भवू शकतात, याबद्दलची आमची जाणीव वाढली आहे. या पद्धती अमलात आणलेल्या सेवांनी सातत्याने त्यांच्या SLO आणि SLA गाठल्या आहेत. आम्ही करत असलेल्या सर्व कामाचा मागोवा घेण्यास मदत करणारे विश्वसनीयतेचे अहवाल आमच्या टीमने केलेल्या कामाचे साक्ष आहेत, आणि इतर टीमना माहिती देण्यासाठी व प्रभावित करण्यासाठी अमूल्य धडे म्हणून काम करतात. अशा प्रकारे विश्वसनीयतेची संस्कृती आमच्या प्लॅटफॉर्मच्या सर्व घटकांना स्पर्श करते.

उच्च विश्वासार्हतेकडे जाणारा मार्ग सोपा नाही, परंतु जर तुम्हाला लोकांना एकत्र येण्याच्या पद्धतीची पुनर्कल्पना करणारा एक विश्वासार्ह प्लॅटफॉर्म तयार करायचा असेल तर तो आवश्यक आहे.

अल्बर्टो हे Roblox येथील अकाउंट आयडेंटिटी टीममधील प्रिन्सिपल सॉफ्टवेअर इंजिनिअर आहेत. ते गेम उद्योगात बराच काळ आहेत, आणि अनेक AAA गेम शीर्षके व अत्यंत स्केलेबल आर्किटेक्चरवर विशेष भर देणाऱ्या सोशल मीडिया प्लॅटफॉर्मवर त्यांचे नाव आहे. आता ते सर्वोत्तम विकास पद्धती लागू करून Roblox ला वाढ व प्रगल्भता गाठण्यात मदत करत आहेत.