माइक्रोसर्विसेज क्या हैं?

Leslie Tsang

Leslie Tsang

December 14, 2022

Technology

स्पष्ट होने के लिए, कोई एक-आकार-सभी-के-लिए-उपयुक्त आर्किटेक्चर नहीं है; कोई सर्वश्रेष्ठ और सबसे खराब आर्किटेक्चर भी नहीं है, केवल आपके व्यवसाय के लिए सबसे उपयुक्त आर्किटेक्चर है।

माइक्रोसर्विसेज का परिचय

माइक्रोसर्विसेज आर्किटेक्चर एक लचीली और स्केलेबल सॉफ्टवेयर आर्किटेक्चर है जिसका उद्देश्य बड़े सॉफ्टवेयर सिस्टम को विकसित, डिप्लॉय और बनाए रखने में आसान बनाना है।

माइक्रोसर्विसेज के पीछे मूल विचार एक बड़े सॉफ्टवेयर सिस्टम को कई, अपेक्षाकृत स्वतंत्र सेवाओं में विभाजित करना है और प्रत्येक सेवा एक एकल कार्यक्षमता पर ध्यान केंद्रित करती है।

माइक्रोसर्विसेज आर्किटेक्चर में सेवाएं अक्सर प्रक्रियाएं होती हैं जो नेटवर्क पर संचार करती हैं और HTTP या gRPC जैसे प्रौद्योगिकी-अज्ञेय प्रोटोकॉल का उपयोग करके एक लक्ष्य को पूरा करती हैं, जो विभिन्न सेवाओं को मांग पर जोड़कर विभिन्न व्यावसायिक आवश्यकताओं को पूरा करना संभव बनाता है।

सॉफ्टवेयर आर्किटेक्चर का विकास

आइए स्टार्टअप आर्किटेक्चर के रूप में मोनोलिथिक आर्किटेक्चर का उपयोग करके शुरू करें। देखें कि समय के साथ व्यवसाय के विकास के साथ विभिन्न आर्किटेक्चर के साथ क्या समस्याएं आती हैं।

मोनोलिथिक आर्किटेक्चर

मोनोलिथिक आर्किटेक्चर को स्व-निहित होने के लिए डिज़ाइन किया गया है, जिसमें एप्लिकेशन के घटक या कार्य मॉड्यूलर एप्लिकेशन की तरह ढीले युग्मित होने के बजाय कसकर युग्मित होते हैं। मोनोलिथिक आर्किटेक्चर का उपयोग करने के कई लाभ हैं, यही कारण है कि कई एप्लिकेशन अभी भी इस विकास प्रतिमान का उपयोग करके बनाए जाते हैं।

एक सामान्य मोनोलिथिक एप्लिकेशन के डिप्लॉयमेंट का अवलोकन। यह डिज़ाइन निस्संदेह डिप्लॉयमेंट को सरल बनाता है, लेकिन रोलिंग अपडेट चुनौतीपूर्ण होते हैं, जो एक मॉड्यूल के विफल होने पर विनाशकारी हो सकता है।

monoliths-deploy.png

उदाहरण के लिए, मोनोलिथिक एप्लिकेशन मॉड्यूलर एप्लिकेशन की तुलना में थ्रूपुट के मामले में बेहतर प्रदर्शन कर सकते हैं। चूंकि एप्लिकेशन को निष्पादित या संकलित करने के लिए प्रत्येक घटक और संबंधित घटक का कोड उपस्थित होना चाहिए, मोनोलिथिक एप्लिकेशन का परीक्षण और डिबग करना आसान हो सकता है।

मोनोलिथिक एप्लिकेशन अतीत में सफल रहे हैं। हालांकि, क्लाउड युग में, जैसे-जैसे अधिक मोनोलिथिक एप्लिकेशन क्लाउड बेस वातावरण में डिप्लॉय किए जा रहे हैं, लोग मोनोलिथिक आर्किटेक्चर से अधिक निराश हो रहे हैं। परिवर्तन चक्र एक साथ जुड़े हुए हैं - एप्लिकेशन के एक छोटे से हिस्से में किए गए परिवर्तन के लिए पूरे मोनोलिथ को पुनः बनाने और डिप्लॉय करने की आवश्यकता होती है।

डेवलपर्स को प्रत्येक अपडेट के बाद पूरे कोडबेस को पुनः संकलित करना होगा और केवल बदले हुए हिस्से को नहीं, बल्कि पूरे मोनोलिथिक एप्लिकेशन को पुनः स्थापित करना होगा। यह निरंतर या नियमित डिप्लॉयमेंट को चुनौतीपूर्ण बनाता है, जो बदले में एप्लिकेशन और टीम की चुस्तता को कम करता है।

