𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗧𝗿𝗮𝗱𝗲𝗼𝗳𝗳𝘀
तुम्ही घेतलेला प्रत्येक डिझाइनचा निर्णय दुसऱ्या पर्यायाचा मार्ग बंद करतो. सॉफ्टवेअर ट्रेडऑफ्सवर (trade-offs) आधारित असते. तुम्ही हे निर्णय जाणीवपूर्वक घेतले पाहिजेत. जर तुम्ही तसे केले नाही, तर ते चुकून होतील.
तुम्हाला सामोरे जाणारे सामान्य ट्रेडऑफ्स:
• कार्यक्षमता (Functionality) विरुद्ध कामगिरी (Performance) स्वच्छ कोड (Clean code) अनेकदा संथ चालतो. वेगवान कोड वाचायला कठीण असतो. दिवसातून एकदा चालणाऱ्या बॅच प्रोसेससाठी वाचनीय कोड वापरा. प्रत्येक रिक्वेस्टमध्ये हजारो वेळा चालणाऱ्या पाथसाठी ऑप्टिमाइझ केलेला कोड वापरा.
• लवचिकता (Flexibility) विरुद्ध साधेपणा (Simplicity) गुंतागुंतीचे ॲब्स्ट्रॅक्शन्स (abstractions) कोड समजण्यास कठीण बनवतात. जे काम करते असा सर्वात साधा कोड लिहा. तो असा बनवा की तुम्ही नंतर त्यात विस्तार करू शकाल.
• स्केलेबिलिटी (Scalability) विरुद्ध खर्च (Cost) प्रचंड ट्रॅफिकसाठी डिझाइन करणे आता जास्त खर्चिक ठरू शकते. तुमच्या वाढीचा दर मोजल्यास तुम्हाला निर्णय घेण्यास मदत होईल. जर तुमची वाढ दरमहा २०% होत असेल, तर भविष्यासाठी नियोजन करा. जर तुमच्याकडे भांडवल कमी असेल, तर तुमच्या खर्चावर नियंत्रण ठेवा.
• सुरक्षा (Security) विरुद्ध वापरण्यायोग्यता (Usability) अति सुरक्षा युजर एक्सपिरियन्स (user experience) बिघडू शकते. आम्ही एकदा ॲडमिन टूलसाठी हार्डवेअर टोकन्स अनिवार्य केले होते. लॉगिन यशस्वी होण्याचे प्रमाण ९८% वरून ८४% पर्यंत खाली आले. आपत्कालीन परिस्थितीत इंजिनिअर्सना लॉग इन करता येत नव्हते. आम्ही मोबाईल पुश नोटिफिकेशन्सचा वापर सुरू केला. यश दर पुन्हा ९६% पर्यंत वाढला. जास्तीत जास्त सुरक्षेऐवजी वाजवी सुरक्षेचे ध्येय ठेवा.
चांगले निर्णय कसे घ्यावे:
- तुमच्या ध्येयाबद्दल स्पष्ट राहा.
- अंदाज लावण्याऐवजी डेटा मोजा.
- साध्या उपायाने सुरुवात करा.
- तुमच्याकडे पुरावा असेल तेव्हाच ऑप्टिमाइझ करा.
- तुम्ही तो निर्णय का घेतला याचे दस्तऐवजीकरण (document) करा.
मी एकदा काही मायक्रोसेकंद वाचवण्यासाठी JSON serializer ऑप्टिमाइझ करण्याचा प्रयत्न केला. यामुळे ३०० MB पर्यंत वाढणारा मेमरी लीक (memory leak) झाला. प्रोफायलरने (profiler) दाखवले की नेटवर्क I/O हा खरा अडथळा (bottleneck) होता. कोड पुन्हा लिहिण्यापूर्वी नेहमी प्रोफायलर वापरा.
तांत्रिक कर्ज (Technical debt) ही एक वास्तव आहे. आज घेतलेला शॉर्टकट उद्या वेळ वाया घालवेल. जेव्हा आम्हाला एक विस्कळीत सेवा (messy service) मिळाली, तेव्हा आम्ही मोठा बदल (rewrite) केला नाही. आम्ही लहान, सतत बदल केले. आम्ही टेस्ट कव्हरेज ३०% वरून ७८% पर्यंत वाढवले. यामुळे बग फिक्स करण्याचा वेळ ४ दिवसांवरून १.२ दिवसांवर आला.
ट्रेडऑफ्स कायमस्वरूपी नसतात. तुमच्या निर्णयांचा पुन्हा विचार करा. तुमचे ऑप्टिमायझेशन अजूनही महत्त्वाचे आहे का ते तपासा. जाणीवपूर्वक निर्णय घेतल्यामुळे सिस्टीम प्रत्येक गोष्टीत मध्यम दर्जाची (mediocre) होण्यापासून वाचते.
Source: https://dev.to/lavkeshdwivedi/software-tradeoffs-44e7
Optional learning community: https://t.me/GyaanSetuAi