देव लॉग: सिस्टम की ईमानदारी
ऐसे सिस्टम बनाएं जो सच बोलें।
एक सिस्टम उतना ही अच्छा होता है जितने उसके संकेत (signals) होते हैं। यदि आपकी क्वेरीज़ बर्बादी को छिपाती हैं, आपके हेल्थ चेक झूठ बोलते हैं, या आपके टूल्स काम को दोहराते हैं, तो आपका सिस्टम बेईमान है।
मैंने पूरा दिन चार अलग-अलग तकनीकी विषयों पर काम करते हुए बिताया। प्रत्येक एक ही विषय का अनुसरण करता है: सिस्टम को ईमानदार बनाना।
- डेटाबेस परफॉरमेंस (Database Performance) वह डेटा लाना बंद करें जिसका आप उपयोग नहीं करते हैं।
- अपने डेवलपमेंट एनवायरनमेंट में N+1 डिटेक्टर का उपयोग करें। यह छिपे हुए lazy-loads को एक स्पष्ट टास्क लिस्ट में बदल देता है।
- अप्रयुक्त (unused) eager loads को हटा दें। यदि आपका व्यू किसी कॉलम का उपयोग नहीं करता है, तो उसे फेच (fetch) न करें।
- प्रति रिक्वेस्ट कांस्टेंट्स (constants) को मेमोइज़ (memoize) करें। एक ही साइकिल में एक ही वैल्यू को बार-बार रीकंप्यूट न करें।
- डैशबोर्ड क्वेरीज़ को ग्रुप करें। बीस छोटी count कॉल्स को एक ग्रुप की गई क्वेरी से बदलें।
- वास्तविक हेल्थ चेक (Real Health Checks) ऐसा चेक जो केवल यह सत्यापित करता है कि कोई कॉन्फ़िगरेशन (config) मौजूद है या नहीं, वह हेल्थ चेक नहीं है। वह एक कॉन्फ़िगरेशन चेक है।
- एक वास्तविक हेल्थ चेक को पहुंचयोग्यता (reachability) सिद्ध करनी चाहिए।
- टारगेट होस्ट और पोर्ट के लिए एक सॉकेट (socket) खोलें।
- TCP, HTTP, या TLS प्रोब्स के बीच स्विच करने के लिए एक कॉन्ट्रैक्ट या इंटरफ़ेस का उपयोग करें।
- प्रत्येक प्रोब को अपने स्वयं के कनेक्शन पर चलाएं। एक धीमी सर्विस को आपके पूरे मॉनिटरिंग टूल को नहीं रोकना चाहिए।
- सुरक्षित AI टूल्स (MCP) जब आप किसी AI एजेंट को अपने सिस्टम का एक्सेस देते हैं, तो आपको यह मान लेना चाहिए कि वह गलतियाँ करेगा।
- Idempotency keys का उपयोग करें। यदि कोई एजेंट किसी रिक्वेस्ट को दोबारा प्रयास (retry) करता है, तो सर्वर को डुप्लिकेट बनाने के बजाय वही परिणाम वापस करना चाहिए।
- बाहर जाते समय व्यक्तिगत डेटा को हटा दें (scrub)। रिस्पॉन्स पाथ को एक पब्लिक बाउंड्री (public boundary) के रूप में मानें।
- टाइप किए गए एरर कोड का उपयोग करें। रॉ स्ट्रिंग्स (raw strings) न भेजें। एक एजेंट को सही ढंग से कार्य करने के लिए "not_found" जैसे स्ट्रक्चर्ड कोड की आवश्यकता होती है।
- पहचान और पासवर्ड रीसेट (Identity and Password Resets) जब आप कई सिस्टम्स को छूते हैं, तो क्रम (order) मायने रखता है।
- यदि पासवर्ड रीसेट कई डायरेक्टरीज़ को प्रभावित करता है, तो सत्य का एक स्रोत (source of truth) चुनें।
- सबसे पहले आधिकारिक (authoritative) डायरेक्टरी में लिखें।
- अनुक्रम (sequence) को दस्तावेज़बद्ध करें। "जब मैंने इसे आज़माया तो यह काम कर गया" किसी विफलता के दौरान सफलता की गारंटी नहीं है।
लक्ष्य दिखावटी फीचर्स बनाना नहीं है। लक्ष्य एक ऐसा सिस्टम बनाना है जो तब भी भरोसेमंद बना रहे जब आप उसे न देख रहे हों।
