माइक्रोसर्विसेस ट्यूटोरियल: क्या है, Archiव्याख्यान और उदाहरण

⚡ स्मार्ट सारांश

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

  • 🧩 मूल अवधारणा: माइक्रोसेवाएं एक एप्लिकेशन को एकल-कार्य वाले, स्वतंत्र रूप से परिनियोजित किए जा सकने वाले मॉड्यूल में विभाजित करती हैं, जिनमें से प्रत्येक का स्वामित्व 5 से 10 डेवलपर्स की एक छोटी टीम के पास होता है।
  • 📦 अखंड विरोधाभास: एक मोनोलिथिक एप्लिकेशन सभी सुविधाओं को एक ही सर्वर पर एक पैकेज में बंडल करता है, इसलिए स्केलिंग का मतलब कई पूर्ण प्रतियां चलाना है।
  • 🏗️ माइक्रोसर्विस Archiटेक्चर: प्रत्येक सेवा एक व्यावसायिक क्षमता को संभालती है, अपने स्वयं के इंस्टेंस पर चलती है, और हल्के, स्टेटलेस प्रोटोकॉल के माध्यम से संचार करती है।
  • फेडरेटेड डेटा: प्रत्येक माइक्रोसर्विस का अपना डेटा स्टोर होता है, इसलिए एक सर्विस के डेटा मॉडल में बदलाव से अन्य सर्विस प्रभावित नहीं होती हैं।
  • उपकरण और पद्धतियाँ: उपकरण जैसे WireMockडॉकर और हिस्ट्रिक्स परीक्षण, परिनियोजन और दोष सहिष्णुता का समर्थन करते हैं; प्रत्येक सेवा को उसके अपने बिल्ड के साथ स्टेटलेस रखें।

माइक्रोसर्विसेस ट्यूटोरियल

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

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

"माइक्रो" शब्द का तात्पर्य माइक्रोसर्विस के आकार से है, जिसे एक ही विकास टीम (5 से 10 डेवलपर्स) द्वारा प्रबंधित किया जा सकता है। इस पद्धति में, बड़े अनुप्रयोगों को सबसे छोटी स्वतंत्र इकाइयों में विभाजित किया जाता है।

मोनोलिथिक क्या है? Archiटेक्चर?

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

अखंड Archiईकॉमर्स एप्लीकेशन की तकनीक

अखंड Archiईकॉमर्स एप्लीकेशन की तकनीक

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

माइक्रोसर्विस क्या है? Archiटेक्चर?

माइक्रोसर्विस Archiटेक्चर एक आर्किटेक्चरल डेवलपमेंट स्टाइल है जो किसी बिजनेस डोमेन के लिए विकसित छोटी स्वायत्त सेवाओं के संग्रह के रूप में एप्लिकेशन बनाने की अनुमति देता है। यह संरचनात्मक शैली वास्तुकला का एक प्रकार है जो एप्लिकेशन को शिथिल रूप से युग्मित सेवा संग्रह के रूप में व्यवस्थित करने में मदद करता है। माइक्रोसर्विस Archiटेक्चर में बारीक सेवाएं और हल्के प्रोटोकॉल शामिल हैं।

आइए माइक्रोसर्विस आर्किटेक्चर के साथ विकसित एक ई-कॉमर्स एप्लिकेशन का उदाहरण लेते हैं। इस माइक्रोसर्विस आर्किटेक्चर उदाहरण में, प्रत्येक माइक्रोसर्विस एक ही व्यावसायिक क्षमता पर केंद्रित है। खोज, रेटिंग और Revव्यू और पेमेंट, दोनों के अपने-अपने इंस्टेंस (सर्वर) हैं और वे एक दूसरे से संवाद करते हैं।

Microservices Archiटेक्चर

Microservices Archiटेक्चर

अखंड में Archiसंरचना में, सभी घटक एक ही मॉड्यूल में समाहित हो जाते हैं। लेकिन माइक्रोसेवाओं में Archiसंरचना के अनुसार, वे अलग-अलग मॉड्यूल (माइक्रोसेवाएं) में फैले हुए हैं जो एक दूसरे के साथ संवाद करते हैं, जैसा कि ऊपर दिए गए माइक्रोसेवाओं के उदाहरण में दिखाया गया है।

माइक्रोसर्विस के बीच संचार एक स्टेटलेस संचार है जहाँ अनुरोध और प्रतिक्रिया की प्रत्येक जोड़ी स्वतंत्र होती है। इसलिए, माइक्रोसर्विस आसानी से संचार कर सकते हैं। माइक्रोसर्विस में Archiइस संरचना में, डेटा को एकीकृत किया गया है। प्रत्येक माइक्रोसर्विस का अपना अलग डेटा स्टोर है।

