डॉकटर के बारे में एक डेवलपर की देखभाल क्यों होनी चाहिए?


11

आम तौर पर एक डेवलपर व्यावसायिक आवश्यकताओं को पूरा करने के बारे में परवाह करता है। उसके पास एक विशेष स्टैक या एक रूपरेखा में विशेषज्ञता हो सकती है। लेकिन क्या उसे डॉक सीखने का प्रयास करना चाहिए और यह विभिन्न तैनाती विधियों (झुंड, क्यूब, मेसोस, आदि) है?

सीधे शब्दों में कहें कि एक डेवलपर को डॉकटर की परवाह क्यों करनी चाहिए?

पुनश्च: इस पद के लिए मूल प्रश्न विकास टीम को डॉक पेश करने का निहितार्थ है

जवाबों:


7

शायद वह उत्तर नहीं जिसे आप ढूंढ रहे हैं, लेकिन फिर भी एक उत्तर :)

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

चीजें थोड़ी और जटिल हो जाती हैं अगर "एक डेवलपर" द्वारा आप वास्तव में बहुमत या यहां तक ​​कि संपूर्ण विकास टीम का मतलब करते हैं। विकास के माहौल में एक टूल को धक्का देना, वास्तव में इसका समर्थन करने वाले किसी भी डेवलपर्स के बिना वास्तव में कठिन होगा। टीम के तकनीकी नेतृत्व से पहले इस तरह के एक समर्थक बनाने के लिए समय बिताएं।

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


इसके अलावा, आप अपनी अलग-अलग तकनीकों का समर्थन करने के लिए जो भी तकनीक चाहते हैं, उस पर कम प्रतिबंध और सियासडमिन के लिए सिरदर्द से कम का निर्माण कर सकते हैं। और जब से "देव" तकनीक का फैसला करता है, उसे docker के माहौल को कॉन्फ़िगर करने के लिए उसके ऊपर होना चाहिए।
DarkMukke

@DarkMukke "देव" हमेशा तकनीक का फैसला नहीं करता है ... इसके विपरीत अक्सर बड़ी देव टीमों में सच होता है - "देव" जो भी तकनीक का उपयोग करता है, वह टीम का उपयोग करता है। अपवादों को सहन किया जा सकता है यदि वे टीम की गतिविधियों को प्रभावित या नकारात्मक रूप से प्रभावित नहीं करते हैं।
डैन कॉर्निलेस्कु

मैं आंशिक रूप से सहमत हूं, लेकिन मैंने बड़ी (200+) देव कंपनियों को मेरे बताए तरीके से काम करने वाले के साथ देखा है। मुझे लगता है कि यह न सिर्फ देव टीमों का बल्कि उनके ऊपर के मैनेजिंग स्टाफ का भी व्यक्तिगत चयन का मामला है। अगर सभ्य देवोप्स हैं, तो एक ईश्वर की आवश्यकता वाले docker की मात्रा आमतौर पर तुच्छ होती है।
DarkMukke

6

मैं तुम्हें अपना दृष्टिकोण दूँगा। डेवलपर्स को डॉकटर के बारे में ध्यान देना चाहिए क्योंकि ऐसे अन्य डेवलपर हैं जो डॉकटर का उपयोग करने के इच्छुक हैं और पहले से ही इसमें विशेषज्ञता का निर्माण कर चुके हैं। वे डेवलपर होने के साथ-साथ एक DevOps इंजीनियर की भूमिका निभाने को तैयार हैं। तो देवों के ऑप्स भाग पर वे अब विशेषज्ञता का निर्माण कर रहे हैं।

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

इसके अलावा, बाजार का रुझान वर्चुअलाइजेशन, ऑटो-स्केलिंग, ऑटोमेशन, मशीन लर्निंग और डॉकटर की ओर है। डॉकटर का उपयोग करना बहुत जरूरी हो गया है। व्यवसाय एक एकल आदमी के लिए 2x का भुगतान करने के लिए तैयार हैं जो इन सभी जिम्मेदारियों को लेता है और जब ऐसे लोगों की मांग होती है, तो आपूर्ति भी शुरू हो जाएगी। यह एक कर्मचारी-नियोक्ता के दृष्टिकोण से है।

तकनीकी रूप से, मैंने जिन संगठनों में काम किया है, वहां अलग-अलग विकास और देवओप्स टीम हैं, हालांकि वे प्रसव के लिए बहुत निकटता से काम करते हैं। DevOps के इंजीनियर और डेवलपर्स यहां बहुत सारे कौशल-सेट साझा करते हैं और इसलिए कभी-कभी कर्तव्यों की बातचीत होती है।

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

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


