मैं एक परियोजना बस मॉडल (शायद nServiceBus) और कमांड-क्वेरी पृथक्करण को प्राप्त करने के लिए कुछ मूल पब-उप का उपयोग करने के लिए हमारे WCF- आधारित SOA के हिस्से को स्थानांतरित करने के लिए एक परियोजना पर विचार कर रहा हूं ।
मैं SOA, या यहां तक कि बस मॉडल की सेवा करने के लिए नया नहीं हूं, लेकिन मैं यह स्वीकार करता हूं कि हाल ही में "पृथक्करण" की मेरी अवधारणा रन-ऑफ-द-मिल डेटाबेस मिररिंग और प्रतिकृति तक सीमित थी। फिर भी, मैं इस विचार से आकर्षित हूं क्योंकि यह स्पष्ट कमियों (सबसे विशेष रूप से उचित लेन-देन के समर्थन की कमी) के कई को साइडस्टैप करते हुए अंततः-सुसंगत प्रणाली के सभी लाभ प्रदान करता है।
मैंने उदी दहन के विषय पर बहुत कुछ पढ़ा है, जो मूल रूप से ईएसबी आर्किटेक्चर (कम से कम माइक्रोसॉफ्ट की दुनिया में) पर गुरु है, लेकिन एक बात वह कहता है कि वास्तव में मुझे पहेली है:
जैसे-जैसे हम उन पर अधिक क्षेत्रों के साथ बड़ी इकाइयाँ प्राप्त करते जाते हैं, वैसे-वैसे हम उन्हीं संस्थाओं के साथ काम करते हुए अधिक अभिनेताओं को प्राप्त करते जाते हैं, और इस बात की संभावना अधिक होती है कि कुछ किसी समय में उनमें से कुछ विशेषता को छू लेगा, जिससे संगति संघर्षों की संख्या बढ़ जाएगी।
[...]
CQRS का एक मुख्य तत्व उपयोगकर्ता इंटरफ़ेस के डिज़ाइन को पुनर्व्यवस्थित कर रहा है ताकि हम अपने उपयोगकर्ताओं के इरादे पर कब्जा कर सकें, जैसे कि ग्राहक को पसंदीदा बनाना उपयोगकर्ता के लिए काम करने की एक अलग इकाई है जो ग्राहक को यह संकेत देता है कि वे चले गए हैं या वे मिल गए हैं विवाहित। डेटा परिवर्तन के लिए Excel जैसी UI का उपयोग इरादे पर कब्जा नहीं करता है, जैसा कि हमने ऊपर देखा।
- उदी दहन, स्पष्ट सीक्यूआरएस
उद्धरण में वर्णित दृष्टिकोण से, उस तर्क के साथ बहस करना कठिन है। लेकिन यह SOAs के संबंध में अनाज के खिलाफ जाता है। एक SOA (और वास्तव में सेवाएं सामान्य रूप से) मोटे अनाज वाले संदेशों से निपटने के लिए माना जाता है ताकि नेटवर्क चैट को कम किया जा सके - कई अन्य लाभों के बीच।
मुझे पता है कि नेटवर्क चैटर एक समस्या से कम है, जब आपको अच्छे संदेश कतारबद्ध और आरपीसी के किसी भी सामान के साथ अत्यधिक वितरित सिस्टम मिले हैं, लेकिन यह पूरी तरह से मुद्दे को खारिज करने के लिए बुद्धिमान नहीं लगता है। उदी लगभग यह कहता हुआ प्रतीत होता है कि प्रत्येक विशेषता परिवर्तन (अर्थात फील्ड अपडेट) की अपनी कमान होनी चाहिए, जो कि एक उपयोगकर्ता के संदर्भ में कल्पना करना कठिन है, जो संभवतः सैकड़ों या हजारों संयुक्त संस्थाओं और विशेषताओं को अपडेट कर रहा है, जैसा कि अक्सर एक पारंपरिक के साथ होता है। वेब सेवा।
एसक्यूएल सर्वर में एक बैच अपडेट एक दूसरे का एक अंश ले सकता है जो एक बहुत ही उच्च-पैरामीटर वाली क्वेरी, तालिका-मूल्यवान पैरामीटर या बल्क सम्मिलित करने के लिए एक बड़ी तालिका देता है; इन सभी अद्यतनों को एक समय में संसाधित करना धीमा, धीमा, धीमा है , और OLTP डेटाबेस हार्डवेयर सभी को ऊपर / बाहर स्केल करने के लिए सबसे महंगा है।
क्या इन प्रतिस्पर्धी चिंताओं को समेटने का कोई तरीका है? क्या मैं इसके बारे में गलत तरीके से सोच रहा हूं? क्या इस समस्या का CQS / ESB दुनिया में एक प्रसिद्ध समाधान है?
यदि नहीं, तो कोई यह कैसे तय करता है कि एक कमांड में "सही स्तर" की ग्रैन्युलैरिटी क्या होनी चाहिए? क्या कुछ "मानक" एक शुरुआती बिंदु के रूप में उपयोग कर सकते हैं - डेटाबेस में 3NF की तरह - और केवल विचलन जब सावधान प्रोफाइलिंग एक संभावित महत्वपूर्ण प्रदर्शन लाभ का सुझाव देता है?
या यह संभवतः उन चीजों में से एक है जो विभिन्न विशेषज्ञों द्वारा कई मजबूत राय व्यक्त किए जाने के बावजूद, वास्तव में केवल एक राय है?