monoliths-deploy-scale.png

समय के साथ एक मोनोलिथिक एप्लिकेशन को अच्छी संरचना में मॉड्यूलर बनाए रखना चुनौतीपूर्ण हो सकता है, जो उन संशोधनों को बनाए रखना चुनौतीपूर्ण बनाता है जो केवल एक आंतरिक मॉड्यूल को प्रभावित करना चाहिए। स्केलिंग के लिए पूरे एप्लिकेशन को स्केल करने की आवश्यकता होती है, न कि केवल उन हिस्सों को जिन्हें अधिक संसाधनों की आवश्यकता होती है।

सर्विस-ओरिएंटेड आर्किटेक्चर

सर्विस-ओरिएंटेड आर्किटेक्चर (SOA) एक सॉफ्टवेयर आर्किटेक्चर है जो एक एप्लिकेशन को संदर्भित करता है जो अलग-अलग और ढीले युग्मित सॉफ्टवेयर एजेंट से बना होता है जो एक आवश्यक कार्य करते हैं, सॉफ्टवेयर घटकों को पुनः उपयोग योग्य बनाने के लिए सेवा इंटरफेस का उपयोग करने का एक तरीका परिभाषित करता है। ये इंटरफेस व्यापक संचार प्रोटोकॉल का उपयोग करते हैं, इसलिए उन्हें महत्वपूर्ण एकीकरण की आवश्यकता के बिना नए एप्लिकेशन में जल्दी से जोड़ा जा सकता है।

एक सामान्य SOA डिप्लॉयमेंट का अवलोकन। एकल सेवा विफलता का प्रभाव ऐसे आर्किटेक्चर के साथ प्रभावी रूप से कम हो जाता है और एकल सेवा का पुनरावृत्ति दर बढ़ जाती है।

ऐसा आर्किटेक्चर टीम विस्तार को बेहतर ढंग से प्रबंधित करने के लिए सुसज्जित है, प्रत्येक टीम को विशिष्ट सेवा पर ध्यान केंद्रित करने की अनुमति देता है। टीम को पिछले भारी बोझ से मुक्त करें, ताकि वे एक कार्य पर ध्यान केंद्रित कर सकें और इसे सही ढंग से कर सकें।

SOA-with-ESB-deploy.png

मोनोलिथिक आर्किटेक्चर की तुलना में SOA के निम्नलिखित लाभ:

  • बेहतर रखरखाव: प्रत्येक सेवा एक स्वतंत्र इकाई है, जिससे रोलिंग अपडेट और उन्हें बनाए रखना सरल और अन्य सेवाओं के लिए जोखिम-मुक्त होता है।
  • उच्च विश्वसनीयता: मोनोलिथिक आर्किटेक्चर में उपयोग किए गए बड़े कोड ब्लॉक की तुलना में सेवाओं को डिबग और परीक्षण करना आसान होता है। परिणामस्वरूप, SOA-आधारित उत्पाद अधिक विश्वसनीय हो जाते हैं।
  • समानांतर विकास: एक सर्विस-ओरिएंटेड आर्किटेक्चर विकास प्रक्रिया में समानांतरता को बढ़ावा देता है क्योंकि इसमें परतें होती हैं। स्वतंत्र सेवाओं को एक साथ बनाना और पूरा करना संभव है।

माइक्रोसर्विसेज आर्किटेक्चर

माइक्रोसर्विसेज आर्किटेक्चर SOA का एक रूप है जो एक एप्लिकेशन को बनाने वाले स्वायत्त घटकों की एक श्रृंखला बनाने पर ध्यान केंद्रित करता है। मोनोलिथिक एप्लिकेशन के विपरीत जो एक अविभाज्य संपूर्ण के रूप में बनाए जाते हैं, माइक्रोसर्विसेज एप्लिकेशन कई स्वतंत्र घटकों से बने होते हैं जो APIs के साथ जुड़े होते हैं।

SOA और माइक्रोसर्विसेज के बीच मुख्य अंतर आर्किटेक्चर का दायरा है। माइक्रोसर्विसेज आर्किटेक्चर के विपरीत, जो अलग-अलग सेवाओं पर आधारित है जो स्वतंत्र रूप से कार्य कर सकती हैं, एक SOA मॉडल पूरे संगठन में सेवाओं या मॉड्यूल को साझा और पुनः उपयोग करने की अनुमति देता है। दूसरे शब्दों में, जबकि माइक्रोसर्विसेज एप्लिकेशन पर केंद्रित होते हैं, SOA का एक उद्यम दायरा होता है।

