डेव्ह लॉग: सिस्टमची सत्यता
अशी सिस्टम्स तयार करा जी सत्य सांगतात.
सिस्टमची गुणवत्ता तिच्या सिग्नल्सवर (signals) अवलंबून असते. जर तुमच्या क्वेरीज (queries) वाया जाणारी संसाधने लपवत असतील, तुमचे हेल्थ चेक (health checks) खोटे बोलत असतील, किंवा तुमची टूल्स (tools) पुन्हा पुन्हा तेच काम करत असतील, तर तुमची सिस्टम अप्रामाणिक आहे.
मी आजचा दिवस चार वेगवेगळ्या तांत्रिक विषयांवर काम करण्यात घालवला. प्रत्येक विषय एकाच थीमवर आधारित आहे: सिस्टमला सत्यनिष्ठ बनवणे.
१. डेटाबेस परफॉर्मन्स (Database Performance) तुम्ही न वापरता येणारा डेटा फेच (fetch) करणे थांबवा.
- तुमच्या डेव्हलपमेंट एन्व्हायरनमेंटमध्ये (development environment) N+1 डिटेक्टर वापरा. हे लपलेले 'lazy-loads' एका स्पष्ट टास्क लिस्टमध्ये रूपांतरित करते.
- न वापरलेले 'eager loads' काढून टाका. जर तुमच्या व्ह्यूमध्ये (view) एखाद्या कॉलमचा वापर होत नसेल, तर तो फेच करू नका.
- प्रत्येक रिक्वेस्टसाठी कॉन्स्टंट्स (constants) मेमोइझ (memoize) करा. एकाच सायकलमध्ये एकाच व्हॅल्यूची वारंवार गणना करू नका.
- डॅशबोर्ड क्वेरीज ग्रुप करा. वीस लहान 'count calls' ऐवजी एक ग्रुप केलेली क्वेरी वापरा.
२. रिअल हेल्थ चेक (Real Health Checks) एखादी चेक जी फक्त कॉन्फिग (config) अस्तित्वात आहे की नाही हे तपासते, ती हेल्थ चेक नाही. ती केवळ एक 'config check' आहे.
- रिअल हेल्थ चेकने पोहोचण्यायोग्यता (reachability) सिद्ध केली पाहिजे.
- टार्गेट होस्ट (target host) आणि पोर्टला (port) एक सॉकेट (socket) उघडा.
- TCP, HTTP, किंवा TLS प्रोब्स (probes) मध्ये बदल करण्यासाठी कॉन्ट्रॅक्ट किंवा इंटरफेस वापरा.
- प्रत्येक प्रोब स्वतंत्र कनेक्शनवर चालवा. एका संथ (slow) सर्व्हिसमुळे तुमचे संपूर्ण मॉनिटरिंग टूल थांबता कामा नये.
३. सुरक्षित AI टूल्स (MCP) जेव्हा तुम्ही एखाद्या AI एजंटला तुमच्या सिस्टमचा ॲक्सेस देता, तेव्हा त्याने चुका करेल असे गृहीत धरले पाहिजे.
- आयडेम्पोटन्सी कीज (idempotency keys) वापरा. जर एजंटने एखादी रिक्वेस्ट पुन्हा प्रयत्न (retry) केली, तर सर्व्हरने डुप्लिकेट तयार करण्याऐवजी तोच निकाल परत दिला पाहिजे.
- बाहेर पडताना वैयक्तिक डेटा काढून टाका (scrub). रिस्पॉन्स पाथला (response path) एक सार्वजनिक सीमा (public boundary) माना.
- टायप्ड एरर कोड्स (typed error codes) वापरा. रॉ स्ट्रिंग्स (raw strings) पाठवू नका. एजंटला योग्यरित्या काम करण्यासाठी "not_found" सारख्या स्ट्रक्चर्ड कोड्सची गरज असते.
४. आयडेंटिटी आणि पासवर्ड रिसेट (Identity and Password Resets) जेव्हा तुम्ही एकापेक्षा जास्त सिस्टम्सना स्पर्श करता, तेव्हा क्रमाने काम करणे महत्त्वाचे असते.
- जर पासवर्ड रिसेटमुळे अनेक डिरेक्टरीजवर (directories) परिणाम होत असेल, तर एक 'source of truth' निवडा.
- प्रथम अधिकृत (authoritative) डिरेक्टरीमध्ये लिहा.
- क्रियेचा क्रम (sequence) दस्तऐवजीकरण (document) करा. "मी प्रयत्न केला तेव्हा ते काम करत होते" हे अपयशाच्या वेळी यशाची खात्री देऊ शकत नाही.
ध्येय भडक फीचर्स (flashy features) तयार करणे हे नाही. ध्येय अशी सिस्टम तयार करणे आहे जी तुम्ही पाहत नसतानाही विश्वासार्ह राहील.
