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

मुझे DevOps की आवश्यकता क्यों है?
पहले, डेवलपर्स और समर्थन (तथाकथित संचालन) के बीच एक बाधा थी। यह विरोधाभासी लगता है, लेकिन उनके पास अलग-अलग लक्ष्य और KPI थे, हालांकि उन्होंने एक सामान्य बात की थी। विकास का लक्ष्य व्यावसायिक आवश्यकताओं को जल्दी से जल्दी लागू करना और उन्हें एक कार्यशील उत्पाद में जोड़ना था। समर्थन यह सुनिश्चित करने के लिए ज़िम्मेदार था कि आवेदन ने काम किया - और किसी भी परिवर्तन ने जोखिम को स्थिरता दी। हितों का टकराव है - DevOps इसे हल करने के लिए प्रकट हुआ है।
DevOps क्या है?
सवाल अच्छा है - और विवादास्पद: आखिरकार, दुनिया अभी तक इस पर सहमत नहीं हुई है। EPAM का मानना है कि DevOps प्रौद्योगिकी, प्रक्रियाओं और टीम के भीतर परस्पर क्रिया की संस्कृति को जोड़ती है। यह एसोसिएशन उपयोगकर्ताओं को समाप्त करने के लिए मूल्यों के निरंतर वितरण का लक्ष्य रखती है।
किरिल सर्गेयेव : "डेवलपर्स कोड लिखते हैं, परीक्षक इसकी जांच करते हैं, और व्यवस्थापक उत्पादन पर्यावरण पर अंतिम उत्पाद स्थापित करते हैं। लंबे समय तक, टीम के ये हिस्से कुछ खंडित थे, और फिर उन्हें एक सामान्य प्रक्रिया में संयोजित करने का विचार आया। इस प्रकार देवोपास प्रथाएं प्रकट हुईं। "
वह दिन आया जब डेवलपर्स और सिस्टम इंजीनियर एक-दूसरे के काम में दिलचस्पी लेने लगे। उत्पादन और समर्थन के बीच अवरोध फीका पड़ने लगा। इस तरह से देवओप्स अस्तित्व में आए, जिसमें प्रथाओं, संस्कृति और टीम वर्क शामिल हैं।