अतिरिक्त अंतर, नीचे दिए गए चार्ट में संक्षेपित हैं:

SOAमाइक्रोसर्विसेज
आर्किटेक्चरसेवाएं उद्यम स्तर पर पुनः उपयोग और साझा की जाती हैंसेवाएं अलग-अलग होती हैं और स्वतंत्र रूप से कार्य करती हैं
ग्रैन्युलैरिटीअपेक्षाकृत बड़ी, मॉड्यूलर सेवाएंछोटी, अधिक लचीली सेवाएं जो व्यवसाय के लिए एक विशिष्ट उद्देश्य या कार्य को पूरा करती हैं
संचारESBAPI
युग्मनसंसाधन साझाकरण/ढीला युग्मनबाउंडेड कॉन्टेक्स्ट
इंटरऑपरेबिलिटीसरल ऑब्जेक्ट एक्सेस प्रोटोकॉल (SOAP), एडवांस्ड मैसेजिंग क्यूइंग प्रोटोकॉल (AMQP) और माइक्रोसॉफ्ट मैसेजिंग क्यूइंग (MMQ) जैसे कई संदेश प्रोटोकॉल का समर्थन करता हैHTTP, प्रतिनिधित्वात्मक राज्य स्थानांतरण (REST) या जावा मैसेजिंग सर्विस (JMS) जैसे हल्के, भाषा-अज्ञेय संदेश प्रोटोकॉल का उपयोग करता है
डेटा प्रशासनघटक साझाकरण के परिणामस्वरूप उद्यम भर में सामान्य डेटा प्रशासनसेवाओं की स्वतंत्र प्रकृति के कारण टीमों के बीच कोई सुसंगत डेटा प्रशासन नहीं होता है
भंडारणएकल डेटा भंडारण परत जो दिए गए एप्लिकेशन के भीतर सभी सेवाओं द्वारा साझा की जाती हैप्रत्येक सेवा के लिए आवश्यकतानुसार स्वतंत्र डेटा सर्वर या डेटाबेस का उपयोग करता है

एक सामान्य माइक्रोसर्विसेज के डिप्लॉयमेंट का अवलोकन

microservice-deploy.png

मोनोलिथिक आर्किटेक्चर और माइक्रोसर्विसेज आर्किटेक्चर के लिए स्केलिंग रणनीतियाँ

Monoliths-and-microservices.png

अधिक विस्तार से पढ़ने के लिए https://martinfowler.com/articles/microservices.html

मोनोलिथिक आर्किटेक्चर की तुलना में, माइक्रोसर्विसेज आर्किटेक्चर पुनरावृत्ति विकास पद्धतियों और एजाइल विधियों के लिए अधिक लचीला भी है। विभिन्न घटकों के बीच ढीले संपर्क के कारण, वे अधिक स्केलेबल और अलग-अलग परीक्षण करने में सक्षम भी हैं। इसके अतिरिक्त, मॉड्यूल के अपने डेटाबेस होते हैं, एक दूसरे के साथ संचार करते हैं, और प्रोग्राम शुरू करने की गति को बढ़ाते हैं।

माइक्रोसर्विसेज की आवश्यकता क्यों है

माइक्रोसर्विसेज का उपयोग करने से विकास वितरण चक्र की प्रभावशीलता में काफी वृद्धि हो सकती है और प्रक्रिया की चुस्तता को बढ़ा सकता है। DevOps और माइक्रोसर्विसेज का संयोजन परिवर्तन और नई सुविधाओं के वितरण को तेज करता है। माइक्रोसर्विसेज को सामान्य बड़े पैमाने के सॉफ्टवेयर विकास परियोजना की तुलना में तेजी से बनाया जा सकता है जिसमें एक मोनोलिथिक एप्लिकेशन शामिल होता है। परिवर्तनों को प्रबंधित करना आसान और तेज होता है।

माइक्रोसर्विसेज में परिवर्तन मोनोलिथिक एप्लिकेशन की तुलना में अधिक तरल और सुचारू होगा। माइक्रोसर्विसेज विकास प्रक्रिया में कोई वॉटरफॉल नहीं होता है, जैसा कि आपके पास एक मोनोलिथिक एप्लिकेशन के साथ होता है। प्रत्येक माइक्रोसर्विसेज स्वतंत्र होता है और किसी भी प्रोग्रामिंग भाषा या संरचना के साथ विकसित किया जा सकता है।

