वास्तव में SOA और Microservices के बीच क्या अंतर है


10

अस्वीकरण

मुझे आशा है कि मैं किसी के पैर की उंगलियों पर कदम नहीं रख रहा हूं या अवधारणाओं के प्रति उत्साही नहीं हूं

पृष्ठभूमि

मैं बिना किसी स्पष्ट उत्तर को खोजे, सर्विस ओरिएंटेड आर्किटेक्चर और माइक्रोसर्विसेज के बीच वास्तविक अंतर की तलाश कर रहा हूं ।

मैं चीजों को पढ़ता हूं जैसे:

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

लेकिन फिर भी, कुछ भी स्पष्ट रूप से सेवा उन्मुख वास्तुकला (एक अवधारणा के रूप में) और माइक्रोसर्विसेज (एक अवधारणा के रूप में) के बीच वास्तु अंतर को परिभाषित नहीं करता है

जो मैंने समझा, उसके अनुसार वे दोनों हैं:

  • सेवा प्रदाता, केवल एक ही काम कर रहे हैं
  • सेवा गेटवे / ESB उपभोक्ताओं के लिए उन सेवाओं को उजागर करना
  • सेवा उपभोक्ताओं, ईएसबी / सेवा गेटवे के माध्यम से सेवाओं तक पहुँचने

सवाल

तो, क्या SOA को माइक्रोसेर्बल्स में रीलेबल करने के अलावा कुछ अलग है? क्या यह एक प्रौद्योगिकी बाधा है जिसे मैक्रो सेवा को स्थूल बनने से रोकने के लिए रखा गया है?

नोट: मैं राय की तलाश में नहीं हूं, केवल कठिन तथ्य, उम्मीद है कि बुलेट अंक में

संदर्भ

अपडेट करें

ऐसा लगता है कि स्टैक ओवरफ्लो प्रश्न में एक समान बहस हुई , राय में विभाजित विकर्स या नहीं माइक्रोसर्विसेज़ सर्विस ओरिएंटेड आर्किटेक्चर इन भेस।

एसओ प्रश्न से निष्कर्ष:

  • MS SOA का एक विशेष मामला है
  • MS होस्टिंग सेवाओं के अनुप्रयोगों के छोटे आकार का समर्थन करता है
  • एमएस प्रौद्योगिकी पर निर्भर है (खुले प्रोटोकॉल विकल्पों के बजाय HTTP का उपयोग)
  • एमएस अनुशासन लागू करने के लिए प्रौद्योगिकी पर निर्भर करता है (सेवाओं की स्वचालित तैनाती)
  • एमएस कंसाइडर्स ईएसबी (बुराई), लेकिन एपीआई गेटवे का उपयोग करता है जो आईएमएचओ ईएसबी का एक प्रकार है

यह निष्कर्ष निकाला है कि एमएस SOA है, अगर निम्नलिखित सत्य है:

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

यदि अंतिम प्रश्न का उत्तर नहीं दिया गया है, तो माइक्रोसॉफ़्ट जटिल वर्कफ़्लो सिस्टम, जैसे क्रेडिट कार्ड मैनेजमेंट सिस्टम, या सुलह सिस्टम को संभालने में सक्षम नहीं होगा।


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

1
क्या SOA को भी छोटे-छोटे युग्मित घटकों को लागू नहीं करना चाहिए? मुझे पता है कि एसओए के पीछे के छोर पर बहु-कार्यात्मक अनुप्रयोग हैं, जिन्हें ज्यादातर "बेस्ट ऑफ ब्रीड" के रूप में वर्णित किया गया है जो अन्य अनुप्रयोगों से सेवाएं प्रदान करते हैं और अन्य अनुप्रयोगों से सेवाओं का उपभोग करते हैं, जो भी संदेश प्रारूप, प्रोटोकॉल और मध्यम पहुंच के लिए उपयोग करते हैं
ए .रशाद

यह होना चाहिए, लेकिन जैसा कि आपने अभी बताया, यह आमतौर पर नहीं होता है।
रॉबर्ट हार्वे

Martin Fowler's Site (I think he hates it big time)जब मैं बार्सिलोना में उनकी बात पर गया तो वह मेरी भावना नहीं थी। वह व्यापार-बंदों के बारे में जानते हैं और इस बात पर ध्यान दिए बिना कि लोग इस वास्तुकला में कैसे शिथिल हो गए हैं कि एमएस सभी के लिए उपयुक्त नहीं है।
Laiv

1
Microservices विपणन का एक गुच्छा है। इसमें कोई फर्क नही है। सालों पहले लोग ऐसा कर रहे थे और अब किसी ने इसका नाम रखा और अब यह कुछ नया है। आप सही हैं MS SOA का एक (विशेष नहीं) मामला है। कृपया इसमें से कुछ बनाने की कोशिश करना बंद करें।
काइल जॉनसन

जवाबों:


12

सेवा प्रदाता, केवल एक ही काम कर रहे हैं

मुख्य अंतर, जिसका परियोजना के व्यापक परिणाम हैं, यह है कि माइक्रोसर्विसेज के साथ ये सेवा प्रदाता स्वतंत्र रूप से तैनात और स्केलेबल हैं

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

लेकिन यह कुछ भारी प्रभाव के साथ आता है:

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

1
यह इन सभी कारणों से है कि मैं एक विशिष्ट समस्या (वितरित कंप्यूटिंग के माध्यम से स्केलिंग) के लिए एक विशिष्ट समाधान के रूप में microservices को देखता हूं, और समग्र अनुप्रयोग वास्तुकला के रूप में नहीं।
रॉबर्ट हार्वे

1
Enh, उन्हें व्यापक रूप से पर्याप्त प्रभाव मिला है जो मुझे लगता है कि उन्हें स्केलेबिलिटी के साथ एक एप्लीकेशन आर्किटेक्चर के रूप में देखा जाना चाहिए / कंप्यूटिंग को एक उल्टा (जटिलता और व्यापार बंद के रूप में अन्य डाउनसाइड के साथ) के रूप में वितरित किया जाना चाहिए।
टेलस्टीन

1
तो एक वास्तुकला की दृष्टि से, माइक्रोसॉफ़्ट स्टैंडअलोन माइक्रो सिस्टम हैं जो एक काम कर रहे हैं, जबकि SOA उपभोक्ताओं के लिए कई सेवाओं के साथ अखंड अनुप्रयोग हैं?
ए। रशद

1
मैं अब और उलझन में हूँ! क्या यह एक अखंड आवेदन के लिए संभव है कि माइक्रोसेवाओं को उजागर किया जाए? या क्या इसे स्टैंडअलोन माइक्रो एप्लिकेशन होना चाहिए?
A.Rashad


2

यहाँ नीचे-पंक्ति है SOA और माइक्रोसिस्टीवर्स के बीच एक स्पष्ट अंतर है

स्मार्ट समापन बिंदु डंब पाइप

SOA के विपरीत , जो गुमनामी वाले सेवा उपभोक्ताओं और उत्पादकों पर निर्भर करेगा, ट्रैफ़िक प्रबंधन, संदेश प्रारूप अनुवाद और बाहरी सिस्टम, जैसे ESB, सेवा ऑर्केस्ट्रेटर, संदेश ब्रोकर के लिए सेवा ऑर्केस्ट्रेशन को दर्शाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.