8.0

View in English

8.0 भाग 8 का परिचय: स्वचालन

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

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

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

इस भाग के अध्याय

  • 8.1 CI/CD और डिलीवरी: स्वचालित पाइपलाइन बनाएँ जो हर परिवर्तन को साझा मेननलाइन में एकीकृत करती है, उसका परीक्षण करती है, और उसे डिप्लॉय करने योग्य स्थिति में बनाए रखती है, ताकि रिलीज़ करना एक इंजीनियरिंग हड़बड़ी के बजाय एक सुरक्षित व्यावसायिक निर्णय बन जाए , और साथ ही एक ऐसा निर्णय जिसका ऑडिट भी किया जा सके।

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

  • 8.3 कंटेनर, ऑर्केस्ट्रेशन, और क्लाउड-नेटिव: एप्लिकेशनों और उनकी डिपेंडेंसियों को पोर्टेबल, आइसोलेटेड यूनिटों में पैकेज करें और उन्हें Kubernetes जैसे ऑर्केस्ट्रेशन प्लेटफ़ॉर्मों पर बड़े पैमाने पर चलाएँ, जिससे कई टीमों को डिप्लॉयमेंट, स्केलिंग, और रेज़िलिएंस के लिए एक साझा आधार मिलता है, साथ ही प्रॉवेनन्स, आइसोलेशन, और लागत को नियंत्रित रखा जाता है।

  • 8.4 प्लेटफ़ॉर्म इंजीनियरिंग और डेवलपर अनुभव: एक आंतरिक डेवलपर प्लेटफ़ॉर्म बनाएँ और चलाएँ जो क्यूरेटेड, सेल्फ़-सर्विस “गोल्डन पाथ” (सुविचारित, समर्थित मार्ग जिनमें व्यावहारिक डिफ़ॉल्ट पहले से शामिल हों) प्रदान करता है, साझा जटिलता को स्वयं में समाहित करता है ताकि टीमें अपने डोमेन पर ध्यान केंद्रित कर सकें, जबकि डिफ़ॉल्ट रूप से संगठन के सुरक्षा, विश्वसनीयता, और अनुपालन मानकों को विरासत में पाएँ।

  • 8.5 टेस्ट और प्रक्रिया स्वचालन: दोहराव वाले मैनुअल टेस्टिंग और परिचालन कार्य को विश्वसनीय, मशीन-निष्पादित वर्कफ़्लो से बदलें ( सतत टेस्ट सुइट से लेकर रनबुक, रेमेडिएशन, और अनुपालन-साक्ष्य संग्रह तक ) ताकि गुणवत्ता और नियंत्रण पैमाने के साथ बढ़ सकें और कुशल इंजीनियर निर्णय-गहन समस्याओं के लिए मुक्त हो सकें।

  • 8.6 रिलीज़ प्रबंधन और प्रोग्रेसिव डिलीवरी: डिप्लॉय को रिलीज़ से अलग करना ताकि कोड शिप करना किसी फ़ीचर को उजागर करने से पृथक हो, और परिवर्तनों को फ़ीचर फ़्लैग, कैनरी तथा ब्लू-ग्रीन डिप्लॉयमेंट, स्वचालित हेल्थ चेक और रोलबैक, तथा एरर-बजट-गेटेड रिलीज़ों के ज़रिए धीरे-धीरे आगे बढ़ाना, जो किसी भी परिवर्तन के प्रभाव क्षेत्र (blast radius) को सीमित कर देते हैं।

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

ये अध्याय आपस में कैसे संबंधित हैं

