लॉग संचय के लाभ | मूल, AI द्वारा अनुवादित
जब मैं बैंक के लिए एक कॉन्ट्रैक्टर के रूप में काम करता था, तो हम एक मल्टी-क्लाउड एप्लिकेशन प्लेटफॉर्म का उपयोग माइक्रोसर्विसेज को सर्व करने के लिए करते थे। उस समय, मैं कंपनी में काम करते हुए लॉग्स एकत्र करने लगा था।
कई साल गुजर गए हैं, और मैं अभी भी इसे अपने काम या सॉफ्टवेयर इंजीनियरिंग के लिए मदद करने का सबसे अच्छा तरीका मानता हूँ। समय के साथ, मेरे लॉग्स डायरेक्टरी में सैकड़ों लॉग फाइलें हैं।
मेरे पास उन लॉग फाइलों के लिए कोई विशिष्ट सबडायरेक्टरी या औपचारिक नाम नहीं हैं। कभी-कभी, मैं बस उस JIRA टास्क के नाम को अपने लॉग फाइल नाम के प्रीफिक्स के रूप में उपयोग करता हूँ या उस फीचर का। फिर मैं सफिक्स में एक नंबर जोड़ता हूँ। यह mutual-fund-1.log, mutual-fund-2.log आदि जैसा होता है। इसका मतलब है कि mutual fund माइक्रोसर्विस में, जब मैं उस माइक्रोसर्विस को चलाता हूँ तो मुझे वह लॉग मिलता है।
कभी-कभी, जब मैं कई क्षेत्रों को सर्व करने वाले प्रोजेक्ट्स पर काम करता हूँ, तो मैं उस देश को सफिक्स के रूप में जोड़ता हूँ, जैसे mutual-fund-cn-1.log, mutual-fund-sg-1.log। लॉग फाइलों के नाम कुछ-कुछ कैजुअल होते हैं। क्योंकि उस समय, मुझे एरर स्टैक्स या आस-पास के फंक्शन कॉलिंग पर ध्यान केंद्रित करना पड़ता था।
प्रोग्राम के लॉग्स महत्वपूर्ण होते हैं। हर कोई जानता है। हालांकि, मैं लॉग्स को सिर्फ कंसोल में देखना और उन्हें छोड़ देना, इसके बजाय लॉग्स को एकत्र करने के महत्व को अधिक बताना चाहता हूँ। जब प्रोजेक्ट चल रहा होता है, तो आपको अधिक सुविधा मिलती है। आपके पास पिछले लॉग्स को ढूँढने का समय होता है। आपको पता चल सकता है कि क्या पहले कोई समान डेटाबेस स्टोर्ड प्रोसीजर कॉलिंग हुई थी। आपको पता चल सकता है कि क्या पहले ही वही एरर हुआ था। आपको याद दिलाना पड़ सकता है कि इस समस्या को पिछली बार कैसे सुलझाया गया था।
एक बड़े प्रोजेक्ट या दसों माइक्रोसर्विसेज में बहुत सारी डिटेल्स होती हैं। और एरर, एक्सेप्शन या समस्याएँ बार-बार होती रहती हैं। लॉग बस एक प्रोग्राम की चलती हुई दस्तावेज़ की तरह होता है। और उन्हें प्रोग्राम द्वारा स्वचालित रूप से बनाया जाता है, बिना किसी मानव द्वारा टाइपिंग के। और डेवलपर्स के लिए, ये लॉग्स पढ़ने योग्य होते हैं। इसलिए, जब कोई नया टास्क शुरू करता है या कोई नया बग फिक्स करता है, तो उसके पास सैकड़ों लॉग्स होते हैं ताकि वह इस नए बग को फिक्स कर सके। आप अकेले नहीं हैं।
हम उन्हें क्यों एकत्र करते हैं? क्योंकि चीजें या ज्ञान आसानी से भूल जाते हैं।
जब कागज का आविष्कार हुआ था, तो मानव सभ्यता में प्रगति हुई थी। और जब कंप्यूटर का आविष्कार हुआ, तो मानव सभ्यता का एक और स्तर आया। कागज पर नोट्स रखना कंप्यूटर में लॉग्स को एकत्र करने जैसा ही है।
न सिर्फ मानवों के लिए, बल्कि AI चैटबॉट्स, LLM टूलिंग के लिए, ये लॉग्स और भी महत्वपूर्ण होते जा रहे हैं। 2022 में स्थापित GreptimeDB, एक डेटाबेस जो ऑब्जर्वेबिलिटी डेटा (मेट्रिक्स, लॉग्स और ट्रेस) के एकीकृत संग्रह और विश्लेषण के लिए है, एक संयोग नहीं है।
मैं पहले क्यों नहीं करता था? जब मैं बड़े बैंकों के लिए कॉन्ट्रैक्टर के रूप में काम करता था, तो मुझे अधिक सहयोग करना पड़ता था और बड़े प्रोजेक्ट्स पर काम करना पड़ता था। उससे पहले, अधिकांश समय स्टार्टअप या मेरे स्टार्टअप के दौरान, मैं अकेले काम करता था। जब मैं LeanCloud में काम करता था, तो मैं लगभग आधे समय LeanChat IM ऐप पर काम करता था।
और जब मैं अधिक औपचारिक कॉर्पोरेट दुनिया में गया, तो प्रोजेक्ट्स का विकास मेरे व्यक्तिगत प्रोजेक्ट या स्टार्टअप प्रोजेक्ट से अलग था। उनके पास SIT, UAT टेस्टिंग वातावरण होते हैं। और प्रोडक्शन वातावरण अक्सर कुछ छोटे टीम साथियों के लिए ही खुला होता है। उनके पास से लॉग्स प्राप्त करना और समस्याओं को सुलझाना लंबा और कुछ हद तक थकाऊ होता है। और एक प्रोजेक्ट चलाना समय लेता है, और Jenkins पाइपलाइन अक्सर आधे घंटे में चलता है।
इसलिए मैं प्रोग्राम को एक मक्खी की तरह नहीं चला या टेस्ट कर सकता। मैं एक कमांड टाइप करके अपने व्यक्तिगत कंप्यूटर से डिप्लॉयमेंट नहीं कर सकता और कोड को सर्वर पर चलाने के लिए अपलोड नहीं कर सकता।
इसलिए यह मुझे लॉग्स को एकत्र करने के लिए प्रेरित करता है ताकि मुझे टास्क्स को संभालने के लिए अधिक संदर्भ मिले। हमें पहले ही शॉट पर समस्याओं को सुलझाना चाहिए। हमें अपने फिक्स को कुछ ही बार में सत्यापित करना चाहिए। हम आसानी से कंपनी के सर्वर या क्लाउड में चल रहे प्रोग्राम के लॉग्स तक नहीं पहुंच सकते, इसलिए हमें उन्हें कॉपी करना चाहिए और स्थानीय लैपटॉप पर सेव करना चाहिए, ताकि विश्लेषण किया जा सके।
और अब, मेरे व्यक्तिगत प्रोजेक्ट्स के लिए, मैं लॉग्स को भी एकत्र करता हूँ। यह एक आदत बन गई है। कुछ वर्षों तक बड़े कंपनियों में काम करने के बाद, मैं अपने प्रोजेक्ट्स को बड़े और लंबे बनाने के लिए अधिक धैर्य या रणनीति रखता हूँ। इसलिए मैं जानता हूँ कि मुझे समय के साथ इन लॉग्स की आवश्यकता होगी।
कुछ लोग कह सकते हैं कि आपको बस सुंदर कोड और एक काम करने वाला प्रोजेक्ट होना चाहिए। आपको लॉग्स या एरर स्टैक ट्रेस को एकत्र करने की आवश्यकता नहीं है। ठीक है। जब हमें एक बग या एक नया फीचर होता है, तो हम प्रोग्राम चलाकर वर्तमान लॉग्स प्राप्त कर सकते हैं। हमें विकास प्रक्रिया के लॉग्स की आवश्यकता नहीं है। वे वैज्ञानिक प्रयोगों के विस्तृत रिकॉर्ड्स की तरह होते हैं। पहले नज़र में यह ठीक लगता है। लेकिन लंबे समय में, अगर एक दिन आप इसे फिर से काम करना चाहते हैं, या इसे साझा करना चाहते हैं, या इसे दूसरों को संभालना चाहते हैं, तो यह अच्छा नहीं हो सकता।
मुझे लगता है कि यहां अच्छे अवसर हो सकते हैं। कंपनियों में, हम हर डेवलपर को अपने एकत्रित लॉग्स साझा करने के लिए प्रोत्साहित क्यों नहीं करते? ओपन सोर्स प्रोजेक्ट्स में हमें यह भी होना चाहिए। हम दूसरों के लॉग्स आकर्षक नहीं लगते क्योंकि हम उन्हें नहीं जानते। हम उन लॉग्स को सेव करने के समय संदर्भ खो देते हैं। और भीतर, बहुत सारे असंबंधित या तुच्छ संदेशों का अंदेशा होता है।
लेकिन लॉग्स को एकत्र करने का प्रयास बहुत तुच्छ है। यह बस हर बार जब हम कुछ लॉग्स देखते हैं, विशेष रूप से एरर लॉग्स, तो कॉपी और पेस्ट करना है। और हम इसे स्वचालित तरीके से क्यों नहीं करते? यह एक अच्छा विचार है कि हर बार जब हम एक प्रोजेक्ट चलाते हैं, तो लॉग्स को एक डायरेक्टरी में रिकॉर्ड करना, जैसे Spring Boot प्रोजेक्ट्स।
दुनिया और भी डिजिटल होती जा रही है, इसलिए डिजिटल प्रोग्राम के लॉग्स को एकत्र करना भौतिक दुनिया में किताबों को एकत्र करने जैसा ही है।