सहायक बहुक्रिया


10

एकल-किरायेदार एप्लिकेशन को एक बहु-भाषी ऐप में परिवर्तित करते समय क्या विशिष्ट चुनौतियाँ होती हैं? सुरक्षा और डेटा अलगाव ने मुझे सबसे महत्वपूर्ण माना। कुछ और क्या हैं?

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


सबसे आसान उपाय? पूरे सिस्टम का एक नया उदाहरण, जिसमें हार्डवेयर शामिल है, स्क्रैच से खाली, प्रति किरायेदार एक नया सिस्टम। यदि सिस्टम और डेटा काफी मूल्यवान हैं, तो यह एक बहुत अच्छा विकल्प हो सकता है। यदि आपको प्रत्येक उदाहरण के लिए नया हार्डवेयर पसंद नहीं है - वर्चुअलाइजेशन का उपयोग करें। यह सबसे कुशल नहीं हो सकता है लेकिन निश्चित रूप से एक टन सिरदर्द से बचाएगा।
एसएफ।

संभवतः एक डिजाइन के नजरिए से यह सबसे आसान है, लेकिन प्रशासनिक दृष्टिकोण से यह प्रतीत नहीं होता है। कम से कम हमारे sysadmins इस प्रस्ताव को लेकर बहुत उत्साहित नहीं हैं। (और हाँ, हम VMs का उपयोग कर रहे हैं।) जिस तरह से प्रबंधन (निगरानी, ​​तैनाती, आदि) करने के लिए और अधिक उदाहरण हैं। हम वास्तव में यहाँ कुछ शारीरिक अलगाव प्राप्त करने के लिए इसे और अधिक प्रबंधनीय बनाने के तरीके देख रहे हैं लेकिन इसके चेहरे पर, यह दृष्टिकोण सादगी के लिए व्यवस्थापक सादगी व्यापार के लिए लगता है ...?

जवाबों:


11

डेटा को साइलो करने के अलावा, आप समस्याओं में भाग सकते हैं

  1. उपलब्धता - एक एकल किरायेदार के साथ, वे केवल खुद को DoS कर सकते हैं, लेकिन जब डेटा ठीक से चुप हो जाता है, तब भी एक किरायेदार संसाधनों का निकास कर सकता है।
  2. लॉगिंग - सभी लॉग संदेशों को एक एकल किरायेदार माना जाता है। जब तक आप साइलो प्रति किरायेदार लॉग नहीं करते हैं, तब तक आपके लॉग संदेश कम उपयोगी हो सकते हैं।
  3. कॉन्सिक्वेंसी - सिंगल टेनेंट ऐप्स मध्यम लोड के तहत चल सकते हैं, या कुछ तालों के लिए उच्च विवाद प्रभावी रूप से कुछ कार्यों को क्रमबद्ध कर सकते हैं। यदि ताले प्रति-गुणा गुणा किए जाते हैं, तो आप उन ऑपरेशनों की इंटरलेइंग करना शुरू कर सकते हैं जो पहले नहीं हुए थे। दौड़ की स्थितियां जो कभी प्रकट होने की संभावना नहीं थीं, अब प्रकट होने की संभावना हो सकती है।
  4. संसाधन विवाद के नए स्रोत - जहां पहले आपके पास एन सॉकेट और एम फाइलहैंडल हो सकते हैं, अब उस प्रति-किरायेदार को गुणा करें।
  5. कॉन्फ़िगरेशन / बैकवर्ड संगतता ट्रेडऑफ़ - जहां आप एक घटक को अप्रचलित करने से पहले एक प्रतिस्थापन को रोल कर सकते हैं, अब आपके पास एक घटक की मांग करने वाला एक किरायेदार हो सकता है, और एक किरायेदार यह मांग करता है कि यह पुराने घटक की जगह अनिश्चित काल के आसपास रहें।
  6. Subpoena target - वर्तमान में आप अपनी कंपनी से संबंधित समस्याओं के लिए एक उप-लक्ष्य लक्ष्य हैं। कई-किरायेदारों के साथ, आपको कानूनी कार्रवाई के लिए पार्टी नहीं होने पर भी सब-वे अनुरोधों का जवाब देना पड़ सकता है।

इनमें से कुछ का मानना ​​है कि आप सभी किरायेदारों को एक ही पता स्थान (मशीन या क्लस्टर) में चला रहे हैं। यदि प्रत्येक किरायेदार आपके सॉफ़्टवेयर को उनके हार्डवेयर पर चला रहा है, तो आप उपरोक्त में से कुछ को लूट सकते हैं और जोड़ सकते हैं:

  1. डिबग करने के लिए मशीनों तक पहुँचने में कठिनाई।
  2. पुराने संस्करणों के लिए समर्थन अनुरोध।
  3. तृतीय-पक्ष ठेकेदारों को कॉन्फ़िगर करने की अनुमति देने का अनुरोध।
  4. इस पर चलने वाले हार्डवेयर पर कम नियंत्रण।
  5. OS पर चलने वाले पैच / अपडेट चक्र पर कम नियंत्रण।

