यदि आपने स्केलेबिलिटी, ढीले कपलिंग, और प्रत्येक सेवा के आसान स्वतंत्र संशोधन से लाभ के लिए माइक्रोसर्विस के लिए किया था, तो आपको इसे अधिकतम संभव सीमा तक चिपका देना चाहिए।
कुल मिलाकर वास्तुकला
मुझे लगता है कि सबसे अच्छा तरीका होगा:
- सामान्य उपयोगकर्ता सूचना प्रबंधन के लिए एक माइक्रो-सेवा है;
- प्रत्येक microservice (सामान्य आईडी के रेफ़रिन का उपयोग करके) विशिष्ट उपयोगकर्ता जानकारी (जैसे प्रोफाइल, प्राधिकरण, प्राथमिकताएं) रखें
अतिरिक्त पढ़ने:
- यह लेख प्राधिकरणों के विशिष्ट मामले के साथ इस तरह की वास्तुकला और औचित्य का बहुत अच्छी तरह से वर्णन करता है।
- यह आलेख उपयोगकर्ता पहचान प्रबंधन के लिए चुनौतियों और समाधान का वर्णन करता है, सभी सेवाओं को एक ही भंडार तक पहुंचने से बचने के लिए।
- यह आलेख सेवाओं के बीच उपयोगकर्ता की पहचान को पारित करने के लिए JWT का उपयोग करने के लिए हो का वर्णन करता है (यह देखते हुए कि आईडी टोकन में कुछ बुनियादी जानकारी प्रदान की जा सकती है, जो लॉगिन के बाद उपयोगकर्ता सेवा को एक बार क्वेरी करने से बचती है, कम से कम बहुत मूल के लिए जानकारी)।
कोड को बांटना
अब यदि आप ऊपर दिए गए समाधान पर सहमत हैं, तो हमारे पास एक उपयोगकर्ता माइक्रोसॉर्फ़ है (उपयोगकर्ता के लिए डोमेन मॉडल को एनकैप्सुलेट करना) और अन्य सभी सेवाएं एक ही माइक्रोसेवा के उपभोक्ता हैं। सवाल यह है कि क्या आप जानना चाहते हैं:
- लचीले और अलग रिलीज साइकिल की अनुमति के लिए मजबूत जुदाई की हठधर्मिता के बाद, उपभोक्ता कोड को सुदृढ़ करने के लिए या तो प्रत्येक माइक्रोसिस्ट सेवा,
- या लाइब्रेरी के हिस्से के रूप में उपभोक्ता कोड साझा करने के लिए, यह देखते हुए कि यह मूलभूत जानकारी "चेसिस" इंफ्रास्ट्रक्चर पैटर्न का विस्तार है ।
मैं उस पर स्पष्ट कटौती की स्थिति नहीं लूंगा, क्योंकि इस कोड साझा करने के विषय पर ओपिनिटेड ओपिनियन वॉर हैं, और मुझे नहीं लगता कि मैं ऑब्जेक्टिव पोजिशन लेने की स्थिति में हूं। यहाँ पहले से ही कुछ अतिरिक्त पढ़ना है:
- यह लेख सोचता है कि कोई सबसे अच्छा समाधान नहीं है, और यह सब आपके उद्देश्यों पर निर्भर करता है
- यह आलेख स्थिति यह है कि कोड साझाकरण केवल तभी बुरा है जब यह एक मजबूत युग्मन बनाता है, और कोड साझाकरण कुछ तालमेल ला सकता है
- यह लेख (जिन लोगों ने बड़े पैमाने पर माइक्रोसॉफ़्ट को लागू किया था) अलग-अलग बिल्ड, और पुराने कोड के संभावित डिमोशन मुद्दों पर जोर देते हैं। ठोस संस्करण प्रबंधन के साथ उपभोग के लिए एक साझा पुस्तकालय होने से इन अच्छी प्रथाओं को रोका नहीं जा सकता है।
इस पर मेरी अपनी राय है कि आप तंग युग्मन से बचने के लिए उपयोगकर्ता-प्रदाता और उपयोगकर्ता-उपभोक्ताओं के बीच कोड को साझा नहीं करेंगे। हालाँकि, आप उपभोक्ताओं के बीच उपयोगकर्ता-उपभोग कोड साझा करते हैं यदि आपके पास एक मजबूत संस्करण प्रबंधन है। इस दृष्टिकोण के कुछ फायदे होंगे:
- अलग-अलग उपयोगकर्ता-खपत माइक्रोसर्विसेज को साझा उपयोगकर्ता-उपभोग कोड के विभिन्न संस्करणों के साथ बनाया जा सकता है (जब तक कि संस्करण स्वतंत्र उपयोगकर्ता-प्रदाता के साथ संगत होते हैं)। वही लचीलापन जो पहिया को सुदृढ़ करता है लेकिन उच्च उत्पादकता।
- आप उपभोक्ताओं पर प्रभाव के बिना अपनी उपयोगकर्ता-प्रदाता सेवा को स्वतंत्र रूप से बदल सकते हैं।
- यदि एक बग खपत पक्ष पर पाया जाता है, तो आप इसे एक बार ठीक कर सकते हैं और सभी उपभोक्ताओं को सर्वश्रेष्ठ सूट (संस्करण प्रबंधन के लिए धन्यवाद) के रूप में तैनात कर सकते हैं। तीस भी सेवा की एक उच्च गुणवत्ता के लिए नेतृत्व कर सकते हैं।
- यदि किसी कारण से आप उपयोगकर्ता-प्रदाता API को अपडेट करने के लिए बाध्य हैं, तो आप अपडेट किए गए उपयोगकर्ता-उपभोग को और अधिक quiclkly परिनियोजित कर सकते हैं। यह संक्रमण के दौरान आप पुरानी और नई प्रदाता सेवा को सक्रिय रखते हैं, यह साझा करने की संभावना उपभोक्ता-प्रदाता के पुराने संस्करण को अधिक तेज़ी से डिकमीशन करने की अनुमति दे सकती है।