DevOps संस्कृति का सार क्या है?
यह तथ्य कि अंतिम परिणाम की जिम्मेदारी टीम के प्रत्येक सदस्य के पास है। DevOps के दर्शन में सबसे दिलचस्प और कठिन बात यह समझना है कि एक विशेष व्यक्ति न केवल अपने काम के चरण के लिए जिम्मेदार है, बल्कि इसके लिए जिम्मेदार है कि पूरा उत्पाद कैसे काम करेगा। समस्या किसी भी तरफ झूठ नहीं है - यह आम है, और टीम का प्रत्येक सदस्य इसे हल करने में मदद करता है।
DevOps संस्कृति का सबसे महत्वपूर्ण बिंदु समस्या को हल करना है, न कि केवल DevOps अभ्यास को लागू करना है। इसके अलावा, इन प्रथाओं को "किसी के पक्ष में" लागू नहीं किया गया है, लेकिन पूरे उत्पाद में। इस परियोजना को अपने दम पर एक DevOps इंजीनियर की आवश्यकता नहीं है - इसे समस्या के समाधान की आवश्यकता है, और एक DevOps इंजीनियर की भूमिका को विभिन्न विशेषज्ञताओं के साथ कई टीम सदस्यों में वितरित किया जा सकता है।
DevOps प्रथाओं क्या हैं?
DevOps प्रैक्टिस सॉफ्टवेयर जीवन चक्र के सभी चरणों को कवर करती है।
इगोर बॉयको : “आदर्श मामला तब है जब हम प्रोजेक्ट के आरंभ में देवओप्स प्रथाओं का उपयोग करना शुरू करते हैं। आर्किटेक्ट्स के साथ मिलकर, हम योजना बनाते हैं कि वास्तुशिल्प परिदृश्य में किस तरह का अनुप्रयोग होगा, यह कहाँ स्थित होगा और कैसे स्केल किया जाएगा, हम मंच का चयन करते हैं। अब माइक्रोसिस्टवर्क वास्तुकला फैशन में है - इसके लिए हम एक आर्केस्ट्रा सिस्टम चुनते हैं: हमें व्यक्तिगत रूप से एप्लिकेशन के प्रत्येक तत्व को प्रबंधित करने और दूसरों से स्वतंत्र रूप से अपडेट करने में सक्षम होने की आवश्यकता है। एक अन्य अभ्यास "बुनियादी सुविधाओं के रूप में कोड है।" यह उस दृष्टिकोण का नाम है जिसमें प्रोजेक्ट इन्फ्रास्ट्रक्चर को सर्वर के साथ सीधे बातचीत के बजाय कोड का उपयोग करके बनाया और प्रबंधित किया जाता है।
अगला, हम विकास के चरण पर आगे बढ़ते हैं। यहां सबसे बड़ी प्रथाओं में से एक सीआई / सीडी का निर्माण होता है: आपको डेवलपर्स को उत्पाद में परिवर्तन को छोटे भागों में, अधिक बार और अधिक दर्द रहित रूप से जल्दी से एकीकृत करने में मदद करने की आवश्यकता है। CI / CD कोड सत्यापन को कवर करता है, विज़ार्ड को कोड बेस में भरता है, और परीक्षण और उत्पादन वातावरण के लिए एप्लिकेशन को तैनात करता है।
CI / CD चरणों में, कोड गुणवत्ता द्वार से होकर जाता है। उनकी मदद से, वे सत्यापित करते हैं कि डेवलपर के कार्य केंद्र से निकला कोड निर्दिष्ट गुणवत्ता मानदंडों को पूरा करता है। यूनिट और UI परीक्षण यहां जोड़े गए हैं। त्वरित, दर्द रहित और केंद्रित उत्पाद परिनियोजन के लिए, आप उपयुक्त प्रकार का परिनियोजन चुन सकते हैं।
तैयार उत्पादों के समर्थन के स्तर पर देवओप्स प्रथाओं का एक स्थान है। उनका उपयोग परिवर्तनों की निगरानी, प्रतिक्रिया, सुरक्षा, कार्यान्वयन के लिए किया जाता है। निरंतर सुधार के संदर्भ में DevOps इन सभी कार्यों को देखता है। हम दोहरावदार संचालन को कम करते हैं, उन्हें स्वचालित करते हैं। इसमें माइग्रेशन, एप्लिकेशन एक्सटेंशन और स्वास्थ्य सहायता भी शामिल है। ”
क्यों DevOps प्रथाओं उपयोगी हैं?
यदि हमने आधुनिक DevOps प्रथाओं पर एक पाठ्यपुस्तक लिखी है, तो इसके पहले पृष्ठ पर तीन बिंदु होंगे: स्वचालन, त्वरित रिलीज़, और उपयोगकर्ताओं से त्वरित प्रतिक्रिया।
किरिल सर्गेव : “पहला स्वचालन है। हम टीम में सभी इंटरैक्शन को स्वचालित कर सकते हैं: हमने कोड लिखा था - लुढ़का हुआ - चेक किया गया - स्थापित - एकत्र किया गया फीडबैक - शुरुआत में लौटा। यह सब स्वचालित है।
दूसरा रिलीज को गति देना और यहां तक कि विकास को आसान बनाना है। ग्राहक के लिए यह हमेशा महत्वपूर्ण होता है कि वह उत्पाद जितनी जल्दी हो सके बाजार में उतरे और प्रतियोगियों के एनालॉग की तुलना में जल्द ही लाभान्वित होने लगे। उत्पाद वितरण प्रक्रिया को असीम रूप से बेहतर बनाया जा सकता है: समय कम करें, अतिरिक्त नियंत्रण चिह्न जोड़ें, निगरानी में सुधार करें।
तीसरा उपयोगकर्ता प्रतिक्रिया को गति दे रहा है। यदि उसकी टिप्पणियां हैं, तो हम तुरंत सुधार कर सकते हैं और तुरंत आवेदन को अपडेट कर सकते हैं। ”