ये अध्याय एक ही डिलीवरी प्रणाली की परतों का वर्णन करते हैं, जिनमें हर परत अपने नीचे वाली परत पर टिकी होती है। कंटीन्यूअस इंटीग्रेशन और कंटीन्यूअस डिलीवरी (CI/CD, अध्याय 8.1) वह संयोजी ऊतक है जो परिवर्तन को कमिट से प्रोडक्शन तक ले जाता है। लेकिन एक पाइपलाइन को डिप्लॉय करने के लिए किसी लक्ष्य की आवश्यकता होती है, और इन्फ्रास्ट्रक्चर एज़ कोड (8.2) उस लक्ष्य को हाथ से गढ़े गए “स्नोफ़्लेक” के बजाय वर्ज़न-नियंत्रित, पुनरुत्पादनीय परिभाषाओं के रूप में उपलब्ध कराता है। कंटेनर और ऑर्केस्ट्रेशन (8.3) वह रनटाइम आधार है जिसे पाइपलाइन और संहिताबद्ध इन्फ्रास्ट्रक्चर दोनों अब तेज़ी से मान लेते हैं, जिससे हर टीम को पैकेजिंग और डिप्लॉयमेंट का एक समान अनुबंध मिलता है। प्लेटफ़ॉर्म इंजीनियरिंग (8.4) फिर इन सबको एक सुसंगत आंतरिक उत्पाद में समेट देती है, ताकि सामान्य टीमें पाइपलाइन, इन्फ्रास्ट्रक्चर, और ऑर्केस्ट्रेशन का उपयोग शुरू से खुद बनाने के बजाय पक्की, बनी-बनाई राहों (paved roads) से करें। टेस्ट और प्रक्रिया स्वचालन (8.5) हर परत में फैला होता है, पाइपलाइन में गुणवत्ता गेट्स को एम्बेड करते हुए और उन परिचालन तथा अनुपालन कार्यों को संहिताबद्ध करते हुए जो पूरी संपत्ति (estate) को स्वस्थ बनाए रखते हैं। किसी भी परत में कमज़ोरी उसके ऊपर की परतों को कमज़ोर कर देती है। एक नाज़ुक पाइपलाइन, एक स्नोफ़्लेक वातावरण, या एक अनियंत्रित प्लेटफ़ॉर्म , इनमें से हर एक ठीक वही मैनुअल जोखिम फिर से पैदा कर देता है जिसे हटाने के लिए स्वचालन मौजूद है।

यह भाग बाहर की ओर भी जुड़ता है। यहाँ की डिलीवरी अनुशासन, भाग 11 ( विशेष रूप से अध्याय 11.2 ) में दी गई फ़्लो और डिलीवरी-पाइपलाइन सोच का इंजीनियरिंग रूपांतरण है, और यह उन्हीं क्यूइंग गतिकी (queueing dynamics) पर निर्भर करता है जो किसी भी उच्च-थ्रूपुट प्रणाली को नियंत्रित करती हैं। इन अध्यायों में जो कुछ बनाया जाता है, वह संचालित होने के लिए है, इसलिए ये सीधे भाग 9 में संचालन और विश्वसनीयता (अध्याय 9.1 में साइट रिलायबिलिटी इंजीनियरिंग और अध्याय 9.2 में ऑब्ज़र्वेबिलिटी) की ओर ले जाते हैं, जो उस चल रही प्रणाली से जुड़े हैं जिसे स्वचालन डिप्लॉय करता है। भाग 8 में व्याप्त गवर्नेंस और कंप्लायंस-एज़-कोड की थीम गाइडबुक में अन्यत्र निर्धारित सुरक्षा और नियामक बाध्यताओं को पूरा करती हैं, और यहाँ वर्णित प्लेटफ़ॉर्म वही जगह भी हैं जहाँ AI और डेटा वर्कलोड तेज़ी से चल रहे हैं, जो इस भाग को भाग 6 में MLOps (मशीन लर्निंग ऑपरेशंस) और इन्फ्रास्ट्रक्चर संबंधी सरोकारों से जोड़ता है। साथ में पढ़ने पर, ये अध्याय दिखाते हैं कि एक बड़ा संगठन सुरक्षा, संगति, या नियंत्रण छोड़े बिना सॉफ़्टवेयर को तेज़ी से कैसे शिप करता है।