मेरे पास अपेक्षाकृत नई परियोजना है जो एक माइक्रोस्कोप आर्किटेक्चर को नियोजित करती है। मैं अपवाद या हमारी सुरक्षा सेवा के साथ व्यक्तिगत सेवाओं के आकार और ग्रैन्युलरिटी के बारे में बहुत अच्छा महसूस करता हूं।माइक्रोस सर्विस आर्किटेक्चर- क्रॉस-डोमेन चतुरता
मेरे पास तीन मुख्य सेवाएं हैं, मान लें कि foo-service
, bar-service
, और baz-service
। इन सेवाओं को कभी संवाद करने की आवश्यकता नहीं है, लेकिन सभी तीन सेवाएं नियमित रूप से HTTP अनुरोधों के माध्यम से security-service
पर बात करती हैं। मैं इसे कई कारणों से रोकना चाहता हूं- सबसे बड़ी बात यह है कि मेरी व्यक्तिगत सेवाओं के प्रत्येक अनुरोध से सुरक्षा सेवा के लिए अनुरोध मिलता है, जो लोड संतुलन के लिए खाता लेने के बाद कई अतिरिक्त होप्स में बदल सकता है। मैं पढ़ रहा हूं मार्क रिचर्ड्स द्वारा "सॉफ्टवेयर आर्किटेक्चर पैटर्न", और उन्होंने इन उदाहरणों में सिफारिश की है कि आपको डेटाबेस साझा करना चाहिए और DRY का उल्लंघन करना चाहिए: प्रत्येक सेवा में आवश्यक कार्यक्षमता की प्रतिलिपि बनाएँ। फिर भी, वह इस उदाहरण का उपयोग छोटे "उपयोगिता" वर्गों के साथ करता है, जो वास्तव में इस उदाहरण में लागू नहीं हो सकता है।
सुरक्षा सेवा इतना बड़ी नहीं है, इसलिए मैं इसे निश्चित रूप से अन्य सभी सेवाओं में कॉपी कर सकता हूं। उस ने कहा, यह इतना बड़ा है कि मुझे बड़ी प्रतिलिपि और पेस्टिंग महसूस नहीं होती है - 314 'कवर' के अनुसार कोड की प्रासंगिक 'पंक्तियां' (जावा इसलिए बहुत अधिक वास्तविक कोड है ;-)। मैं इसे आसानी से एक मॉड्यूल में बदल सकता हूं जो प्रत्येक सेवा में लाता है- लेकिन फिर मेरी सेवाओं में एक साझा निर्भरता है और इससे मुझे अतीत में थोड़ा सा फायदा हुआ है। निस्संदेह सुरक्षा कोड समय के साथ बढ़ेगा क्योंकि हम प्रमाणीकरण विधियों को जोड़ते हैं, लेकिन जब हम ऑथ की बात करते हैं तो हम पहिया को फिर से नहीं बदल रहे हैं, इसलिए यह ज्यादातर अन्य पुस्तकालयों और प्रमाणीकरण सेवाओं के साथ एकीकृत है। यही है, मैं कल्पना नहीं करता कि यह विशेष कोड बेस विशाल हो रहा है।
तो मेरा प्रश्न, क्या मुझे कोड कॉपी या पेस्ट करना चाहिए या प्रत्येक सेवा में एक मॉड्यूल बनाना चाहिए? धन्यवाद!
यह एक क्रॉस-कटिंग चिंता की तरह लगता है कि साइटमैंडर का जन्म हुआ था। यह सेवाओं पर एक फ़िल्टर या मूल लेख होना चाहिए, अतिरिक्त नेटवर्क हॉप नहीं। – duffymo
हम सेवा अनुरोधों को फ़िल्टर कर रहे हैं। अभी के लिए बुनियादी का उपयोग कर रहे हैं (यह नया है), लेकिन बाद में विशिष्ट oauth प्रदाताओं का उपयोग करने के लिए आवश्यकताएं हैं। वास्तव में सुरक्षा सेवा वास्तव में कर रही प्राथमिक बात सुरक्षा समूहों के माध्यम से प्राधिकरण का प्रबंधन कर रही है। यह वास्तव में कार्यक्षमता है जो मुझे लगता है कि मुझे प्रत्येक सेवा में स्थानांतरित करने की आवश्यकता होगी (इसलिए हर कोई प्राधिकरण के लिए सुरक्षा सेवा के साथ जांच नहीं कर रहा है) – eric
सुरक्षा सेवा क्या करता है, प्रमाणीकरण या प्राधिकरण? – miraculixx