आम्ही पुन्हा 'मॉड्युलर मोनोलिथ' (Modular Monolith) कडे का वळलो
सॉफ्टवेअर टीम्स त्यांच्या रणनीतीमध्ये बदल करत आहेत. अनेक टीम्सनी ॲप्सचे 'मायक्रोसर्व्हिसेस' (microservices) मध्ये रूपांतर करण्यासाठी अनेक वर्षे खर्च केली. आता, त्या पुन्हा सर्व भाग एकत्र जोडत आहेत. ते जुने, विस्कळीत 'मोनोलिथ्स' (monoliths) तयार करत नाहीत, तर ते 'मॉड्युलर मोनोलिथ्स' (modular monoliths) तयार करत आहेत.
मायक्रोसर्व्हिसेसमुळे छुपे खर्च वाढतात. डिस्ट्रिब्युटेड सिस्टम्समुळे (Distributed systems) प्रचंड गुंतागुंत निर्माण होते. अनेक टीम्स केवळ प्रसिद्धीच्या (hype) मागे लागून मायक्रोसर्व्हिसेसचा अवलंब करतात, त्यांना खरोखर मोठ्या स्केलची गरज असते म्हणून नाही. जर तुमची टीम लहान असेल, तर मायक्रोसर्व्हिसेस तुमच्या कामाचा वेग कमी करू शकतात.
एक 'मॉड्युलर मोनोलिथ' तुम्हाला दोन्ही जगातील सर्वोत्तम गोष्टी देतो. हे एकच 'डिप्लॉय करण्यायोग्य युनिट' (deployable unit) म्हणून राहते, परंतु कोड कडक मॉड्यूल्समध्ये (strict modules) आयोजित केलेला असतो. यामुळे डिस्ट्रिब्युटेड सिस्टम चालवण्याचा मोठा खर्च न करता तुम्हाला स्पष्ट सीमा (clear boundaries) मिळतात.
दोन्ही पद्धतींची तुलना करा:
• डिप्लॉयमेंट (Deployment): मोनोलिथ्समध्ये एक युनिट वापरले जाते. मायक्रोसर्व्हिसेसमध्ये अनेक युनिट्स वापरली जातात. • सीमा (Boundaries): मोनोलिथ्समध्ये कोडचे कडक नियम वापरले जातात. मायक्रोसर्व्हिसेसमध्ये नेटवर्कचा वापर केला जातो. • संवाद (Communication): मोनोलिथ्समध्ये साध्या 'फंक्शन कॉल्स'चा (function calls) वापर होतो. मायक्रोसर्व्हिसेसमध्ये 'नेटवर्क कॉल्स'चा (network calls) वापर होतो. • ओव्हरहेड (Overhead): मोनोलिथ्सचा ऑपरेशनल खर्च कमी असतो. मायक्रोसर्व्हिसेसचा खर्च जास्त असतो.
तुम्ही 'मॉड्युलर मोनोलिथ' कधी निवडला पाहिजे?
- तुमच्या टीममध्ये ५० पेक्षा कमी इंजिनिअर्स आहेत.
- तुम्हाला क्लाउड इन्फ्रास्ट्रक्चरचा खर्च कमी करायचा आहे.
- तुम्हाला डीबगिंग (debugging) आणि टेस्टिंग (testing) सोपे करायचे आहे.
- तुमच्या सर्व्हिसेसना आधीच अनेकदा एकत्रच डिप्लॉय करावे लागते.
वास्तविक कंपन्या आधीच हे करत आहेत. Shopify लाखो मर्चंट्स व्यवस्थापित करण्यासाठी 'मॉड्युलर अप्रोच' वापरते. Amazon Prime Video ने एक विशिष्ट वर्कलोड मायक्रोसर्व्हिसेसकडून पुन्हा मोनोलिथकडे वळवला. यामुळे त्यांच्या इन्फ्रास्ट्रक्चर खर्चात ९०% घट झाली.
जर तुमची टीम लहान असेल, तर Netflix च्या स्केलसाठी सिस्टीम बनवू नका. मॉड्युलरने सुरुवात करा. जेव्हा तुमचा डेटा स्पष्टपणे सांगेल की तुम्हाला गरज आहे, तेव्हाच एखादी सर्व्हिस वेगळी (extract) करा.
तुम्हाला सिस्टीम एकत्रित (consolidate) करण्याची गरज आहे का, हे पाहण्यासाठी ही चेकलिस्ट वापरा:
- तुम्ही फीचर्स बनवण्यापेक्षा सर्व्हिस कनेक्शन्स डीबग करण्यात जास्त वेळ घालवत आहात का?
- तुमचा क्लाउड बिल तुमच्या युजर्सच्या वाढीपेक्षा वेगाने वाढत आहे का?
- अनेक सर्व्हिसेससाठी तुमच्याकडे ५ पेक्षा कमी DevOps इंजिनिअर्स आहेत का?
- एखादा बग शोधण्यासाठी इंजिनिअर्सना एका रिक्वेस्टचा मागोवा ३ किंवा अधिक सर्व्हिसेसमध्ये घ्यावा लागत आहे का?
जर तुमचे उत्तर 'हो' असेल, तर 'मॉड्युलर मोनोलिथ' हा तुमच्यासाठी योग्य निर्णय असू शकतो.
पर्यायी लर्निंग कम्युनिटी: https://t.me/GyaanSetuAi