5

यह डॉकर या किसी अन्य कंटेनराइजेशन तकनीक के बारे में नहीं है।

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

ये समाधान जावा में वसा जार के समान हैं, जहां आपको (सिद्धांत में) जरूरत की हर चीज सिर्फ रनटाइम (जेआरई) पूर्वस्थापित है और सब कुछ बस काम करता है ™।


डेवलपर्स को समझने की आवश्यकता का कारण (उन्हें यह जानने की आवश्यकता नहीं है कि इस तरह के उपकरण को कैसे संचालित किया जाए, केवल यही क्यों आवश्यक है) ऑर्केस्ट्रेशन टूल यह है कि इससे आपको "पारंपरिक" परिनियोजन पर कुछ फायदे मिल सकते हैं।

मवेशी, पालतू जानवर नहीं

EngineYard ने इसके बारे में अच्छा लेख लिखा है। इसका पूरा मतलब यह है कि जब आपका सर्वर मर जाता है, तो आप सिकुड़ जाते हैं और प्रतीक्षा करें जैसा कि नया दिखाई देगा। आप उन्हें मवेशी के रूप में मानते हैं, आपके पास दसियों, सैकड़ों, उनमें से हजारों चल रहे हैं और जब कोई नीचे जाता है तो न तो आपको या आपके ग्राहकों को इसके बारे में पता होना चाहिए।

ऑर्केस्ट्रेशन टूल क्लस्टर में सभी एप्लिकेशन (पॉड्स / जॉब्स, जो कुछ भी) की स्थिति की निगरानी करके प्राप्त करते हैं, और जब यह देखता है कि सर्वर में से एक ने जवाब देना बंद कर दिया (नीचे चला जाता है) तो यह स्वचालित रूप से उन सभी एप्लिकेशन को स्थानांतरित करता है जो उस सर्वर पर कहीं और चल रहे थे।

बेहतर संसाधन उपयोग

ऑर्केस्ट्रेशन के लिए धन्यवाद आप एक सर्वर पर कई एप्लिकेशन चला सकते हैं और ऑर्केस्ट्रेटर आपके लिए संसाधनों को ट्रैक करेगा। यह आवश्यक होने पर अनुप्रयोगों को पुनर्व्यवस्थित करेगा।

अपरिवर्तनीय अवसंरचना

ऑर्केस्ट्रेटर्स में स्वचालित फ़ेलओवर हैंडलिंग के लिए धन्यवाद, आप अपनी कस्टम छवियों को क्लाउड में चला सकते हैं। जब आपको अपडेट की आवश्यकता होगी, तो आप बस नई छवि बनाएँ, अपने लॉन्च कॉन्फ़िगरेशन को उस एक और अभी-अभी रोल करने के लिए सेट करें। सब कुछ आप के लिए संभाला जाएगा:

  1. नए कॉन्फ़िगरेशन के साथ नया सर्वर बनाएं।
  2. एक रनिंग सर्वर को मार डालो।
  3. आपका ऑर्केस्ट्रेटर सब कुछ अन्य मशीनों (नए सहित) को स्थानांतरित कर देगा।
  4. अगर कोई पुराना सर्वर बचा है तो 1 पर जाएं।

सरल ऑपरेशन

  • पर्याप्त संसाधन नहीं? क्लस्टर के लिए नई मशीन जोड़ें।
  • अधिक एप्लिकेशन इंस्टेंसेस की आवश्यकता है? संख्या बढ़ाएं और आगे बढ़ें।
  • निगरानी? किया हुआ।
  • लॉग प्रबंधन? किया हुआ।
  • राज? अंदाज़ा लगाओ।

TL, डॉ। पूरे बिंदु डॉकर के बारे में नहीं है लेकिन आर्केस्ट्रा के बारे में है। डॉकर टारबॉल / वसा जार का एक विस्तारित संस्करण है जो उचित ऑर्केस्ट्रेशन के लिए आवश्यक है।


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

बात यह है कि पूरे स्टैक का अवलोकन, परीक्षणों से कार्यान्वयन के माध्यम से और अंत में तैनाती आपको यह देखने की अनुमति देगा कि आपके सॉफ़्टवेयर का उपयोग कैसे किया जाता है, किनारे के मामले क्या हैं, दुर्घटनाग्रस्त क्या है। यह आपके द्वारा लिखे गए LOC में आपको धीमा कर देगा, लेकिन उनकी गुणवत्ता में बहुत सुधार करेगा। लंबे समय की बचत के समय में
Moritz

4

उदाहरण के लिए 2014 में प्रकाशित एक ब्लॉग पोस्ट से कुछ तर्क दिए गए हैं और आपके उत्तर से काफी मेल खाते हैं:

  • पर्यावरण में नई तकनीकों का अधिक लचीला इंजेक्शन
  • अंतिम परीक्षण कोड को कम करने और फिर इसे अंतिम उत्पादन सर्वर पर चलाने के बीच एक विशाल दर्द बिंदु है। डोकर इस अंतिम चरण को सरलता से बढ़ा देता है
  • डॉकर विरासत ओएस रखने के लिए इसे तुच्छ बनाता है, चाहे आप लिनक्स के किसी भी स्वाद को चला रहे हों

प्रेषक: https://thenewstack.io/why-you-should-care-about-docker/


मैं नई तकनीकों के इंजेक्शन के लिए सहमत हूं। लेकिन इसके साथ कुछ मुद्दे भी हैं। डेटाबेस के लिए docker का उपयोग करने के लिए ( percona.com/blog/2016/11/16/is-docker-for-your-dossabase )। वे इस समय स्थिर नहीं हैं और शायद भविष्य में स्थिर होंगे। अच्छे की कामना करते है। हम वैसे भी CI / CD का उपयोग करके उत्पादन करने के लिए परीक्षण किए गए कोड को आगे बढ़ाने पर प्राप्त कर सकते हैं। फिर डॉकटर क्यों? डेवलपर्स इस बात की परवाह नहीं करते हैं कि हम किस ओएस पर चल रहे हैं। उन्हें पहली बार में डॉक सीखने में क्यों परेशान होना चाहिए? जीवन को आसान बनाने के लिए?
अभय पई

पहली जगह में मैं केवल निम्नलिखित "एमवीपी" परिदृश्य के बारे में सोचता हूं: देव पर्यावरण के लिए बुनियादी ढांचे के घटक के रूप में कुछ नए विन्यास / उपकरण की कोशिश करते हैं, इमेजमाजिक कहते हैं। डॉकर के बिना यह जानकारी खो सकती है या भूल सकती है, या कई अन्य छोटी चीजों के साथ संचार की आवश्यकता होती है। Dockerfile साझा करना एक काम करने वाली चीज़ का एक मशीन-सिद्ध करने योग्य सेटअप है जो यहां तक ​​कि सेटअप को Docker-free बुनियादी ढांचे के लिए हैंडीक्राफ्ट करने के लिए इस्तेमाल किया जा रहा है, यह सिर्फ एक प्रलेखन से अधिक मूल्यवान है। यकीन है कि आप कठपुतली के लिए भी जा सकते हैं; डॉकर के बारे में अच्छी बात यह है कि यह कैसे आत्म-निहित परिदृश्यों की अनुमति देता है।
पीटर मुर्सकिन

माना। लेकिन समस्या ऑर्केस्ट्रेशन के दौरान उत्पन्न होती है। डेवलपर को सर्वोत्तम प्रथाओं का पालन करने और व्यावसायिक आवश्यकता को पूरा करने के लिए डॉक ऑर्केस्ट्रेशन में विशेषज्ञता हासिल करने की आवश्यकता है। अपने परिदृश्य पर विचार करें जहां डेवलपर को एक सेवा के रूप में इमेजमागिक की आवश्यकता होती है। डॉकटराइल का निर्माण करते समय, वह उन पैकेजों पर पूर्ण नियंत्रण प्राप्त करता है, जिन्हें वह डॉकटर छवि में स्थापित कर सकता है। क्या होगा यदि वे डॉक लॉग्स का उपयोग करने के बजाय dosh में sshd को sshd स्थापित करते हैं? क्या होगा यदि वे ऐसे उपकरण स्थापित करते हैं जिनका व्यावसायिक तर्क से कोई लेना-देना नहीं है लेकिन सुरक्षा से समझौता करते हैं? क्या देवों को डॉकटर विशेषज्ञता की आवश्यकता है?
अभय पई

हम्म लेकिन क्या होगा अगर वे एक सॉकेट आधारित पिछले दरवाजे को लागू करते हैं?
docker ने

सच। लेकिन यह किसी भी मामले में डेवलपर का दुर्भावनापूर्ण इरादा होगा। यह कर्ता हो या न हो। लेकिन जब डॉकरों को देवों से परिचित कराया जाता है, तो वे सिर्फ इसलिए दुराचार का कारण बन सकते हैं क्योंकि उनके पास उपयुक्त ज्ञान का अभाव होता है। जब वे दुर्व्यवहार और जटिलताओं का कारण बन सकते हैं, तो उन्हें डॉक सीखने में भी क्यों परेशान होना चाहिए (ऑर्केस्ट्रेटर की जटिलता को भी जोड़ा जाएगा)? कृपया मेरे सवालों का बुरा मत मानना। यहां तक ​​कि मुझे डॉकटर भी पसंद हैं। लेकिन मैं एक डेवलपर के परिप्रेक्ष्य को समझने की कोशिश कर रहा हूं। मैं पिछले 3 सालों से खुद डेवलपर हूं और अब मैं एक DevOps इंजीनियर हूं।
अभय पई

4

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

एक सीडी के दौरान भी पाइपलाइन किसी भी चरण में विफल हो सकती है, खासकर जब यह डॉक इमेज बिल्ड स्टेप होता है, कभी-कभी यह एक फाइल होती है जो गायब होती है या एक लिबर की जरूरत होती है।

काम के दौरान हमने अपने ऐप को परोसने के लिए dockerfile बनाने के लिए मूल बातें समझाते हुए docker को सभी devs का परिचय दिया, साथ ही हमने पाइपलाइन को आसान भी बनाया ताकि कोई केवल एक नाम और dockerfile जोड़ सके और उसका ऐप अपने आप ही बन जाएगा अगली दौड़ की परवाह किए बिना टेक चल रहा है।

डॉकर क्विकस्टार्ट वास्तव में ऐसा करने के लिए एक महान परिचय है, इसके बाद देवो की टीम ने डिस्ट्रो की पसंद में देव का मार्गदर्शन किया (उनमें से बहुत सी चीजों को नहीं जानते हैं alpine)।

हमारा काम उन्हें साधनों तक एक आसान पहुंच प्रदान करना है, वे बाकी काम करते हैं ताकि वे कुछ गलत होने पर इसे ठीक कर सकें। डॉकर वास्तव में विकास की प्रक्रिया का एक हिस्सा है और devOps टीम उन्हें हमारी जरूरतों से मेल खाने वाली docker छवियां प्रदान करती है और यह काफी आसान है इसलिए एक नया ऐप बनाने और सहायता के बिना इसे तैनात करने में केवल कुछ मिनट लगते हैं।


एक देव के अनुसार, एक परियोजना में docker का उपयोग केवल तभी किया जाना चाहिए जब परियोजना बाह्य निर्भरता की मांग करती है? मुझे लगता है कि डॉकटर हमारी विकास प्रक्रिया का हिस्सा बन गया है क्योंकि हमने इसे देवों पर लागू किया है या क्योंकि हम इसके शांत होने पर विचार करते हैं। ऑर्केस्ट्रेशन के दौरान भी समस्या उत्पन्न होती है। क्या उन्हें झुंड, कुबेरनेट या मेसो जैसे ऑर्केस्ट्रेटर सीखना होगा? इन सभी आर्केस्ट्रा का कार्यान्वयन अलग है। क्या होगा अगर ऑर्केस्ट्रेशन खराब कार्यान्वयन के कारण दुर्घटनाग्रस्त हो जाए? किसे दोषी ठहराया जाए? पुनश्च: मेरे सवालों का बुरा मत मानना। मैं सिर्फ देवली के वकील की भूमिका निभा रहा हूं। मुझे भी डॉकटर बहुत पसंद है :)
अभय पई

2

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


0

ठीक है, अगर आपने कभी वीएम का उपयोग परीक्षण के लिए किया है तो आप कंटेनरों का उपयोग करने की कोशिश कर सकते हैं और डॉकटर वास्तव में परीक्षण के लिए एक बढ़िया सामान है और एलएक्ससी के बजाय इसका उपयोग करना अधिक सरल है :)


माना। मैं डॉकटर के उपयोग के खिलाफ नहीं हूं या यह विभिन्न ऑर्केस्ट्रेशन टूल है। मैं भी उन्हे प्यार करता हूँ। मैं जो समझने की कोशिश कर रहा हूं वह सरल है। जो आवेदन के कंटेनराइजेशन का मालिक है। देवता? या DevOps? अथवा दोनों ? यदि दोनों हैं तो उनमें से प्रत्येक को कितना योगदान देना चाहिए? जब चीजें या तो docker या docker orchestration के कारण विफल हो जाती हैं, जिन्हें जिम्मेदार ठहराया जाना चाहिए? कोड दक्षता बनाम अपने जीवन को आसान बनाने के लिए देवों की मदद करना। मेरा प्रश्न प्रौद्योगिकी के बजाय एक व्यक्ति की भूमिका के प्रति झुकाव है।
अभय पाई
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.