माइक्रोसर्विसेज में विफलताएं भी बड़े सिस्टम की तुलना में कम गंभीर होती हैं। एक मोनोलिथिक एप्लिकेशन में एक क्षेत्र में विफलता आमतौर पर पूरे सिस्टम पर महत्वपूर्ण नकारात्मक प्रभाव डालती है। माइक्रोसर्विसेज डिज़ाइन में, समस्याओं को अधिक तेजी से और आसानी से हल किया जा सकता है। आप इसे पहचानते हैं, इसे अलग रखते हैं, और इसके लिए क्षतिपूर्ति करते हैं। यदि आपका आर्किटेक्चर माइक्रोसर्विसेज का उपयोग करता है, तो आप प्रदर्शन बाधा को दूर करने के लिए माइक्रोसर्विसेज को स्केल कर सकते हैं। एक मोनोलिथिक एप्लिकेशन के परिचालन वॉटरफॉल से बचा जा सकता है दोषपूर्ण माइक्रोसर्विसेज का एक नया संस्करण तुरंत बनाकर।

माइक्रोसर्विसेज के लाभ

पारंपरिक आर्किटेक्चर की तुलना में माइक्रोसर्विसेज के लाभ निम्नलिखित हैं।

  • मॉड्यूलरिटी: एक बड़े सॉफ्टवेयर सिस्टम को कई अपेक्षाकृत स्वतंत्र सेवाओं में विभाजित किया जाता है, जिनमें से प्रत्येक एक विशिष्ट कार्य को पूरा करने के लिए जिम्मेदार होता है। यह विभिन्न व्यावसायिक आवश्यकताओं को पूरा करने के लिए विभिन्न सेवाओं को मांग पर जोड़ना संभव बनाता है।
  • स्केलेबिलिटी: माइक्रोसर्विसेज आर्किटेक्चर का एक महत्वपूर्ण लाभ स्केलेबिलिटी है। चूंकि प्रत्येक सेवा अपेक्षाकृत स्वतंत्र होती है, इसलिए वास्तविक आवश्यकताओं के अनुसार प्रत्येक सेवा को गतिशील रूप से स्केल अप या डाउन करना संभव है। यह व्यावसायिक ट्रैफिक में उतार-चढ़ाव का बेहतर सामना करना संभव बनाता है।
  • डिप्लॉयबिलिटी: माइक्रोसर्विसेज आर्किटेक्चर प्रत्येक सेवा को स्वतंत्र रूप से और लचीले ढंग से डिप्लॉय करने की अनुमति देता है। यह नई सुविधाओं को तेजी से डिप्लॉय करने और समग्र सिस्टम को प्रभावित किए बिना तेजी से पुनरावृत्ति करने की अनुमति देता है।
  • विस्तार करने में आसान: माइक्रोसर्विसेज आर्किटेक्चर प्रत्येक सेवा को एकल जिम्मेदारियों और कार्यों से संपन्न करता है। ऐसे आर्किटेक्चर के तहत, माइक्रोसर्विसेज को पारंपरिक सॉफ्टवेयर आर्किटेक्चर में मॉड्यूल की तुलना में अपडेट और पुनः कॉन्फ़िगर करना आसान होता है, और एकल सेवा विफलता का विस्फोट त्रिज्या प्रबंधनीय होता है।
  • रखरखाव में आसान: माइक्रोसर्विसेज आर्किटेक्चर प्रत्येक सेवा को छोटा बनाता है और केवल विशिष्ट कार्य करने के लिए जिम्मेदार होता है। यह इसे बनाए रखना आसान बनाता है और त्रुटि की मरम्मत को तेजी से करने की अनुमति देता है।
  • तकनीकी विविधता: माइक्रोसर्विसेज आर्किटेक्चर प्रत्येक सेवा को एक विशिष्ट प्रौद्योगिकी स्टैक तक सीमित नहीं करता है। सेवाओं के बीच डेटा इंटरैक्शन को मानकीकृत इंटरफेस के माध्यम से प्राप्त किया जा सकता है, और वर्तमान सेवा परिदृश्य के लिए सबसे उपयुक्त प्रौद्योगिकी स्टैक का उपयोग करके सेवा विकास को इष्टतम समाधान प्राप्त करने के लिए किया जा सकता है।

सारांश

सॉफ्टवेयर आर्किटेक्चर बदलती आवश्यकताओं से निपटने के लिए विकसित हुए हैं, अक्सर नई चिंताओं को एकीकृत करते हैं। माइक्रोसर्विसेज आर्किटेक्चर क्लाउड-नेटिव युग में धीरे-धीरे लोकप्रिय हो रहा है। बेहतर माइक्रोसर्विसेज आर्किटेक्चर बनाने के लिए, कृपया APISIX, सर्वश्रेष्ठ API गेटवे, और API7.ai पर जाएं अधिक वाणिज्यिक समर्थन के लिए।

Tags: