परिचय
कई आईटी कंपनियों ने ऑन-ड्यूटी ड्यूटी की प्रथा को अपनाया है। एक इंजीनियर ड्यूटी पर है, और उसकी ड्यूटी शिफ्ट के लिए चलती है। आमतौर पर, शिफ्ट एक दिन या एक सप्ताह तक चलती है। इस अवधि के बढ़ने या घटने के मामले हैं, लेकिन यह दुर्लभ है। इस भूमिका में इंजीनियर के कर्तव्य कंपनी से कंपनी में भिन्न होते हैं, लेकिन कुछ सामान्य बिंदु हैं।
- आपको टीम में आने वाले सवालों के जवाब देने होते हैं।
- उन सेवाओं के प्रदर्शन की निगरानी करना आवश्यक है जिनके लिए टीम जिम्मेदार है।
- आग और घटनाओं से निपटने के लिए।
- अगर समझ में नहीं आ रहा है तो घटना को आगे बढ़ाएं।
हम इस लेख में एक इंजीनियर के रूप में कर्तव्य के लिए अच्छी तरह से तैयार होने के बारे में बात करेंगे।
परफेक्ट ड्यूटी इंजीनियर की परिभाषा
यदि युद्ध के माहौल में आपकी पारी में घटनाएं या आग लग जाती है, तो इसका मतलब यह नहीं है कि आप एक भयानक इंजीनियर हैं। एक अच्छा कर्तव्य इंजीनियर बनने के लिए, यदि समस्याएँ आती हैं, तो आपको उन्हें जल्द से जल्द और लागत प्रभावी ढंग से हल करने की आवश्यकता है। एक अच्छी तरह से प्रशिक्षित इंजीनियर समझता है कि वह खुद को कहां संभाल सकता है और स्थिति को और आगे बढ़ाने के लायक कहां है। उसे पता होना चाहिए कि कब और किससे मदद के लिए फोन करना है। यदि संभव हो तो उसे वही समस्याएँ दोहराने की अनुमति नहीं देनी चाहिए।
अनुभव
ड्यूटी के लिए बेहतर तैयारी करने के लिए अपने और टीम के अनुभव का लाभ उठाना मददगार होता है। घटनाओं को संभालने के लिए कौन से दस्तावेज़ पहले से मौजूद हैं, यह देखकर शुरू करना एक अच्छा विचार है। क्या कंपनी या टीम स्तर पर दस्तावेज हैं? यह जानना आवश्यक है कि यह कहाँ है और इससे परिचित होना आवश्यक है। यदि यह मौजूद नहीं है, तो क्या आप इसे बनाने की प्रक्रिया शुरू करने का प्रयास कर सकते हैं? फिर यह जांचने योग्य है कि कौन सी घटनाएं पहले ही हो चुकी हैं और उन्हें ज्ञान भंडार में कैसे दर्ज किया जाता है। क्या कोई पोस्टमॉर्टम है और क्या कुछ कार्य तय किए जाने हैं? क्या आप जानते हैं कि क्या ये कार्य किए जा रहे हैं? यदि स्थिति को ठीक करने के लिए कार्य बनाए जाते हैं, लेकिन लागू नहीं किए जाते हैं, तो यह आपके प्रबंधक के साथ बैठक में इस पर चर्चा करने का एक कारण है। क्या आप जानते हैं कि ड्यूटी पर मौजूद इंजीनियर के कर्तव्यों को दर्ज किया जाता है? वे किसके लिए जिम्मेदार हैं और क्या नहीं? अगर ऐसा कोई दस्तावेज या समझ नहीं है, तो पूरी टीम के लिए एक होना मददगार होगा।
औजार
ऑन-ड्यूटी इंजीनियर के लिए टूलकिट विशिष्ट है और डेवलपर के दैनिक टूलकिट से कुछ अलग है। अग्निशमन के दौरान उत्पन्न होने वाले मुख्य कार्य वे हैं जिन्हें मौजूदा प्रश्नों द्वारा हल नहीं किया जा सकता है आइए इन उपकरणों को अधिक विस्तार से देखें:
- ड्यूटीमैन के लिए प्राथमिक तकनीकी उपकरण, जिसकी मदद से आप कई समस्याओं को हल कर सकते हैं, बैश है। यदि इस सुंदर उपकरण का ज्ञान अभी तक आपके शस्त्रागार में नहीं है - क्रैश कोर्स में से किसी एक का उपयोग करें (
- अक्सर फायर मोड में, आपको उत्पाद डेटाबेस के साथ कुछ संचालन करने की आवश्यकता होती है। टर्मिनल के माध्यम से डेटाबेस के साथ काम करने का कौशल - PostgreSQL के लिए psql या MongoDB के लिए मदद करेगा . ये उपकरण उदाहरण के रूप में दिए गए हैं, आप अपना खुद का डेटाबेस खोज सकते हैं। कई डेटाबेस के लिए, काम करने के लिए दृश्य उपकरण हैं, लेकिन टर्मिनल हर जगह उपलब्ध है, इसके लिए न्यूनतम इंटरनेट की आवश्यकता होती है, और यह बहुत लचीला होता है। फायर मोड के लिए, यह बहुत उपयोगी हो सकता है।
- कर्ल एक उपकरण है जो आपको काफी संख्या में प्रश्न पूछने की अनुमति देगा, और जब बैश के ज्ञान के साथ संयुक्त हो जाएगा, तो आप लगभग सर्वशक्तिमान बन जाएंगे।
यह बहुत उपयोगी होगा यदि आपके पास आग लगने के समय तैयार लिपियों का एक सेट है। उन्हें यथासंभव सरल और सीधा होना चाहिए। हां, आप शायद उन्हें बहुत जल्दी लिख सकते हैं, लेकिन जब आपके पास सीमित समय होता है, तो एक तैयार सेट होना बहुत अच्छा होता है जो आपको केवल दुर्घटना के बारे में सोचने की अनुमति देता है, न कि उसी बांधने को कैसे लागू किया जाए। नीचे दी गई लिपियाँ ऐसी लिपियों की संभावित संरचना का प्रतिनिधित्व मात्र हैं। बेशक, घटना से पहले आपके कोड का परीक्षण किया जाना चाहिए और जितना संभव हो उतना सरल और सीधा होना चाहिए। निम्नलिखित लिपियों का होना सहायक है: एक स्क्रिप्ट जो प्रदान किए गए डेटा से एक फ़ाइल उत्पन्न करती है। इन्हें अन्य आदेशों से या एक स्वतंत्र अनुरोध करके प्राप्त किया जा सकता है। पायथन में ऐसी स्क्रिप्ट का एक उदाहरण नीचे दिखाया गया है।
import csv def modify(filename): tmpFile = "tmp.csv" # Reading file with data and creation of output file with open(filename, "r") as file, open(tmpFile, "w") as outFile: # Create reader for initial file reader = csv.reader(file, delimiter=',') # Create writer for output file writer = csv.writer(outFile, delimiter=',') # Read header line header = next(reader) # Write header line writer.writerow(header) # Process initial file line by line for row in reader: colValues = [] # Process each column of each line for col in row: # Let for example transform all columns to lowercase colValues.append(col.lower()) # Write modified line to final file writer.writerow(colValues) filename = 'sample_data.csv' modify(filename)
एक स्क्रिप्ट जो निर्दिष्ट समांतरता के साथ आवश्यक समापन बिंदुओं को कॉल करेगी। यह कुछ भी जटिल नहीं होना चाहिए। नीचे एक साधारण जावास्क्रिप्ट कोड का एक उदाहरण दिया गया है जो निर्दिष्ट समांतरता के साथ एक sh फ़ाइल उत्पन्न करेगा जो इसमें आपकी सहायता कर सकता है। हां, हमारे यहां परिणाम प्रबंधन नहीं है, लेकिन इसकी हमेशा आवश्यकता नहीं होती है, और यदि आवश्यक हो तो आप परिणाम प्रबंधन संस्करण के साथ अपने टूलकिट को संशोधित कर सकते हैं। उदाहरण के लिए, हमारे पास एक फ़ाइल है जो संपूर्ण डेटा को पढ़ती और लिखती है, लेकिन आप बड़ी फ़ाइलों के लिए स्ट्रीम स्क्रिप्ट बना सकते हैं।
const fs = require('fs'); const initialFilePath = 'sample_data.csv'; const outputFilePath = 'sample_script.sh'; const amountOfParallelRequests = 5; // Remember about the throughput and the bandwidth of your services const delimiterForCSV = ','; // Read the initial file and split it by lines // You could transform it to an object if it's relevant to your situation let initialFile = fs.readFileSync(initialFilePath).toString().split('\n'); // Prepare boilerplate for sh script let outputString = '#!/bin/bash\n\n'; // Write data with parallel execution // Skip header for CSV // The code for parallel requests was received from //serverfault.com/questions/456490/execute-curl-requests-in-parallel-in-bash // and you could implement your version instead for (let i = 1; i < initialFile.length; i++){ let line = initialFile[i]; if (!line) { continue; } let processedLine = line.split(delimiterForCSV); // We don't implement processing of errors here // Let's suggest that the necessary for request value lies in second column let desiredValue = processedLine[1]; if (desiredValue === undefined) { console.error('We have a trouble ' + line); } outputString += `curl -s -o foo //example.com/file${desiredValue} && echo "done with ${desiredValue}" &\n`; if (i % amountOfParallelRequests === 0 || i === initialFile.length - 1) { outputString += '\nwait\n\n'; } } fs.writeFileSync(outputFilePath, outputString); // Indicate the success console.log('Success');
एक स्क्रिप्ट जो किसी डेटाबेस या सेवा से कुछ प्राप्त करती है और परिवर्तित परिणाम को वापस रखती है या शायद किसी अन्य समापन बिंदु को कॉल करती है। मेरा सुझाव है कि इसे स्वयं लागू करें, प्राधिकरण और उपयुक्त उपयोग परिदृश्यों के बारे में न भूलें।
ज्ञान
उपकरण और अनुभव के अलावा, जब आप ड्यूटी पर जाते हैं तो एक निश्चित मात्रा में ज्ञान सहायक होता है। मैं आपकी सेवाओं के लॉग और मेट्रिक्स के बारे में जानना चाहता हूं। वे कहाँ जाते हैं और आप वहाँ कैसे पहुँचते हैं? क्या आपको पता होगा कि इन उपकरणों का उपयोग कैसे किया जाता है? जब आपको किसी ऑन-कॉल सेवा से रात में कॉल आती है जो आपको बताती है कि आपकी सेवा बंद है - यह आपके हित में है कि आप तुरंत पता लगा लें कि क्या गलत हो रहा है। ऐसा करने के लिए, आपको सटीक रूप से यह जानना होगा कि आपके मेट्रिक्स और लॉग कहाँ संग्रहीत हैं और पहले क्या देखना है। अलर्ट कैसे स्थगित करें? घटना का विश्लेषण करने के बाद, अक्सर यह सामने आता है कि वर्तमान दुर्घटना सुबह की प्रतीक्षा कर रही है, इसलिए यह समझना अच्छा है कि अलर्ट को कैसे स्थगित किया जाए। बंद करने के लिए नहीं, क्योंकि कुछ परिचालनों के मामले में आपको फिर से अधिसूचित किया जाएगा, लेकिन स्थगित करने के लिए ठीक है। जैसे ही आप अपना सामान्य कार्य दिवस शुरू करते हैं, आपको स्थिति से निपटने और उसे ठीक करने या अलर्ट करने के लिए याद रखना चाहिए। संपर्क कहां हैं या आप सहकर्मियों या अन्य टीमों के सदस्यों के साथ कैसे संपर्क करते हैं? आपके दिमाग में एक स्पष्ट उपकरण या ज्ञान होना चाहिए - जो उस स्थिति के बारे में समझता/जानता है जब वह हुआ था। विशेषज्ञ आपको घटना को सुलझाने में मदद कर सकते हैं, और हितधारकों को यह जानना होगा कि कुछ गलत हो रहा है। आपके पास उनके संपर्कों, आदर्श रूप से उनके फोन तक पहुंच होनी चाहिए, क्योंकि बहुत से लोग व्यावसायिक घंटों के बाहर कार्यालय चैट से सूचनाएं बंद कर देते हैं। आप उत्पादन/डेटाबेस तक कैसे पहुँच प्राप्त करते हैं और पहुँच स्तर मौजूद होने पर पहुँच कैसे बढ़ाते हैं? यदि आपके पास पहुंच नहीं है, तो आपको यह जानना होगा कि आप किसके पास जाना चाहते हैं या अपनी इच्छित पहुंच प्राप्त करने के लिए क्या करना है। आप कोड को जल्दी से उत्पादन में कैसे प्राप्त करते हैं? कभी-कभी समस्याओं को उत्पादन में सेवा कोड में त्वरित परिवर्तन की आवश्यकता होती है। सामान्य तौर पर, इसे ठीक ही बुरा व्यवहार माना जाता है, लेकिन अक्सर आपात स्थिति में ऐसा नहीं होता है। कभी-कभी आप लंबे E2E परीक्षणों की प्रतीक्षा नहीं करना चाहते हैं, लेकिन कोड को जल्दी से उत्पादन वातावरण में लाने की आवश्यकता होती है। मैं चाहता हूं कि आप समझें कि यह कैसे करना है। डेटाबेस में कौन सा डेटा स्टोर किया जाता है? क्या उत्पाद के भीतर और सेवाओं के बीच डेटा संचलन की कोई योजना है? यदि आपको डेटाबेस के साथ बातचीत करने की आवश्यकता है, तो यह जानना अच्छा है कि किसी विशेष सेवा में डेटा कैसे व्यवस्थित किया जाता है, यह कहां से आता है, और इसका उपयोग कौन करता है। यह आपको समस्याओं से निपटने की अनुमति देगा, यदि कोई हो, तो जल्द ही। उपकरण और अनुभव के अलावा, जब आप ड्यूटी पर जाते हैं तो एक निश्चित मात्रा में ज्ञान सहायक होता है। मैं आपकी सेवाओं के लॉग और मेट्रिक्स के बारे में जानना चाहता हूं। वे कहाँ जाते हैं, और आप वहाँ कैसे पहुँचते हैं? क्या आप इन उपकरणों का उपयोग करना जानते हैं? जब आपको किसी ऑन-कॉल सेवा से रात में कॉल आती है जो आपको बताती है कि आपकी सेवा बंद है - यह आपके हित में है कि आप तुरंत पता लगा लें कि क्या गलत हो रहा है। ऐसा करने के लिए, आपको सटीक रूप से यह जानना होगा कि आपके मेट्रिक्स और लॉग कहाँ संग्रहीत हैं और पहले क्या देखना है। अलर्ट कैसे स्थगित करें? घटना का विश्लेषण करने के बाद, अक्सर यह सामने आता है कि हाल ही में दुर्घटना सुबह की प्रतीक्षा कर रही है, इसलिए यह समझना अच्छा है कि अलर्ट को कैसे स्थगित किया जाए। बंद करने के लिए नहीं, क्योंकि, कुछ कार्यों के मामले में, आपको फिर से सूचित किया जाएगा, लेकिन ठीक स्थगित करने के लिए। यह सबसे अच्छा होगा यदि आप अपना सामान्य कार्य दिवस शुरू करते ही स्थिति से निपटने और स्थिति को ठीक करने या अलर्ट करने के लिए याद करते हैं। संपर्क कहां हैं, या आप सहकर्मियों या अन्य टीमों के सदस्यों के साथ कैसे संपर्क करते हैं? आपके दिमाग में एक सटीक उपकरण या ज्ञान होना चाहिए - जो उस स्थिति के बारे में समझता/जानता है जब यह हुआ था। विशेषज्ञ आपको घटना को सुलझाने में मदद कर सकते हैं, और हितधारकों को यह जानना होगा कि कुछ गलत हो रहा है। आपके पास उनके संपर्कों, आदर्श रूप से उनके फोन तक पहुंच होनी चाहिए, क्योंकि बहुत से लोग व्यावसायिक घंटों के बाहर कार्यालय चैट से सूचनाएं बंद कर देते हैं। आप उत्पादन/डेटाबेस तक कैसे पहुँच प्राप्त करते हैं और पहुँच स्तर मौजूद होने पर पहुँच कैसे बढ़ाते हैं? यदि आपको पहुंच की आवश्यकता है, तो आपको यह जानना होगा कि आप किसके पास जाना चाहते हैं या अपनी इच्छित पहुंच प्राप्त करने के लिए क्या करना है। आप कोड को जल्दी से उत्पादन में कैसे प्राप्त करते हैं? कभी-कभी समस्याओं को उत्पादन में सेवा कोड में त्वरित परिवर्तन की आवश्यकता होती है। सामान्य तौर पर, इसे ठीक ही बुरा व्यवहार माना जाता है, लेकिन अक्सर आपात स्थिति में ऐसा नहीं होता है। कभी-कभी आप लंबे E2E परीक्षणों से पहले कोड को उत्पादन वातावरण में जल्दी से प्राप्त करना चाहते हैं। मैं चाहता हूं कि आप समझें कि यह कैसे करना है। डेटाबेस में कौन सा डेटा स्टोर किया जाता है? क्या उत्पाद के भीतर और सेवाओं के बीच डेटा संचलन की कोई योजना है? यदि आपको डेटाबेस के साथ बातचीत करने की आवश्यकता है, तो यह जानना अच्छा है कि किसी विशेष सेवा में डेटा कैसे व्यवस्थित किया जाता है, यह कहां से आता है, और इसका उपयोग कौन करता है। यह आपको समस्याओं से निपटने की अनुमति देगा, यदि कोई हो, तो जल्द ही।
निष्कर्ष
यहां तक कि एक उत्कृष्ट इंजीनियरिंग संस्कृति वाली कंपनियों और टीमों में, ऑन-ड्यूटी दुर्घटनाएं और आग लगती हैं। इससे बचने के लिए, टीम को मौजूदा प्रक्रियाओं और उत्पादों को बेहतर बनाने के लिए हर संभव प्रयास करना चाहिए। फिर भी, प्रत्येक इंजीनियर को भी तैयार रहना चाहिए कि एक दुर्घटना होगी और उससे तत्काल निपटना होगा। ऐसा करने के लिए, यह सभी संचित व्यक्तिगत और टीम अनुभव का उपयोग करने के लायक है। संगठन और सेवाओं के बारे में जानना और अपने टूलकिट में विश्वास होना जानने योग्य है।
उपयोगी कड़ियाँ