𝗪𝗵𝘆 𝗪𝗲 𝗠𝗼𝘃𝗲𝗱 𝗕𝗮𝗰𝗸 𝘁𝗼 𝗮 𝗠𝗼𝗱𝘂𝗹𝗮𝗿 𝗠𝗼𝗻𝗼𝗹𝗶𝘁𝗵 हम वापस मॉड्यूलर मोनोलिथ (Modular Monolith) पर क्यों लौटे
सॉफ्टवेयर टीमें अपनी रणनीति बदल रही हैं। कई टीमों ने ऐप्स को माइक्रोसर्विसेज (microservices) में तोड़ने में सालों बिताए। अब, वे उन टुकड़ों को वापस एक साथ जोड़ रही हैं। वे पुराने, अव्यवस्थित मोनोलिथ (monoliths) नहीं बना रहे हैं। वे मॉड्यूलर मोनोलिथ बना रहे हैं।
माइक्रोसर्विसेज छिपी हुई लागत (hidden costs) पैदा करती हैं। डिस्ट्रिब्यूटेड सिस्टम (distributed systems) भारी जटिलता बढ़ाते हैं। कई टीमें केवल हाइप (hype) के कारण माइक्रोसर्विसेज अपनाती हैं, न कि इसलिए कि उन्हें बड़े पैमाने (scale) की आवश्यकता है। यदि आपकी टीम छोटी है, तो माइक्रोसर्विसेज आपकी गति को धीमा कर सकती हैं।
एक मॉड्यूलर मोनोलिथ आपको दोनों दुनियाओं का सर्वश्रेष्ठ अनुभव देता है। यह एक ही डिप्लॉय करने योग्य यूनिट (deployable unit) के रूप में रहता है, लेकिन कोड को सख्त मॉड्यूल्स में व्यवस्थित किया जाता है। आपको डिस्ट्रिब्यूटेड सिस्टम चलाने की उच्च लागत के बिना स्पष्ट सीमाएं (clear boundaries) मिलती हैं।
दोनों दृष्टिकोणों की तुलना करें:
• डिप्लॉयमेंट (Deployment): मोनोलिथ एक यूनिट का उपयोग करते हैं। माइक्रोसर्विसेज कई का उपयोग करती हैं। • सीमाएं (Boundaries): मोनोलिथ सख्त कोड नियमों का उपयोग करते हैं। माइक्रोसर्विसेज नेटवर्क का उपयोग करती हैं। • संचार (Communication): मोनोलिथ सरल फंक्शन कॉल्स (function calls) का उपयोग करते हैं। माइक्रोसर्विसेज नेटवर्क कॉल्स का उपयोग करती हैं। • ओवरहेड (Overhead): मोनोलिथ की परिचालन लागत (operational costs) कम होती है। माइक्रोसर्विसेज की लागत अधिक होती है।
आपको मॉड्यूलर मोनोलिथ कब चुनना चाहिए?
- आपकी टीम में 50 से कम इंजीनियर हैं।
- आपको क्लाउड इंफ्रास्ट्रक्चर लागत कम करने की आवश्यकता है।
- आप डिबगिंग (debugging) और टेस्टिंग को सरल बनाना चाहते हैं।
- आपके सर्विसेज़ को वैसे भी अक्सर एक साथ डिप्लॉय करने की आवश्यकता होती है।
वास्तविक कंपनियां पहले से ही ऐसा कर रही हैं। Shopify लाखों व्यापारियों को प्रबंधित करने के लिए मॉड्यूलर दृष्टिकोण का उपयोग करता है। Amazon Prime Video ने एक विशिष्ट वर्कलोड को माइक्रोसर्विसेज से वापस मोनोलिथ में स्थानांतरित कर दिया। उन्होंने इंफ्रास्ट्रक्चर लागत में 90% की कमी देखी।
यदि आपकी टीम छोटी है, तो Netflix के स्केल के लिए निर्माण न करें। मॉड्यूलर तरीके से शुरुआत करें। किसी सर्विस को तभी अलग (extract) करें जब आपका डेटा दिखाए कि आपको वास्तव में इसकी आवश्यकता है।
यह देखने के लिए इस चेकलिस्ट का उपयोग करें कि क्या आपको एकीकरण (consolidate) करने की आवश्यकता है:
- क्या आप फीचर्स बनाने के बजाय सर्विस कनेक्शन को डिबग करने में अधिक समय बिताते हैं?
- क्या आपका क्लाउड बिल आपके उपयोगकर्ताओं की तुलना में तेजी से बढ़ रहा है?
- क्या कई सर्विसेज़ के लिए आपके पास 5 से कम DevOps इंजीनियर हैं?
- क्या इंजीनियर बग खोजने के लिए 3 या अधिक सर्विसेज़ में एक रिक्वेस्ट को ट्रेस (trace) कर रहे हैं?
यदि आपने 'हाँ' में उत्तर दिया है, तो मॉड्यूलर मोनोलिथ संभवतः सही कदम है।
Optional learning community: https://t.me/GyaanSetuAi