माइक्रोसर्विसेज बनाम मोनोलिथिक Archiटेक्चर

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

माइक्रोसर्विस चुनौतियाँ

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

SOA बनाम माइक्रोसर्विसेज

SOA सेवाओं को संगठन में एक रजिस्ट्री द्वारा बनाए रखा जाता है जो एक निर्देशिका सूची के रूप में कार्य करती है। अनुप्रयोगों को रजिस्ट्री में सेवाओं को खोजना और सेवा को लागू करना होता है। दूसरे शब्दों में, SOA के यह एक ऑर्केस्ट्रा की तरह है जहां प्रत्येक कलाकार अपने वाद्ययंत्र के साथ प्रदर्शन कर रहा है जबकि संगीत निर्देशक सभी को निर्देश दे रहा है।

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

प्राचलSOA केMicroservices
डिजाइन प्रकारSOA में, सॉफ्टवेयर घटकों को सेवाओं के रूप में उपयोग के लिए बाहरी दुनिया के सामने रखा जाता है।माइक्रो सर्विस SOA का एक भाग है। यह SOA का कार्यान्वयन है।
निर्भरताव्यावसायिक इकाइयाँ आश्रित हैं।वे एक दूसरे से स्वतंत्र हैं।
सॉफ्टवेयर का आकारइस सॉफ्टवेयर का आकार किसी भी पारंपरिक सॉफ्टवेयर से बड़ा है।माइक्रोसर्विसेज में सॉफ्टवेयर का आकार हमेशा छोटा होता है।
प्रौद्योगिकी ढेरमाइक्रोसर्विस की तुलना में प्रौद्योगिकी स्टैक कम है।माइक्रोसर्विस प्रौद्योगिकी स्टैक बहुत बड़ा हो सकता है।
आवेदन की प्रकृतियह एक अखंड संरचना वाला व्यक्ति है।यह फुल स्टैक सिस्टम है।
स्वतंत्र और फोकसSOA अनुप्रयोग अनेक व्यावसायिक कार्य करने के लिए बनाए गए हैं।वे एक ही व्यावसायिक कार्य करने के लिए बनाए गए हैं।
तैनातीतैनाती की प्रक्रिया में काफी समय लगता है।तैनाती सरल और कम समय लेने वाली है।
लागत प्रभावशीलताअधिक किफ़ायती।Less प्रभावी लागत।
अनुमापकताLess माइक्रोसर्विसेज की तुलना में.अत्यधिक स्केलेबल।
व्यापार का तर्कबिजनेस लॉजिक कंपोनेंट्स को एक ही सर्विस डोमेन के अंदर स्टोर किया जाता है, जिसमें सरल वायर प्रोटोकॉल (XML या JSON के साथ HTTP) और SDK/क्लाइंट के साथ API संचालित होते हैं।बिजनेस लॉजिक विभिन्न डोमेन में मौजूद हो सकता है, जिसमें सेवाओं के बीच एंटरप्राइज सर्विस बस जैसी परतें (मिडिलवेयर) होती हैं।

माइक्रोसर्विसेज उपकरण

1) वायरमॉक: माइक्रोसर्विसेस का परीक्षण

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

डाउनलोड लिंक: http://wiremock.org/

2) डॉकर

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

डाउनलोड लिंक: https://www.docker.com/

3) हिस्ट्रिक्स

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

लिंक डाउनलोड करें: https://github.com/Netflix/Hystrix

माइक्रोसर्विसेज के सर्वोत्तम अभ्यास Archiटेक्चर

  • प्रत्येक माइक्रोसर्विस के लिए अलग डेटा स्टोर।
  • कोड को परिपक्वता के समान स्तर पर रखें।
  • प्रत्येक माइक्रोसर्विस के लिए अलग-अलग बिल्ड।
  • प्रत्येक सर्वर को हमेशा स्टेटलेस मानें।

अक्सर पूछे जाने वाले प्रश्न

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

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

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

बड़ी प्रौद्योगिकी कंपनियां जैसे कि Netflix, Amazon, उबेर, और Spotify स्वतंत्र रूप से स्केल करने और बार-बार डिप्लॉय करने के लिए माइक्रोसेवाओं का उपयोग करें। यह दृष्टिकोण उन हाई-ट्रैफ़िक, क्लाउड-नेटिव एप्लिकेशन के लिए उपयुक्त है जिन्हें तेज़, पृथक रिलीज़ की आवश्यकता होती है।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: