माइक्रोसर्विसेस ट्यूटोरियल: क्या है, Archiव्याख्यान और उदाहरण
माइक्रोसर्विसेज क्या हैं?
Microservices एक सेवा-उन्मुख वास्तुकला पैटर्न है जिसमें अनुप्रयोगों को विभिन्न छोटी स्वतंत्र सेवा इकाइयों के संग्रह के रूप में बनाया जाता है। यह एक है सॉफ्टवेयर इंजीनियरिंग यह दृष्टिकोण एक एप्लीकेशन को सुपरिभाषित इंटरफेस के साथ एकल-फ़ंक्शन मॉड्यूल में विघटित करने पर केंद्रित है। इन मॉड्यूल को स्वतंत्र रूप से तैनात किया जा सकता है और छोटी टीमों द्वारा संचालित किया जा सकता है जो सेवा के पूरे जीवनचक्र के मालिक हैं।
"माइक्रो" शब्द एक माइक्रोसर्विस के आकार को संदर्भित करता है जिसे एक ही विकास दल (5 से 10 डेवलपर्स) द्वारा प्रबंधित किया जाना चाहिए। इस पद्धति में, बड़े अनुप्रयोगों को सबसे छोटी स्वतंत्र इकाइयों में विभाजित किया जाता है।
मोनोलिथिक क्या है? Archiटेक्चर?
आम भाषा में आप कह सकते हैं कि मोनोलिथिक आर्किटेक्चर एक बड़े कंटेनर की तरह है जिसमें किसी एप्लिकेशन के सभी सॉफ्टवेयर घटकों को एक पैकेज में रखा जाता है।
आइए मोनोलिथिक आर्किटेक्चर के संदर्भ में ई-कॉमर्स स्टोर के एक उदाहरण पर चर्चा करें।
किसी भी ई-कॉमर्स एप्लिकेशन में कुछ मानक विशेषताएं होती हैं जैसे खोज, Review और रेटिंग, और भुगतान। ये सुविधाएँ ग्राहकों के लिए उनके ब्राउज़र या ऐप का उपयोग करके सुलभ हैं। जब ईकॉमर्स साइट का डेवलपर एप्लिकेशन को तैनात करता है, तो यह एक एकल मोनोलिथिक इकाई होती है। खोज जैसी विभिन्न सुविधाओं के लिए कोड, Review & Ratings, और Payments एक ही सर्वर पर हैं। एप्लिकेशन को स्केल करने के लिए, आपको इन एप्लिकेशन के कई इंस्टेंस (सर्वर) चलाने की आवश्यकता है।
माइक्रोसर्विस क्या है? Archiटेक्चर?
माइक्रोसर्विस Archiटेक्चर एक आर्किटेक्चरल डेवलपमेंट स्टाइल है जो किसी बिजनेस डोमेन के लिए विकसित छोटी स्वायत्त सेवाओं के संग्रह के रूप में एप्लिकेशन बनाने की अनुमति देता है। यह संरचनात्मक शैली वास्तुकला का एक प्रकार है जो एप्लिकेशन को शिथिल रूप से युग्मित सेवा संग्रह के रूप में व्यवस्थित करने में मदद करता है। माइक्रोसर्विस Archiटेक्चर में बारीक सेवाएं और हल्के प्रोटोकॉल शामिल हैं।
आइए माइक्रोसर्विस आर्किटेक्चर के साथ विकसित ई-कॉमर्स एप्लिकेशन का एक उदाहरण लेते हैं। इस माइक्रोसर्विस आर्किटेक्चर उदाहरण में, प्रत्येक माइक्रोसर्विस एकल व्यावसायिक क्षमता पर केंद्रित है। खोज, रेटिंग और Review और Payment प्रत्येक का अपना इंस्टेंस (सर्वर) है और वे एक दूसरे के साथ संचार करते हैं।
अखंड में Archiतकनीक में, सभी घटक एक ही मॉड्यूल में मिल जाते हैं। लेकिन, माइक्रोसर्विस में Archiतकनीक में वे अलग-अलग मॉड्यूल (माइक्रोसर्विस) में फैले होते हैं जो एक दूसरे के साथ संचार करते हैं जैसा कि ऊपर माइक्रोसर्विस उदाहरण में दिखाया गया है।
माइक्रोसर्विस के बीच संचार एक स्टेटलेस संचार है जहाँ अनुरोध और प्रतिक्रिया की प्रत्येक जोड़ी स्वतंत्र होती है। इसलिए, माइक्रोसर्विस आसानी से संचार कर सकते हैं। माइक्रोसर्विस में Archiटेकचर में, डेटा फ़ेडरेटेड है। प्रत्येक माइक्रोसर्विस का अपना अलग डेटा स्टोर होता है। इस में आगे Java माइक्रोसर्विसेस ट्यूटोरियल में, हम माइक्रोसर्विसेस और मोनोलिथिक आर्किटेक्चर के बीच अंतर के बारे में जानेंगे।
माइक्रोसर्विसेज बनाम मोनोलिथिक Archiटेक्चर
Microservices | अखंड Archiटेक्चर |
---|---|
संपूर्ण एप्लिकेशन की प्रत्येक इकाई सबसे छोटी होनी चाहिए, तथा वह एक विशिष्ट व्यावसायिक लक्ष्य को पूरा करने में सक्षम होनी चाहिए। | सभी व्यावसायिक लक्ष्यों के लिए एकल कोड आधार |
सेवा का प्रारंभ अपेक्षाकृत शीघ्र होता है | सेवा शुरू होने में अधिक समय लगता है |
दोष का पता लगाना आसान है। अगर एक सेवा बंद भी हो जाए, तो दूसरी सेवा चलती रहेगी। | फॉल्ट आइसोलेशन मुश्किल है। अगर कोई खास फीचर काम नहीं कर रहा है, तो पूरा सिस्टम डाउन हो जाता है। इस समस्या से निपटने के लिए, एप्लिकेशन को फिर से बनाने, फिर से जांचने और फिर से तैनात करने की जरूरत होती है। |
सभी माइक्रोसर्विसेज को शिथिल रूप से युग्मित किया जाना चाहिए ताकि एक में किए गए परिवर्तन दूसरे को प्रभावित न करें। | मोनोलिथिक आर्किटेक्चर एक दूसरे से बहुत जुड़ा हुआ है। कोड के एक मॉड्यूल में बदलाव दूसरे मॉड्यूल को प्रभावित करता है |
व्यवसाय उन सेवाओं पर अधिक संसाधन लगा सकते हैं जो उच्च ROI उत्पन्न कर रही हैं | चूंकि सेवाएं पृथक नहीं हैं, इसलिए व्यक्तिगत संसाधन आवंटन संभव नहीं है |
अधिक हार्डवेयर संसाधन उस सेवा को आवंटित किए जा सकते हैं जिसका अक्सर उपयोग किया जाता है। ऊपर दिए गए ई-कॉमर्स उदाहरण में, भुगतान की तुलना में अधिक संख्या में उपयोगकर्ता उत्पाद सूची और खोज की जाँच करते हैं। इसलिए, खोज और उत्पाद सूची माइक्रोसर्विस को अधिक संसाधन आवंटित किए जा सकते हैं। | एप्लीकेशन स्केलिंग चुनौतीपूर्ण होने के साथ-साथ बेकार भी है। |
माइक्रोसर्विसेज सदैव सुसंगत और निरंतर उपलब्ध रहती हैं। | विकास उपकरणों पर अत्यधिक बोझ पड़ जाता है क्योंकि प्रक्रिया को शुरू से शुरू करना पड़ता है। |
डेटा फ़ेडरेटेड है। यह व्यक्तिगत माइक्रोसर्विस को अपनी ज़रूरतों के हिसाब से सबसे उपयुक्त डेटा मॉडल अपनाने की अनुमति देता है। | डेटा केन्द्रीकृत है. |
छोटी केंद्रित टीमें। समानांतर और तेज़ विकास | बड़ी टीम और काफी टीम प्रबंधन प्रयास की आवश्यकता है |
एक माइक्रोसर्विस के डेटा मॉडल में परिवर्तन अन्य माइक्रोसर्विसेस को प्रभावित नहीं करता है। | डेटा मॉडल में परिवर्तन से संपूर्ण डेटाबेस प्रभावित होता है |
सुपरिभाषित इंटरफेस का उपयोग करके अन्य माइक्रोसर्विसेज के साथ इंटरैक्ट करता है | लागू नहीं होता |
माइक्रोसर्विसेज इस सिद्धांत पर काम करती हैं कि वे उत्पादों पर ध्यान केंद्रित करती हैं, परियोजनाओं पर नहीं | संपूर्ण परियोजना पर जोर दें |
कोड बेस के बीच कोई क्रॉस-निर्भरता नहीं। आप अलग-अलग माइक्रोसर्विस के लिए अलग-अलग तकनीकों का इस्तेमाल कर सकते हैं। | एक कार्य या कार्यक्रम दूसरे पर निर्भर करता है। |
माइक्रोसर्विस चुनौतियाँ
- माइक्रोसर्विसेज एक दूसरे पर निर्भर हैं, और उन्हें एक दूसरे के साथ संवाद करना होगा।
- अखंड प्रणालियों की तुलना में, निगरानी के लिए अधिक सेवाएँ हैं जो विभिन्न तकनीकों का उपयोग करके विकसित की जाती हैं। प्रोग्रामिंग की भाषाएँ.
- चूंकि यह एक वितरित प्रणाली है, इसलिए यह स्वाभाविक रूप से एक जटिल मॉडल है।
- विभिन्न सेवाओं का अपना अलग तंत्र होगा, जिसके परिणामस्वरूप असंरचित डेटा के लिए बड़ी मात्रा में मेमोरी की आवश्यकता होगी।
- कैस्केडिंग समस्याओं को रोकने के लिए प्रभावी प्रबंधन और टीमवर्क की आवश्यकता है
- किसी समस्या को दोबारा उत्पन्न करना तब कठिन कार्य होगा जब वह एक संस्करण में समाप्त हो गई हो, तथा नवीनतम संस्करण में पुनः आ जाए।
- माइक्रोसर्विसेज के साथ स्वतंत्र तैनाती जटिल है।
- माइक्रोसर्विस आर्किटेक्चर बहुत सारे ऑपरेशन ओवरहेड लाता है।
- जब सिस्टम में नई सेवाएँ जोड़ी जाती हैं तो एप्लिकेशन को प्रबंधित करना कठिन हो जाता है
- विषम रूप से वितरित माइक्रोसर्विसेस को समर्थन देने के लिए कुशल पेशेवरों की एक विस्तृत श्रृंखला की आवश्यकता होती है
- माइक्रोसर्विस महंगी है, क्योंकि आपको विभिन्न व्यावसायिक कार्यों के लिए अलग-अलग सर्वर स्थान बनाए रखने की आवश्यकता होती है।
SOA बनाम माइक्रोसर्विसेज
SOA सेवाओं को संगठन में एक रजिस्ट्री द्वारा बनाए रखा जाता है जो निर्देशिका सूची के रूप में कार्य करती है। अनुप्रयोगों को रजिस्ट्री में सेवाओं को देखने और सेवा को आमंत्रित करने की आवश्यकता होती है।
किसी दूसरी दुनिया में, SOA के यह एक ऑर्केस्ट्रा की तरह है जहां प्रत्येक कलाकार अपने वाद्ययंत्र के साथ प्रदर्शन कर रहा है जबकि संगीत निर्देशक सभी को निर्देश दे रहा है।
दूसरी ओर, माइक्रोसर्विसेज सेवा-उन्मुख वास्तुकला शैली का एक रूप है, जिसमें अनुप्रयोगों को एक सॉफ्टवेयर या अनुप्रयोग के बजाय विभिन्न छोटी सेवाओं के संग्रह के रूप में बनाया जाता है।
माइक्रोसर्विसेज एक मंडली की तरह है जहाँ प्रत्येक नर्तक स्वतंत्र है और जानता है कि उसे क्या करना है। इसलिए, यदि वे कुछ कदम चूक जाते हैं, तो वे जानते हैं कि सही क्रम पर वापस कैसे आना है। अब इस माइक्रोसर्विसेज आर्किटेक्चर ट्यूटोरियल में, आइए SOA और माइक्रोसर्विसेज के बीच अंतर के बारे में जानें।
यहाँ SOA और माइक्रोसर्विसेज के बीच विस्तृत तुलना दी गई है
प्राचल | SOA के | Microservices |
---|---|---|
डिजाइन प्रकार | SOA में, सॉफ्टवेयर घटकों को सेवाओं के रूप में उपयोग के लिए बाहरी दुनिया के सामने रखा जाता है। | माइक्रो सर्विस SOA का एक भाग है। यह SOA का कार्यान्वयन है। |
निर्भरता | व्यावसायिक इकाइयाँ आश्रित हैं। | वे एक दूसरे से स्वतंत्र हैं। |
सॉफ्टवेयर का आकार | सॉफ्टवेयर का आकार किसी भी पारंपरिक सॉफ्टवेयर से बड़ा है | माइक्रोसर्विसेज में सॉफ्टवेयर का आकार हमेशा छोटा होता है |
प्रौद्योगिकी ढेर | माइक्रोसर्विस की तुलना में प्रौद्योगिकी स्टैक कम है। | माइक्रोसर्विस प्रौद्योगिकी स्टैक बहुत बड़ा हो सकता है |
आवेदन की प्रकृति | प्रकृति में अखंड | प्रकृति में पूर्ण स्टैक |
स्वतंत्र और फोकस | SOA अनुप्रयोग अनेक व्यावसायिक कार्य करने के लिए बनाए गए हैं। | वे एक ही व्यावसायिक कार्य करने के लिए बनाए गए हैं। |
तैनाती | तैनाती की प्रक्रिया समय लेने वाली है। | तैनाती सरल और कम समय लेने वाली है। |
लागत प्रभावशीलता | अधिक किफ़ायती। | Less प्रभावी लागत। |
अनुमापकता | Less माइक्रोसर्विसेज की तुलना में. | अत्यधिक स्केलेबल। |
व्यापार का तर्क | व्यावसायिक तर्क घटकों को एकल सेवा डोमेन के अंदर संग्रहीत किया जाता है सरल वायर प्रोटोकॉल (HTTP के साथ XML JSON) API को SDK/क्लाइंट द्वारा संचालित किया जाता है | व्यावसायिक तर्क डोमेन एंटरप्राइज़ में रह सकते हैं सेवा बस जैसी सेवाओं के बीच परतें मिडलवेयर |
माइक्रोसर्विसेज उपकरण
1) वायरमॉक: माइक्रोसर्विसेस का परीक्षण
WireMock वेब सेवाओं को स्टबिंग और मॉकिंग करने के लिए एक लचीली लाइब्रेरी है। यह HTTP API द्वारा लौटाए गए रिस्पॉन्स को कॉन्फ़िगर कर सकता है जब इसे कोई विशिष्ट अनुरोध प्राप्त होता है। इसका उपयोग माइक्रोसर्विसेस के परीक्षण के लिए भी किया जाता है।
डाउनलोड लिंक:http://wiremock.org/
2) डॉकर
Docker एक ओपन सोर्स प्रोजेक्ट है जो हमें कंटेनर का उपयोग करके एप्लिकेशन बनाने, तैनात करने और चलाने की अनुमति देता है। इन कंटेनर का उपयोग करके, डेवलपर्स एक एप्लिकेशन को एक पैकेज के रूप में चला सकते हैं। यह आपको लाइब्रेरी और अन्य निर्भरता को एक पैकेज में शिप करने की अनुमति देता है।
डाउनलोड लिंक:https://www.docker.com/
3) हिस्ट्रिक्स
हिस्ट्रिक्स एक दोष सहिष्णुता जावा लाइब्रेरी है। यह उपकरण माइक्रोसर्विसेज जैसे वितरित वातावरण में दूरस्थ सेवाओं, सिस्टम और तृतीय-पक्ष लाइब्रेरी तक पहुंच के बिंदुओं को अलग करने के लिए डिज़ाइन किया गया है। यह विफल सेवाओं को अलग करके और विफलताओं के कैस्केडिंग प्रभाव को रोककर समग्र सिस्टम में सुधार करता है।
लिंक डाउनलोड करें:https://github.com/Netflix/Hystrix
माइक्रोसर्विसेज के सर्वोत्तम अभ्यास Archiटेक्चर
- प्रत्येक माइक्रोसर्विस के लिए अलग डेटा स्टोर
- समान स्तर की परिपक्वता का कोड रखें।
- प्रत्येक माइक्रो सेवा के लिए अलग निर्माण.
- हमेशा गंभीर स्थिति को राज्यविहीन ही मानें।
सारांश
- माइक्रोसर्विसेज एक सेवा-उन्मुख वास्तुकला पैटर्न है जिसमें अनुप्रयोगों को विभिन्न छोटी स्वतंत्र सेवा इकाइयों के संग्रह के रूप में बनाया जाता है।
- माइक्रोसर्विस Archiटेक्चर एक वास्तुशिल्प विकास शैली है जो किसी एप्लिकेशन को व्यवसाय डोमेन के लिए विकसित छोटी स्वायत्त सेवाओं के संग्रह के रूप में बनाने की अनुमति देती है।
- मोनोलिथिक आर्किटेक्चर एक बड़े कंटेनर की तरह है जिसमें किसी एप्लिकेशन के सभी सॉफ्टवेयर घटकों को एक ही पैकेज में रखा जाता है
- माइक्रोसर्विस में, संपूर्ण एप्लिकेशन की प्रत्येक इकाई सबसे छोटी होनी चाहिए, और यह एक विशिष्ट व्यावसायिक लक्ष्य को पूरा करने में सक्षम होनी चाहिए
- मोनोलिथिक आर्किटेक्चर में, बड़ा कोड बेस पूरी विकास प्रक्रिया को धीमा कर सकता है। नई रिलीज़ में महीनों लग सकते हैं। कोड रखरखाव मुश्किल है
- माइक्रोसर्विसेज दो प्रकार की होती हैं 1) स्टेटलेस 2) स्टेटफुल
- माइक्रोसर्विसेज Java एक दूसरे पर निर्भर करते हैं, और उन्हें एक दूसरे के साथ संवाद करना होगा। आपको एक विशिष्ट सुविधा और व्यावसायिक आवश्यकताओं पर जोर देने में मदद करता है
- सेवा-उन्मुख वास्तुकला जिसे संक्षेप में SOA के रूप में जाना जाता है, सिंक्रोनस और एसिंक्रोनस अनुप्रयोगों के लिए अनुरोध या उत्तर डिजाइन मॉडल पर आधारित वितरित कंप्यूटिंग का एक विकास है
- SOA में, सॉफ़्टवेयर घटक सेवाओं के रूप में उपयोग के लिए बाहरी दुनिया के सामने आते हैं जबकि माइक्रो सर्विस SOA का एक हिस्सा है। यह SOA का कार्यान्वयन है
- वायरमॉक, डॉकर और हिस्ट्रिक्स कुछ लोकप्रिय माइक्रोसर्विस टूल हैं