<पी> परंपरागत रूप से, इंटरनेट पर रेल्स ऐप को तैनात करने का मतलब डेटाबेस सर्वर (जैसे, पोस्टग्रेएसक्यूएल) और कैशिंग, बैकग्राउंड जॉब्स या वेबसॉकेट के लिए रेडिस जैसी अतिरिक्त सेवाओं का प्रावधान करना है। रेल्स 8 के साथ, कोर टीम कैशिंग, जॉब क्यू और रीयल-टाइम वेबसॉकेट के समाधानों में बदलाव करके इसे बदलने की उम्मीद करती है - ये सभी आपके एप्लिकेशन के डेटाबेस द्वारा संचालित हैं। <पी> इस लेख में, हम यह पता लगाएंगे कि रेल्स 8 "सॉलिड ट्राइफेक्टा" के अवलोकन से शुरुआत करते हुए "कोई Paa आवश्यक नहीं" वादे को कैसे पूरा करता है। सॉलिड कैश आपको रेडिस के बिना कैश करने में मदद करता है
<पी> रेल्स 8 में मेरी पसंदीदा सुविधाओं में से एक सॉलिड कैश है , एक नया कैश स्टोर जो रेडिस या मेम्केच्ड की आवश्यकता को प्रतिस्थापित करता है . सॉलिड कैश इन-मेमोरी की-वैल्यू स्टोर के बजाय कैश्ड डेटा को बनाए रखने के लिए डेटाबेस का उपयोग करता है। हालाँकि डिस्क पर कैश्ड ऑब्जेक्ट को संग्रहीत करना रैम की तुलना में तकनीकी रूप से धीमा है, इसके कुछ महत्वपूर्ण फायदे हैं। <पी> सबसे पहले, डिस्क स्टोरेज आपको अधिक स्थान देता है और मेमोरी की तुलना में बहुत सस्ता है। सॉलिड कैश के साथ, आप रैम खत्म हुए बिना कहीं अधिक डेटा कैश कर सकते हैं (और इसे लंबे समय तक रख सकते हैं)। 37signals (बेसकैंप और HEY के पीछे की कंपनी) पर, रेडिस से सॉलिड कैश पर स्विच करने से उन्हें अपने कैश को 10+ टेराबाइट्स डेटा तक विस्तारित करने की सुविधा मिलती है, जिससे अंततः उनके P95 रेंडर समय में 50% की कमी आती है। <पी> हाँ, मेमोरी से पढ़ना डिस्क से पढ़ने की तुलना में तेज़ है। कई मामलों में (जैसे बेसकैंप का उपयोग), अधिक डेटा को कैशिंग करने का ट्रेडऑफ़ इस गति को सार्थक बनाता है। <पी> डिफ़ॉल्ट रूप से, रेल्स 8 सॉलिड कैश (SQLite द्वारा समर्थित) का उपयोग करता है। बेशक, जैसा कि रेल सम्मेलनों में होता है, आप अभी भी रेडिस जैसा कोई अन्य विकल्प चुन सकते हैं यदि यह आपके लिए बेहतर विकल्प है। लेकिन इस डिफ़ॉल्ट के साथ बने रहने से आप रेडिस जैसी किसी अन्य उत्पादन सेवा का समर्थन किए बिना चीजों को कैश कर सकते हैं, जो आपके बुनियादी ढांचे के बोझ को सरल करता है।सॉलिड क्यू आपको पृष्ठभूमि कार्य करने में मदद करता है - रेडिस के बिना
<पी> "सॉलिड" ट्राइफेक्टा का मेरा दूसरा पसंदीदा हिस्सा सॉलिड क्यू है, एक नया सक्रिय जॉब बैकएंड जो रेडिस या साइडकीक जैसी एक अलग जॉब सिस्टम निर्भरता की आवश्यकता के बिना बैकग्राउंड जॉब प्रोसेसिंग को संभालता है। <पी> कई रेल डेवलपर्स पृष्ठभूमि नौकरियों के लिए साइडकीक (जो रेडिस पर निर्भर करता है) या विलंबित जॉब जैसे रत्नों का उपयोग करते हैं। सॉलिड क्यू, ज़रूरत को दूर करने का रेल्स का प्रयास है किसी अन्य निर्भरता के लिए. यह आपके एप्लिकेशन के डेटाबेस में जॉब क्यूइंग को एकीकृत करता है, इसलिए आपको मेमोरी समाधान या क्यूइंग सिस्टम की आवश्यकता नहीं है। <पी> सॉलिड क्यू नौकरियों को डेटाबेस तालिका में रिकॉर्ड के रूप में संग्रहीत करता है और नौकरी कतार को प्रबंधित करने के लिए कुशल SQL सुविधाओं का उपयोग करता है। यह या तो रेल्स वेब प्रक्रिया में एम्बेडेड (एकल-सर्वर सेटअप के लिए प्यूमा प्लगइन के रूप में) या अलग कार्यकर्ता प्रक्रियाओं में चल सकता है। <पी> जैसा कि रेल्स कोर टीम के एक सदस्य ने बताया, लक्ष्य यह था कि एक डेवलपर को "रेल स्थापित करें, एक डेटाबेस स्थापित करें, और सात अलग-अलग रत्नों और अन्य प्रणालियों को प्रबंधित किए बिना सीधे पृष्ठभूमि कार्य प्रसंस्करण करें।"सॉलिड केबल आपको वेब सॉकेट करने में मदद करता है (आश्चर्य की बात है, रेडिस के बिना)
<पी> रेल्स 8 की "नो-रेडिस-नीडेड" पहेली का तीसरा भाग सॉलिड केबल है - एक नया एक्शन केबल एडॉप्टर, जैसा कि आपने अनुमान लगाया, एक डेटाबेस का उपयोग करता है। ऐतिहासिक रूप से, एक्शन केबल को कई रेल प्रक्रियाओं के बीच संदेश प्रसारित करने के लिए रेडिस सर्वर की आवश्यकता होती है। सॉलिड केबल के साथ, आप वास्तविक समय वेबसॉकेट कार्यक्षमता के लिए एक्शन केबल का लाभ उठा सकते हैं, चैट और नोटिफिकेशन जैसी एप्लिकेशन सुविधाओं के लिए लाइव अपडेट को अनलॉक कर सकते हैं - अतिरिक्त सेवाएं चलाए बिना। <पी> मुझे आशा है कि "सॉलिड" ट्राइफेक्टा का लाभ अब तक स्पष्ट हो गया है। आप रेडिस सर्वर या अन्य पब/उप सेवा को खड़ा किए बिना दीर्घकालिक डेटा को कैश कर सकते हैं, उच्च-थ्रूपुट पृष्ठभूमि नौकरियों को संसाधित कर सकते हैं और वास्तविक समय सुविधाओं को तैनात कर सकते हैं। साथ में, ये सुविधाएँ छोटे ऐप्स के लिए जटिलता को कम करती हैं (आप एक डेटाबेस के साथ एक ही होस्ट पर सब कुछ चला सकते हैं) और तैनाती को आसान बनाने के रेल 8 दर्शन में फिट बैठते हैं।क्या Redis की आवश्यकता को हटाना इतनी बड़ी बात है?
<पी> यह देखने के बाद कि रेल्स 8 रेडिस पर निर्भरता को हटाने के बारे में कितना है, आप उत्सुक हो सकते हैं कि यह वास्तव में कितना मायने रखता है। उत्तर आपके संदर्भ पर निर्भर करता है, लेकिन निस्संदेह कुछ उल्लेखनीय लाभ हैं। <पी> कम चलने वाले हिस्सों का मतलब कम जटिलता है, विशेष रूप से तैनाती में। प्रत्येक अतिरिक्त सेवा (रेडिस, एक अलग बैकग्राउंड जॉब रनर, आदि) एक और चीज़ है जो टूट सकती है या स्केलिंग की आवश्यकता हो सकती है। अधिक जानकारी के लिए डेटाबेस का उपयोग करके, आप अपने उत्पादन कार्यों को सरल बनाते हैं। आपको Redis मेमोरी की निगरानी करने या यह सुनिश्चित करने की आवश्यकता नहीं है कि Redis इंस्टेंस हमेशा चल रहा है। <पी> कई रेल डेवलपर्स ने ऐसे परिदृश्य का सामना किया है, जहां विकास में, आप कैश सर्वर नहीं चलाते हैं या शायद एक अलग कतार एडाप्टर का उपयोग करते हैं, लेकिन उत्पादन में, आप रेडिस/साइडकीक का उपयोग करते हैं। नए रेल डिफ़ॉल्ट के साथ, आप आश्चर्य को कम करते हुए, विकास और उत्पादन में समान सेटअप चला सकते हैं। स्टैक अधिक आत्मनिर्भर है और उत्पादन के लिए विशेष कॉन्फ़िगरेशन के बिना बॉक्स से बाहर "बस काम करता है"। <पी> कम सर्वर या ऐड-ऑन का मतलब सस्ता होस्टिंग बिल भी है। यहां तक कि बड़े पैमाने पर भी, बुनियादी ढांचे को मजबूत करने में कुछ लागत दक्षता आती है। डेटाबेस स्पेस मेमोरी से सस्ता है! <पी> रेल्स आपको रेडिस या अन्य सेवाओं का उपयोग करने से नहीं रोकता है। यह उन्हें वैकल्पिक बनाता है . आप बिल्ट-इन सॉलिड एडेप्टर के साथ शुरुआत कर सकते हैं, और यदि आपको ज़रूरत है, तो आप रेडिस या अन्य समाधान पेश कर सकते हैं।SQLite डेटाबेस प्रक्रिया की आवश्यकता को हटा देता है
<पी> रेल्स 8 में एक और सार्थक बदलाव एक उपयोगी उत्पादन डेटाबेस के रूप में SQLite को अपनाना है, जो रेल्स के SQLite एडाप्टर में कई सुधारों द्वारा सक्षम है। यदि आपका ऐप उत्पादन में SQLite का उपयोग कर सकता है, तो आपको एक अलग डेटाबेस सर्वर चलाने की आवश्यकता नहीं है। इसके बजाय, आपका डेटा ऐप प्रक्रिया द्वारा प्रबंधित डिस्क पर एक साधारण फ़ाइल में रहता है। SQLite में रेल 8 के सुधार इसे पहले की तुलना में अधिक यथार्थवादी बनाते हैं। <पी> SQLite परिनियोजन को और अधिक सरल बना सकता है। आपको सर्वर पर MySQL या Postgres को स्थापित या प्रबंधित करने या प्रबंधित DB सेवा का उपयोग करने (और भुगतान करने) की आवश्यकता नहीं है। यह सिर्फ एक फ़ाइल है जिसे रेल्स ऐप पढ़ता और लिखता है। <पी> यदि आप SQLite से आगे निकल जाते हैं, तो आप निश्चित रूप से बाद में पूर्ण-विशेषताओं वाले डेटाबेस सिस्टम पर माइग्रेट कर सकते हैं। रेल्स कोर टीम ने डिफ़ॉल्ट को हल्के विकल्प में बदल दिया है - जो "नो पास" कथा के साथ अच्छी तरह से फिट बैठता है।कमल 2 आपको तैनात करने में मदद करता है
<पी> रेल्स 8 चलाना को सरल बनाता है एक ऐप उत्पादन में है—लेकिन ऐप को तक पहुंचाने के बारे में क्या? उत्पादन? कमल 2 की रिलीज़ उस प्रश्न का उत्तर देने का प्रयास करती है। <पी> कमल एक ऑर्केस्ट्रेशन टूल है जो आपके ऐप को (डॉकर कंटेनर के माध्यम से) किसी भी लिनक्स सर्वर पर न्यूनतम परेशानी के साथ तैनात करता है। यह आपके ऐप की छवि बनाने, उसे पुश करने और सर्वर पर चलाने को स्वचालित करता है, बिना आपको सभी सर्वर सेटअप को हस्तनिर्मित किए। <पी>
<पी> कुछ कॉन्फ़िगरेशन और एक कमांड के साथ (kamal setup ), कमल एक ताज़ा लिनक्स बॉक्स लेगा और उसमें आपके डॉकर कंटेनर को चलाने के लिए आवश्यक चीज़ें उपलब्ध कराएगा। <पी> उसके बाद, परिनियोजन kamal deploy चलाने जितना आसान है , जो नवीनतम छवि खींचता है और शून्य-डाउनटाइम परिनियोजन के रूप में पुराने कंटेनर को नए कंटेनर से बदल देता है। <पी> कमल 2 आपको किसी भी लिनक्स होस्ट पर PaaS जैसा परिनियोजन अनुभव देने की आशा करता है। आप किसी भी सर्वर को एक ही कमांड से अपना ऐप चलाने वाले रेल सर्वर में बदल सकते हैं। आरंभिक कॉन्फ़िगरेशन में कठिनाई हो सकती है, लेकिन बाद की तैनाती अधिक सरल है। यह सेल्फ-होस्टिंग को हेरोकू जैसे प्लेटफ़ॉर्म पर धकेलने जितना सुविधाजनक बनाने की दिशा में एक बड़ा कदम है।