मुझे अपना एप्लिकेशन कॉन्फ़िगरेशन कहां रखना चाहिए?


17

मैं हाल ही में " जहां गुण पर्यावरण पर निर्भर होना चाहिए संग्रहीत किया जाना चाहिए? " के बारे में एक बहस पढ़ रहा है ।

शास्त्रीय तरीका यह है कि आपके पास एक से अधिक संपत्ति की फाइलें हों, एक-एक करके, और पर्यावरण चर (DEV, PROD ...) पर आधारित हो, आप आवेदन शुरू करते समय उन्हें पढ़ना पसंद करते हैं (जैसे स्प्रिंग प्रोफाइल के साथ)।

दूसरी ओर, यदि आप अपने एप्लिकेशन को तैनात करने के लिए एक कंटेनर का उपयोग कर रहे हैं, तो यह कहा जाता है कि इस तरह का कॉन्फ़िगरेशन पर्यावरण से ही आना चाहिए (पर्यावरण चर का उपयोग करके जो एप्लिकेशन पढ़ता है), इसलिए छवि पर्यावरण के बीच नहीं बदलती है।

प्रत्येक दृष्टिकोण के पेशेवरों और विपक्ष क्या हैं? क्या कंटेनर परिदृश्य के लिए "सर्वश्रेष्ठ" दृष्टिकोण है?


क्या आपको लगता है कि किसी फ़ाइल को चुनने के लिए अपने आप को पर्यावरण चर पर आधारित करना पर्यावरण चर का उपयोग करने के अनुरूप नहीं है ताकि छवि न बदले? (मुख्य दोष कुछ और से अधिक देव और क्यूए कंटेनर में उत्पादों की साख को छोड़ रहा है)
Tensibai

जवाबों:


6

किसने कहा कि गुण फाइलें और पर्यावरण चर जहां पारस्परिक रूप से अनन्य हैं?

"मैं अपने एप्लिकेशन कॉन्फ़िगरेशन को कहां संग्रहीत करूं?" और "मेरा ऐप स्रोत कहां है यह कॉन्फ़िगरेशन है?"

सबसे अधिक संभावना परिणाम है कि हर कोई शायद चाहिए बस कर रही है कि वे क्या एक के रूप में विन्यास फाइल के साथ क्या कर रहे हैं रखने के भंडारण तंत्र (लगता है लंबे समय तक, जब तक कि वातावरण में मौजूद है के लिए लगातार राज्य)।

हालाँकि, उस कॉन्फ़िगरेशन फ़ाइल को एप्लिकेशन संदर्भ में छोड़ने के बजाय और इसे एप्लिकेशन को चलाने देने से उन वेरिएबल्स को यह उम्मीद करने में सक्षम होना चाहिए कि यह शुरू होने पर पर्यावरण में पहले से ही उपलब्ध हो।

इसका मतलब है कि आपको दो परिनियोजन कार्य प्रवाह की आवश्यकता है -

  1. मैं X परिवर्तन नियंत्रण प्रक्रिया से गुजरने और Z उपकरण के साथ Y समीक्षा कर, जो भी हो, मैं एक वातावरण में आवेदन कर सकता हूं।
  2. मैं एक परिवर्तन नियंत्रण प्रक्रिया के माध्यम से जा रहा हूँ और सी उपकरण, एक ही प्रक्रिया, अलग परिणाम के साथ बी समीक्षा कर एक वातावरण में अपने पर्यावरण विन्यास को तैनात करता हूं।

कॉन्सल जैसे उपकरण में मुख्य मूल्य जोड़े के रूप में पर्यावरण चर के प्रबंधन के उदाहरण का उपयोग करने के लिए, यदि आप git में कॉन्फ़िगरेशन फ़ाइलों को संग्रहीत कर रहे हैं तो git2consul जैसे उपकरण उस कॉन्फ़िगरेशन को उस वातावरण में प्राप्त करने के लिए हैंडल करते हैं जब यह अद्यतन होता है।

