Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Ruby

AppSignal पर सिटाडेल आर्किटेक्चर: एकीकृत मोनोलिथ और विशेष आउटपोस्ट

DHH ने अभी "सिटाडेल" शब्द गढ़ा है, जो अंततः हमें AppSignal पर हम टेक से कैसे संपर्क करते हैं, इसका संदर्भ देने का एक उत्कृष्ट तरीका देता है। हमने कहा, "अरे, यह हम हैं! हमारी चीज़ का अब नाम है"।

यह समझाने के लिए कि AppSignal सिटाडेल पैटर्न का उपयोग कैसे करता है, हम इस बारे में थोड़ा साझा करेंगे कि हमारा सिस्टम कैसे काम करता है। AppSignal एक मॉनिटरिंग उत्पाद है जिसमें एक उपयोगकर्ता-सामना करने वाला एप्लिकेशन और एक API है जिसे मॉनिटरिंग एजेंट डेटा भेजता है। इस डेटा को फिर संसाधित किया जाता है और ग्राफ़ और अंतर्दृष्टि में बदल दिया जाता है।

मोनोलिथ

वह एप्लिकेशन जिससे हमारे ग्राहक इंटरैक्ट करते हैं, एक मोनोलिथिक रेल्स ऐप है, जिसके फ्रंट-एंड के कुछ हिस्से React में लिखे गए हैं। बैकएंड पूरी तरह से रूबी में लिखा गया है और कुछ डेटाबेस से बात करता है (हम स्केलिंग कारणों से विभिन्न ग्राहकों के डेटा को अलग-अलग क्लस्टर में विभाजित करते हैं)। यह रेल्स ऐप अलर्ट को बाहरी सेवाओं में भेजने जैसे कई अन्य कार्यों को भी संभालता है।

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

बढ़ते दर्द

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

एक आउटपोस्ट

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

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

यदि आप AppSignal पर Kafka कैसे काम करता है, इसके बारे में अधिक जानना चाहते हैं, तो मैंने इसके बारे में दिए गए Railsconf टॉक को देखें।

सिटाडेल में जीवन

यह हमें वर्तमान स्थिति में लाता है जहां हम अपने सिटाडेल में बहुत खुश हैं। जैसा कि DHH ने कहा:

एक मेजेस्टिक मोनोलिथ ऐप के अधिकांश द्रव्यमान को कुछ सहायक आउटपोस्ट ऐप्स के साथ अत्यधिक विशिष्ट और भिन्न आवश्यकताओं के लिए पकड़ता है।

हमारे मामले में, हमारे अत्यधिक विशिष्ट आवश्यकताओं के लिए एक सिंगल आउटपोस्ट सर्विस है। यदि इस वर्ष RailsConf होता, तो हम DHH को कुछ अतिरिक्त स्ट्रॉपवाफेल्स देते इसके लिए नाम देने की सराहना के रूप में। 🍪


  1. ViewComponent में महारत: पुन: प्रयोज्य Rails व्यू कंपोनेंट बनाने के लिए एक व्यावहारिक गाइड ViewComponent में महारत: पुन: प्रयोज्य Rails व्यू कंपोनेंट बनाने के लिए एक व्यावहारिक गाइड

    React से प्रेरित, ViewComponents Ruby ऑब्जेक्ट्स हैं जिनका उपयोग व्यू रेंडर करने के लिए मार्कअप बनाने के लिए किया जाता है। ViewComponent Rails में पुन: प्रयोज्य, टेस्टेबल, और एनकैप्सुलेटेड व्यू कंपोनेंट बनाने के लिए एक फ्रेमवर्क है। आमतौर पर, पुन: प्रयोज्य व्यू Rails में पार्शियल का उपयोग करके बनाए

  1. Ruby on Rails के लिए पर्यावरण चर में महारत हासिल करें: एक पूर्ण गाइड Ruby on Rails के लिए पर्यावरण चर में महारत हासिल करें: एक पूर्ण गाइड

    यदि आप विकास और प्रोडक्शन में वेब ऐप्स को प्रभावी ढंग से प्रबंधित करना चाहते हैं, तो आपको पर्यावरण चर को समझना होगा। यह हमेशा ऐसा नहीं था। कुछ साल पहले, शायद ही कोई अपने Rails ऐप्स को पर्यावरण चर के साथ कॉन्फ़िगर कर रहा था। लेकिन फिर Heroku हुआ। Heroku ने डेवलपर्स को 12-फैक्टर ऐप दृष्टिकोण से परिचित

  1. इनकॉग्निटो मोड: गोपनीयता के मिथक का भंडाफोड़ इनकॉग्निटो मोड: गोपनीयता के मिथक का भंडाफोड़

    भले ही आप कुछ गलत नहीं कर रहे हैं, आपको देखा और रिकॉर्ड किया जा रहा है - एडवर्ड स्नोडेन सुनो। क्या तुमने नवीनतम टेलर स्विफ्ट वीडियो देखा? एक सुबह मेरे सहयोगी ने पूछा। मैंने उपहास किया और प्रतिक्रिया दी, मैं पॉप संगीत नहीं सुनता। मैं एक क्लासिक रॉक प्रशंसक हूं। लेकिन वह झूठ था। शेक इट ऑफ ने मुझे कई स