1

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


1

माइक का जवाब बहुत अच्छा है, और वहाँ बहुत सारे बिंदु लगभग उनकी जटिलता को कम कर देते हैं कि वे कितने कम हैं, इसलिए उन लोगों को दिल से लगाओ।

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

श्रीराम के उत्तर का विस्तार करने के लिए; प्रति-किरायेदार अनुकूलन बहुत निषिद्ध है, वह सब कुछ जो एक किरायेदार बदलना चाहता है वह विन्यास योग्य होना चाहिए । उदाहरण के लिए, यदि आपका समाधान कम से कम कुछ प्रमुख क्षेत्रों में डेटा फ़ील्ड के डायनामिक जोड़ के लिए पूरा नहीं करता है, तो आप संभवतः अनुकूलन के लिए अनुरोधों के साथ जलमग्न हो जाएंगे। यह कुछ मामलों में जहां एक छोटे से अतिरिक्त जटिलता अग्रिम वास्तव में भुगतान करता है में से एक (चलो कहते हैं कि यह YAGNI के खिलाफ जाता है, या कम से कम, विन्यास के इस स्तर लगभग एक महत्वपूर्ण आवश्यकता है, तो आप है कर रहे हैं की जरूरत वाला यह)।


अनुकूलन "निषिद्ध" क्यों है? यह निश्चित रूप से तकनीकी रूप से प्राप्त करने योग्य है। कई अलग-अलग पैटर्न हैं जो कई किरायेदारों के लिए कोर सिस्टम के पुन: उपयोग के लिए अनुमति देते हैं, जबकि अभी भी व्यक्तिगत किरायेदारों के लिए अनुकूलित टुकड़े प्रदान करते हैं। यदि कोई ग्राहक आपको अनुकूलन के लिए भुगतान करने को तैयार है, तो इस पर विचार करना उचित होगा। ऐसे कई बहुउद्देशीय उत्पाद हैं जो इस कारण से प्रति-ग्राहक अनुकूलन हैं। यह सब कुछ विन्यास के लिए अनुमति देने के लिए YAGNI IMO की भावना में अधिक है और सब कुछ विन्यास करने के लिए डिफ़ॉल्ट नहीं है।
रेशनलगीक

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

एंटरप्राइज़ स्तर पर मैं सास विक्रेताओं को अक्सर देखता हूं कि ग्राहक कोड करने के लिए अपने कोड में महत्वपूर्ण अनुकूलन करने के लिए तैयार हैं। जब कोई ग्राहक सेवा के लिए 6 या 7 आंकड़े दे रहा है तो यह संभवतः एक उचित व्यवसाय मॉडल है।
रेशनलगीक

हाँ, उन मामलों में, मुझे ऐसा लगता है। मेरे द्वारा देखे गए अधिकांश परिवर्तन मौजूदा क्लाइंट के लिए नई कॉन्फ़िगर करने योग्य सुविधाओं के रूप में लागू किए गए थे, जो डिफ़ॉल्ट रूप से चालू थे। मुझे लगता है कि समस्या यह है कि पहले 3 या 4 ग्राहकों को प्रत्येक को विशेष उपचार मिलता है क्योंकि समाधान अभी तक नहीं हुआ है। समाधान बहुत विशिष्ट समाप्त होता है, और "ठीक है, हम इसे अभी हैक करेंगे" की संस्कृति बनाते हैं। लेकिन हाँ, मैं बड़े ग्राहकों के बारे में आपकी टिप्पणी से सहमत हूँ।
डैनियल बी

यह एक उपयोगी अंतर है जिसे आप लोग कस्टमिज़ेबिलिटी के आसपास बना रहे हैं। मुझे लगता है कि एक ही अवधारणा प्रबंधनीयता की ओर भी लागू हो सकती है। हमारी बहुउद्देशीयता का लक्ष्य संभवतः लंबे-पूंछ वाले ग्राहकों के बजाय अपेक्षाकृत कम बड़े ग्राहक हैं। यदि मल्टीटैनेंसी का मुख्य उद्देश्य लंबी-पूंछ पर कब्जा करना है, तो यह हमारे लिए सही दृष्टिकोण भी नहीं हो सकता है। इन प्रतिबिंबों के लिए धन्यवाद।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.