अवधारणाएँ "सिस्टम इंजीनियर", "इंजीनियर का निर्माण" और "DevOps इंजीनियर" से कैसे संबंधित हैं?
वे अन्तर्विभाजित करते हैं, लेकिन थोड़ा अलग क्षेत्रों से संबंधित हैं।
EPAM में सिस्टम्स इंजीनियर एक स्थिति है। वे विभिन्न स्तरों में आते हैं: जूनियर से लेकर मुख्य-विशेषज्ञ तक।
एक बिल्डिंग इंजीनियर की एक भूमिका की अधिक संभावना होती है जिसे किसी परियोजना पर किया जा सकता है। अब यह सीआई / सीडी के लिए जिम्मेदार लोगों का नाम है।
एक DevOps इंजीनियर एक विशेषज्ञ है जो एक परियोजना पर DevOps प्रथाओं का कार्यान्वयन करता है।
इस सब को संक्षेप में, यह कुछ इस तरह से निकलता है: सिस्टम इंजीनियर की स्थिति में एक व्यक्ति परियोजना पर एक बिल्ड इंजीनियर की भूमिका निभाता है और वहां देवओप्स प्रथाओं के कार्यान्वयन में लगा हुआ है।
वास्तव में एक DevOps इंजीनियर क्या कर रहा है?
DevOps इंजीनियरों ने परियोजना को बनाने वाले सभी भागों को एक साथ रखा। वे प्रोग्रामर, परीक्षक, सिस्टम प्रशासक के काम की बारीकियों को जानते हैं और उनके काम को आसान बनाने में मदद करते हैं। वे व्यवसाय की जरूरतों और आवश्यकताओं को समझते हैं, विकास प्रक्रिया में इसकी भूमिका - और ग्राहक के हितों को ध्यान में रखते हुए प्रक्रिया का निर्माण करते हैं।
हमने स्वचालन के बारे में बहुत सारी बातें कीं - DevOps इंजीनियरों ने इसे पहले किया। यह एक बहुत बड़ा बिंदु है, जो अन्य बातों के अलावा, पर्यावरण की तैयारी भी शामिल है।
किरिल सर्गेयेव : “उत्पाद के अपडेट पेश करने से पहले, उन्हें तीसरे पक्ष के वातावरण पर परीक्षण करने की आवश्यकता है। यह DevOps इंजीनियरों द्वारा तैयार किया जा रहा है। वे इस परियोजना पर एक संपूर्ण के रूप में DevOps संस्कृति को उभारते हैं: वे अपनी परियोजनाओं की सभी परतों पर DevOps प्रथाओं का परिचय देते हैं। ये तीन सिद्धांत: स्वचालन, सरलीकरण, त्वरण - वे हर जगह लाते हैं जहां वे पहुंच सकते हैं। "
एक DevOps इंजीनियर को क्या पता होना चाहिए?
द्वारा और बड़े, उसे विभिन्न क्षेत्रों से ज्ञान होना चाहिए: प्रोग्रामिंग, ऑपरेटिंग सिस्टम, डेटाबेस, बिल्ड सिस्टम और कॉन्फ़िगरेशन के साथ काम करना। क्लाउड इंफ्रास्ट्रक्चर, ऑर्केस्ट्रेशन, मॉनिटरिंग सिस्टम के साथ काम करने की क्षमता उनके साथ जोड़ी जाती है।
1. प्रोग्रामिंग भाषाएँDevOps के इंजीनियर स्वचालन के लिए कई बुनियादी भाषाओं को जानते हैं और उदाहरण के लिए, प्रोग्रामर को बता सकते हैं: “चलो, आप कोड को मैन्युअल रूप से इंस्टॉल नहीं करेंगे, लेकिन हमारी स्क्रिप्ट की मदद से जो सब कुछ स्वचालित करता है? हम इसके लिए एक कॉन्फ़िगर-फ़ाइल तैयार करेंगे, इसे आपके और हमारे दोनों के लिए पढ़ना सुविधाजनक होगा - और हम इसे किसी भी समय बदल सकते हैं। और हम देखेंगे कि कौन, कब और क्यों इसमें बदलाव करता है। ”
एक DevOps इंजीनियर इन भाषाओं में से एक या अधिक सीख सकता है: पायथन, ग्रूवी, बैश, पॉवर्सशेल, रूबी, गो। उन्हें एक गहरे स्तर पर जानने की आवश्यकता नहीं है - सिंटैक्स की मूल बातें, ओओपी सिद्धांत, स्वचालन के लिए सरल स्क्रिप्ट लिखने की क्षमता।
2. ऑपरेटिंग सिस्टमDevOps के इंजीनियर को यह समझना चाहिए कि किस सर्वर पर उत्पाद स्थापित किया जाएगा, यह किस वातावरण में लॉन्च किया जाएगा, किन सेवाओं के साथ यह सहभागिता करेगा। आप विंडोज या लिनक्स परिवार में विशेषज्ञता के लिए चुन सकते हैं।
3. संस्करण नियंत्रण प्रणालीसंस्करण नियंत्रण प्रणाली के ज्ञान के बिना, DevOps इंजीनियर कहीं नहीं है। Git इस समय सबसे लोकप्रिय प्रणालियों में से एक है।
4. मेघ प्रदाताAWS, Google, Azure - खासकर अगर हम विंडोज-दिशा के बारे में बात कर रहे हैं।
किरिल सर्गेयेव : “क्लाउड प्रदाता हमें वर्चुअल सर्वर प्रदान करते हैं जो सीआई / सीडी पटरियों पर पूरी तरह से फिट होते हैं।
दस भौतिक सर्वरों को स्थापित करने के लिए लगभग सौ मैनुअल संचालन की आवश्यकता होती है। प्रत्येक सर्वर को वांछित ऑपरेटिंग सिस्टम को मैन्युअल रूप से शुरू, स्थापित और कॉन्फ़िगर किया जाना चाहिए, इन दस सर्वरों पर हमारे एप्लिकेशन को स्थापित करें, और फिर दस बार सब कुछ डबल-चेक करें। क्लाउड सेवाएं इस प्रक्रिया को कोड की दस पंक्तियों के साथ बदल देती हैं, और एक अच्छे DevOps इंजीनियर को उन्हें संभालने में सक्षम होना चाहिए। इसलिए वह ग्राहक और कंपनी दोनों के लिए समय, प्रयास और पैसा बचाता है। ”
5. ऑर्केस्ट्रेशन सिस्टम: डॉकर और कुबेरनेट्सकिरिल सर्गेयेव : “वर्चुअल सर्वर कंटेनरों में विभाजित हैं, जिनमें से प्रत्येक में हम अपना एप्लिकेशन इंस्टॉल कर सकते हैं। जब बहुत सारे कंटेनर होते हैं, तो आपको उन्हें प्रबंधित करने की आवश्यकता होती है: एक को चालू करने के लिए, दूसरे को बंद करने के लिए, कहीं बैकअप बनाने के लिए। यह एक बल्कि जटिल मामला बनता जा रहा है जिसके लिए एक आर्केस्ट्रा सिस्टम की जरूरत है।
पहले, प्रत्येक एप्लिकेशन एक अलग सर्वर में लगा हुआ था - इसके संचालन में कोई भी परिवर्तन आवेदन के स्वास्थ्य को प्रभावित कर सकता है। कंटेनरों के लिए धन्यवाद, एप्लिकेशन अलग-अलग हो जाते हैं और अलग-अलग चलते हैं - प्रत्येक अपने स्वयं के वर्चुअल मशीन पर। यदि कोई विफलता होती है, तो कारण खोजने में समय बर्बाद करने की आवश्यकता नहीं है। पुराने कंटेनर को नष्ट करना और एक नया जोड़ना आसान है। ”
6. कॉन्फ़िगरेशन सिस्टम: शेफ, अन्सिबल, कठपुतलीजब आपको सर्वर का बेड़ा बनाए रखने की आवश्यकता होती है, तो आपको बहुत सारे ऑपरेशन करने होंगे। यह लंबा और कठिन है, और यहां तक कि मैनुअल काम भी त्रुटि की संभावना को बढ़ाता है। यह वह जगह है जहां कॉन्फ़िगरेशन सिस्टम बचाव के लिए आते हैं। उनकी मदद से, वे एक स्क्रिप्ट बनाते हैं जो प्रोग्रामर, देवओप इंजीनियरों और सिस्टम प्रशासकों द्वारा पढ़ने के लिए सुविधाजनक है। यह स्क्रिप्ट स्वचालित रूप से सर्वर पर समान संचालन को पूरा करने में मदद करती है। इसलिए मैनुअल ऑपरेशन (और, इसलिए, त्रुटियां) कम हो जाते हैं।
DevOps इंजीनियर क्या करियर बना सकता है?
आप क्षैतिज और लंबवत दोनों तरह से विकसित कर सकते हैं।
इगोर बॉयो : “क्षैतिज विकास के दृष्टिकोण से, DevOps इंजीनियरों में अब व्यापक संभावनाएं हैं। सब कुछ लगातार बदल रहा है, और आप विभिन्न तरीकों से कौशल का निर्माण कर सकते हैं: संस्करण नियंत्रण प्रणाली से लेकर निगरानी तक, कॉन्फ़िगरेशन प्रबंधन से डेटाबेस तक।
आप एक सिस्टम आर्किटेक्ट बन सकते हैं यदि कोई कर्मचारी यह समझने में रुचि रखता है कि आवेदन अपने जीवन चक्र के सभी चरणों में कैसे काम करता है - विकास से समर्थन तक। ”
DevOps इंजीनियर कैसे बनें?
- फीनिक्स प्रोजेक्ट किताबें और DevOps हैंडबुक पढ़ें। ये DevOps के दर्शन के सच्चे आधार हैं, पहला कलात्मक उपन्यास है।
- उपरोक्त सूची से तकनीक जानें: अपने स्वयं के या ऑनलाइन पाठ्यक्रमों पर।
- एक ओपन सोर्स प्रोजेक्ट के लिए एक DevOps इंजीनियर के रूप में शामिल हों।
- अभ्यास करें और अपने व्यक्तिगत और कार्य परियोजनाओं पर DevOps प्रथाओं की पेशकश करें।