यदि आपके पास एक ऐसा ऐप है जो उम्मीद कर रहा है कि कॉन्फ़िगरेशन फ़ाइल के रूप में उपलब्ध होगा, तो आप कॉन्फुल-टेम्प्लेट जैसे कुछ के साथ एक तैनाती प्रक्रिया का निर्माण करके एप्लिकेशन के साथ कॉन्फ़िगरेशन फ़ाइल की कई प्रतियों से बचने से बच सकते हैं, जिसमें आपकी बारी की क्षमता है एक फ़ाइल में वापस कॉन्सुल मान।


0

 जिस तरह से हम यह करते हैं कि हमारे पास हर चलने वाले एप्लिकेशन के लिए 3 टुकड़े (या कलाकृतियां) हैं।

  1. जिस एप्लिकेशन को हम विकसित कर रहे हैं। पर्यावरण की परवाह किए बिना यह वही है। अपने उदाहरण से मिलान करने के लिए, यह जार / युद्ध के रूप में स्प्रिंग एप्लिकेशन होगा।
  2. कंटेनर जो एप्लिकेशन चलाएगा। पर्यावरण की परवाह किए बिना यह वही है। यदि स्प्रिंग बूट का उपयोग कर रहे हैं, तो आपको टॉमकैट की आवश्यकता नहीं है और सिर्फ जावा रनटाइम। इसलिए Openjdk Docker कंटेनर का उपयोग करें।
  3. आवेदन की जरूरत है कि विन्यास। यह केवल एक चीज है जो पूरे वातावरण में भिन्न है। एक स्प्रिंग ऐप में, आप संभवतः एक गुण फ़ाइल का उपयोग कर रहे हैं।

कॉन्फ़िगरेशन फ़ाइल एक अलग स्रोत नियंत्रण में रहती है। यह Git हुआ करता था, लेकिन अब हम http://www.configapp.com पर कॉन्फ़िगर नामक एक SaS का उपयोग कर रहे हैं । कॉन्फ़िगरेशन की मुख्य विशेषता पर्यावरण विशिष्ट कॉन्फ़िगरेशन की आसान हैंडलिंग है। एक नए सर्वर पर हमारे एप्लिकेशन को चलाने के लिए, हम डॉकर कंटेनर, एप्लिकेशन विरूपण साक्ष्य और उस वातावरण के लिए कॉन्फ़िगरेशन फ़ाइल खींचते हैं। कंटेनर में, हम उस निर्देशिका को माउंट करते हैं जहां एप्लिकेशन और कॉन्फ़िगरेशन फ़ाइल संग्रहीत होती है, कंटेनर के भाग के रूप में। हमारा आवेदन समान है। हमारे कंटेनर / छवि समान है। केवल कॉन्फ़िगरेशन फ़ाइल अलग है।

कॉन्फ़िगरेशन फ़ाइल बनाम पर्यावरण चर के बारे में। सबसे लंबे समय तक हम कॉन्फ़िगरेशन फ़ाइलों का उपयोग कर रहे थे। जब हमने PaaS / क्लाउड का उपयोग किया, तो हमने पर्यावरण चर का उपयोग किया। यदि आपके पास बहुत अधिक कॉन्फ़िगरेशन है तो यह अतिरिक्त काम था इसलिए हमने सही कॉन्फ़िगरेशन फ़ाइल को निर्धारित करने के लिए पर्यावरण चर का उपयोग करके समाप्त कर दिया। हमारे पास एक ऐसा अनुप्रयोग है जिसने पर्यावरण चर के गुणों को बदल दिया है, लेकिन यह असामान्य है। यदि हमारे पास केंद्रीकृत कॉन्फ़िगरेशन सर्वर स्वीकृत कंपनी है, तो हम इसका उपयोग करते हैं, अन्यथा हमें कॉन्फ़िगरेशन फ़ाइलों की सादगी पसंद है।

इसलिए संक्षेप में, हम app.jar, app.properties, openjdk Docker खींचते हैं। फिर हम app.jar और app.properties के स्थान बढ़ते Openjdk Docker चलाते हैं। केवल एक चीज पर्यावरण विशिष्ट app.properties है। App.properties को आसानी से प्रबंधित करने के लिए, चाहे कितनी भी प्रॉपर्टी कीज़, वातावरण, क्लस्टर / रीजन इंस्टेंसेस हों, हम कॉन्फ़िग का उपयोग करते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.