कहानी
एक प्रणाली मोबाइल फ़ोन कॉल या मोबाइल डेटा का उपयोग (कि क्या Erlang के लिए बनाया गया था है) को संभालने के लिए कल्पना कीजिए। गेटवे सर्वर हैं जो कॉल की अवधि के लिए उपयोगकर्ता सत्र बनाए रखते हैं, या डेटा एक्सेस सत्र (मैं इसे आगे जाने वाला सत्र कहूंगा)। जब तक सत्र सक्रिय होता है तब तक सर्वर के सत्र में इन-मेमोरी का प्रतिनिधित्व होता है (उपयोगकर्ता कनेक्ट होता है)।
अब एक और प्रणाली है जो गणना करता है कि कॉल के लिए उपयोगकर्ता को कितना चार्ज करना है या डेटा ट्रांसफर किया गया है (इसे पीडीएफ - Policy Decision Function पर कॉल करें)। दोनों सिस्टम इस तरह से जुड़े हुए हैं कि गेटवे सर्वर पीडीएफ के लिए कुछ मुफ़्त टीसीपी कनेक्शन बनाता है और यदि उन टीसीपी कनेक्शन नीचे जाते हैं तो यह उपयोगकर्ता सत्र छोड़ देता है। गेटवे एक समय में कुछ सौ हजार ग्राहकों को संभाल सकता है। जब भी कोई ऐसी घटना होती है जिसके लिए उपयोगकर्ता को चार्ज करने की आवश्यकता होती है (अगली डेटा ट्रांसफर, कॉल का दूसरा मिनट) गेटवे इस तथ्य के बारे में पीडीएफ को सूचित करता है और पीडीएफ उपयोगकर्ता खाते से एक निश्चित राशि को घटा देता है। जब उपयोगकर्ता खाता खाली होता है तो पीडीएफ कॉल को डिस्कनेक्ट करने के लिए गेटवे को सूचित करता है (आप पैसे से बाहर हो गए हैं, आपको ऊपर उठने की जरूरत है)।
आपका प्रश्न
अंत के इस संदर्भ में अपने प्रश्न के बारे में बात करते हैं। हम एक पीडीएफ नोड को अपग्रेड करना चाहते हैं और नोड डॉकर पर चल रहा है। हम सॉफ़्टवेयर के नए संस्करण के साथ एक नया डॉकर उदाहरण बनाते हैं, लेकिन हम पुराने संस्करण को बंद नहीं कर सकते हैं (उनके कॉल के बीच में सैकड़ों हजार ग्राहक हैं, हम उन्हें डिस्कनेक्ट नहीं कर सकते हैं)। लेकिन हमें किसी भी तरह पुराने पीडीएफ से नए संस्करण में ग्राहकों को स्थानांतरित करने की जरूरत है। तो हम पुराने पीडीएफ के बजाय अद्यतन नोड के साथ कोई नया कनेक्शन बनाने के लिए गेटवे नोड को बताते हैं। ग्राहक चतुर हो सकते हैं और उनमें से कुछ में लंबे समय से चलने वाले डेटा कनेक्शन हो सकते हैं (विंडोज 10 आईएसओ डाउनलोड करना) ताकि पूरे ऑपरेशन को पूरा होने में 2-3 दिन लग जाए। महत्वपूर्ण बग के मामले में सॉफ़्टवेयर के एक संस्करण को दूसरे में अपग्रेड करने में कितना समय लग सकता है। और इस तरह के दर्जनों सर्वर हो सकते हैं, प्रत्येक व्यक्ति सैकड़ों हजारों ग्राहकों को संभाला जा सकता है।
लेकिन क्या होगा यदि हमने इसके बजाय एरलांग रिलीज हैंडलर का उपयोग किया? हम सॉफ्टवेयर के नए संस्करण के साथ रिलेप फ़ाइल बनाते हैं। हम इसे सही तरीके से जांचते हैं और पीडीएफ नोड्स पर तैनात करते हैं। प्रत्येक नोड को जगह में अपग्रेड किया जाता है - एप्लिकेशन की आंतरिक स्थिति परिवर्तित हो जाती है, नोड सॉफ़्टवेयर का नया संस्करण चला रहा है। लेकिन सबसे महत्वपूर्ण बात यह है कि गेटवे सर्वर के साथ टीसीपी कनेक्शन नहीं छोड़ा गया है। इसलिए ग्राहक खुशी से अपनी कॉल जारी रखते हैं या नवीनतम विंडोज आईएसओ डाउनलोड कर रहे हैं जबकि हम सिस्टम को अपग्रेड कर रहे हैं। सभी 2-3 दिनों के बजाय 10 सेकंड में किया जाता है।
जवाब
इस विशिष्ट आवश्यकताओं के साथ एक विशेष प्रणाली का एक उदाहरण है। डॉकर और Erlang's Release Handling ऑर्थोगोनल तकनीकें हैं।आप या तो या दोनों का उपयोग कर सकते हैं, यह सब निम्नलिखित करने पर निर्भर करता:
आप जाहिर दोनों दृष्टिकोण का परीक्षण करने के लिए पर्याप्त संसाधन और काफी धैर्य अपने परिचालन टीम को पढ़ाने के लिए होगा ताकि वे किसी भी विधि का उपयोग कर सिस्टम को तैनात कर सकें? क्या होगा यदि परीक्षण सुविधा में लाखों पाउंड (आवश्यक हार्डवेयर की वजह से) की लागत हो और एक समय में केवल दो तरीकों का उपयोग कर सकें (क्योंकि परीक्षण चक्र में दिन लगते हैं)?
व्यावहारिक दृष्टिकोण प्रारंभ में डॉकर का उपयोग करके नोड्स को तैनात करना और फिर उन्हें Erlang release handler (यदि आपको पहले स्थान पर डॉकर का उपयोग करने की आवश्यकता है) के साथ अपग्रेड करना हो सकता है। या, यदि आपके सिस्टम को अपग्रेड के दौरान उपलब्ध होने की आवश्यकता नहीं है (उदाहरण के लिए पीडीएफ सिस्टम करता है), तो आप हमेशा डॉकर के साथ नए संस्करणों को तैनात करने और रिलीज हैंडलिंग के बारे में भूल सकते हैं। या आप रिलीज हैंडलर के साथ भी चिपक सकते हैं और डॉकर के बारे में भूल सकते हैं यदि आपको ऑन-द-फ्लाई पर त्वरित और विश्वसनीय अपडेट की आवश्यकता है और डॉकर केवल प्रारंभिक तैनाती के लिए उपयोग किया जाएगा। मुझे आशा है कि वह मदद करेंगे।
मेरी टिप्पणी के बावजूद मेरा मानना है कि इसका अभी तक उत्तर नहीं दिया गया है। मेरा मानना है कि डॉकर के भीतर एचसीएस का उपयोग करने की विभिन्न कार्यान्वयन रणनीतियों के रूप में और अधिक लिखा जा सकता है। मेरा अनुमान है कि डॉकर या इससे कोई फर्क नहीं पड़ता जब तक आप HEAD के साथ गठबंधन प्रोड को बनाए रखते हैं, इससे कोई फर्क नहीं पड़ता कि डॉकर या एरलांग के माध्यम से कोई नया कंटेनर धक्का दिया जाता है। लेकिन चीजों को सिंक रखें! – Aki
डॉकर एर्लांग के लिए विशेष रूप से अच्छा फिट नहीं है - आज भी कई छोटी दुकानों को तैनात करने का यही एकमात्र तरीका है। अधिकांश लोग डॉकर (हल्के समानांतरता, निष्पादन पर्यावरण स्वच्छता, "नेटवर्क को अमूर्तता", प्रक्रिया अलगाव, स्मृति सुरक्षा इत्यादि) के साथ हल करने का प्रयास करते हैं। एरलैंग पहले से ही एक पूर्ण फैशन में संबोधित समस्याएं हैं। हॉट कोड अपग्रेड के लिए रनटाइम के लिए गति और स्टोरेज/कोड लोडिंग वातावरण में डेटा प्रकारों की उच्च डिग्री नियंत्रण और ज्ञान की आवश्यकता होती है। डॉकर सामान्य मामले में दूसरी आवश्यकता को रोकता है। – zxq9
@ zxq9: यह मुझे डॉकर के बाहर फीनिक्स/एलिक्सीर ऐप्स चलाने में अधिक आत्मविश्वास देता है लेकिन क्या एचसीएस वास्तव में सर्कलसीआई या ट्रैविससीआई का उपयोग कर देवोपस पर्यावरण में समझ में आता है? मूल रूप से, एरलांग एचसीएस डॉकर और सीआई उपकरण के लिए ऑर्थोगोनल नहीं है? यह एचसीएस फीचर के पुनः मूल्यांकन के लिए कहता है, हम जानते हैं कि पीएएस अक्सर नोड्स को एक दूसरे के साथ बातचीत करने की इजाजत नहीं देता है जिस तरह एचसीएस को अच्छी तरह से काम करने की ज़रूरत होती है। यह एक पूरी नई पोस्ट होनी चाहिए: क्या वेब ऐप्स को डॉकर और सीआई के पक्ष में एचसीएस को बलिदान देना चाहिए? – Aki