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

AppSignal पर गढ़ वास्तुकला

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

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

मोनोलिथ

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

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

बढ़ता दर्द

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

एक चौकी

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

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

यदि आप इस बारे में अधिक जानना चाहते हैं कि ऐपसिग्नल में काफ्का कैसे काम करता है, तो मैंने इस बारे में दी गई रेल्सकॉन्फ वार्ता देखें।

गढ़ में जीवन

यह हमें वर्तमान स्थिति में लाता है जहां हम अपने गढ़ में बहुत खुश हैं। जैसा कि डीएचएच ने कहा:

<ब्लॉककोट>

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

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


  1. ViewComponent Gem का परिचय

    रिएक्ट से प्रेरित, ViewComponents रूबी ऑब्जेक्ट हैं जिनका उपयोग दृश्य प्रस्तुत करने के लिए मार्कअप बनाने के लिए किया जाता है। ViewComponent रेल में पुन:प्रयोग करने योग्य, परीक्षण योग्य और इनकैप्सुलेटेड व्यू घटकों के निर्माण के लिए एक ढांचा है। आम तौर पर, पुन:प्रयोज्य दृश्य आंशिक का उपयोग करके रेल मे

  1. रूबीस्ट्स गाइड टू एनवायरनमेंट वेरिएबल्स

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

  1. गुप्त मोड:एक मिथक

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