2008-09-30 18 views
14

परिचयसिस्टम निर्भरताओं को कैसे ट्रैक करें?

मेरे वर्तमान संगठन में, हम कई डेस्कटॉप और वेब अनुप्रयोगों के सभी कुछ बिंदु पर एक दूसरे में खिला है। पुराने अनुप्रयोगों की देखभाल करते समय या नए अनुप्रयोग बनाने के दौरान, यह कोशिश करना और याद रखना बहुत मुश्किल साबित होता है कि कौन सी प्रणाली काम करने के लिए अन्य प्रणालियों पर भरोसा करती है। मैं DLL का और छवियों, मैं एक वित्त प्रणाली की तरह पूरे सिस्टम मानव संसाधन सिस्टम पर निर्भर के बारे में बात कर रहा हूँ की तरह सॉफ्टवेयर निर्भरता के बारे में बात नहीं कर रहा हूँ आदि

मेरे प्रश्न

कौन सा करने के लिए एक सबसे अच्छा तरीका है ट्रैक करें कि एक पूरी प्रणाली दूसरे पर कैसे निर्भर है?

उत्तर उपरोक्त, एक सॉफ्टवेयर पैकेज या दस्तावेज़ीकरण तकनीकों को करने का एक तरीका सुझा सकता है।

मेरी विशेष मामले में, 20 वेब और एक दर्जन से अधिक सर्वर डेस्कटॉप अनुप्रयोग से अधिक कई साधन।

+3

मुझे अपने पिछले काम में एक-दूसरे से क्या कहना था - मुझे याद दिलाता है - अगर कोई हमारे उत्पाद की कामकाजी प्रतिलिपि प्राप्त कर सकता है, तो वे इसके लायक हैं! – Benjol

उत्तर

6

मैं स्पष्ट रूप से यह कहूंगा कि आपके आर्किटेक्चर डिज़ाइन दस्तावेज़ पर। इसके लिए Enterprise Architect जैसे कुछ अच्छे टूल हैं। यह टूल आपको इन निर्भरताओं को स्पष्ट और दृश्य तरीके से वर्णित करने के लिए यूएमएल मानक का उपयोग करके चित्र बनाने की अनुमति देता है।

4

आमतौर पर जानकारी का सबसे अच्छा स्रोत कॉन्फ़िगरेशन फ़ाइलों में पाया जाता है। इसमें आमतौर पर कनेक्शन स्ट्रिंग्स, वेब सेवा यूआरएल आदि होती है जो बाहरी निर्भरताओं पर एक अच्छा विचार देगी।

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

मुझे यकीन नहीं है कि इस जानकारी को प्राप्त करने का कोई स्वचालित तरीका है, खासकर यदि सिस्टम कई प्लेटफ़ॉर्म पर हैं। मैन्युअल काम के बहुत सारे दस्तावेजों को दस्तावेज करने के लिए शामिल किया जाएगा।

1

एक एंटरप्राइज़ डिस्कवरी के लिए नौकरी की तरह लगता है जो स्वचालित रूप से इसे जा सकता है। आपके संगठन के आकार और पर्यावरण के आधार पर विभिन्न समाधान हैं। बड़े परिदृश्य के लिए आपको एक सीएमडीबी (कॉन्फ़िगरेशन प्रबंधन डेटाबेस) की आवश्यकता होगी। HP Universal CMDB जैसे उत्पाद बड़े पैमाने पर वातावरण में निर्भरता को खोज और ट्रैक कर सकते हैं।

उदा। यह एक एसएपी सिस्टम और उसके संबंधित डेटाबेस और मेजबानों के बीच संबंधों को खोज सकता है जिन पर वितरित सिस्टम चल रहे हैं और आपको निर्भरता दिखाते हैं। वास्तविक पर्यावरण के लिए कुछ अनधिकृत परिवर्तन किए जाने पर यह महत्वपूर्ण है कि यह आपको चेतावनी दे सकता है।

तो उत्तर उस पर निर्भर करता है जिसे आप 'कई' मानते हैं।

+0

मेरे विशेष मामले में, कई दर्जन से अधिक सर्वरों पर 20 से अधिक वेब और डेस्कटॉप एप्लिकेशन का अर्थ है। – GateKiller

+0

ठीक है, उस मामले में यूनिवर्सल सीएमडीबी आपके लिए बहुत महंगा होगा। – Yaba

2

यह एक अच्छा सवाल है - हम ऐसा हर बार संघर्ष करते हैं, ऐसा लगता है।- यदि आप इसे स्वचालित रूप से और निर्माण/अक्सर तो स्वचालन प्रक्रिया को तैनात,

  1. स्वचालन:

    क्या हम पिछले वर्ष की तुलना करने की कोशिश की या तो गए दो बातों पर "क्रूर" होना है अधिकांश चीजों को सही तरीके से प्राप्त करने के लिए (कॉन्फ़िगरेशन सेटिंग्स, आदि)

  2. विकी, विकी, विकी - हम टीम और प्रोजेक्ट विकी को अद्यतित रखने के लिए कड़ी मेहनत करने का प्रयास करते हैं।

अन्य प्रतिक्रियाओं को देखने के लिए उत्सुक।

4

यह इस तरह का एप्लीकेशन है जिसे हम Tideway Systems पर उत्पादित करते हैं, और इस उद्देश्य के लिए कई बड़े संगठन उपयोग करते हैं। आप अपनी संपत्ति की खोज के लिए उत्पाद का उपयोग कर सकते हैं, और अपने व्यावसायिक ऐप्स का वर्णन करने के लिए मॉडलिंग क्षमताओं का उपयोग कर सकते हैं (जो आम तौर पर सॉफ़्टवेयर के एक से अधिक टुकड़े और अवधि सर्वर होते हैं)।

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

अस्वीकरण: मैं Tideway पर विकास समूह चलाता हूं। उत्पाद IMO बहुत अच्छा है, हालांकि मैं इसके बारे में किसी भी अपने आप को सीधे :)

+0

तो क्या यह सॉफ़्टवेयर अनिवार्य रूप से मेरे स्रोत कोड को स्कैन करेगा और यह तय करेगा कि एप्लिकेशन किस सिस्टम पर निर्भर है? – GateKiller

+0

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

4

बारी प्रत्येक मशीन एक बंद एक द्वारा नहीं लिखा और देखते हैं कि टूट जाता है .. है; पी

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

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

0

सिस्टम निर्भरता मानचित्रण एक बात है। सही पर्यावरण सेटिंग्स, यूआईडी, पासवर्ड, प्रतिरूपण सेटिंग्स, डेटाबेस नाम, और अन्य डेटा जो विकास से क्यूए से यूट तक उत्पादन में बदलते हैं, असली चुनौती है।

कौन उन सभी को स्टोर/याद करता है?

डेवलपर जानता है कि उसका कौन सा उत्पादन सर्वर (एस) उसका आवेदन करेगा। वह केवल अपने विकास डेटाबेस के नाम दस्तावेजों, यूआईडी के, लोक निर्माण विभाग और उसके डेटाबेस तालिकाओं, कोन तार, आदि

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

फिर क्यूए और यूएटी में स्थानांतरित होने पर, कौन?

अगले माइग्रेशन समूह को बदलने की क्या ज़रूरत है, इसे सूचित करने के लिए कौन जिम्मेदारी है?

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

जिम्मेदारी से परे मुझे लगता है कि इस जानकारी के लिए एक केंद्रीय भंडार है।

यानी। एक प्रणाली जो सभी परियोजनाओं/अनुप्रयोगों के लिए सभी कॉन्फ़िगरेशन सेटिंग्स संग्रहीत करती है, और आपकी "भूमिका" के आधार पर आप वास्तविक मानों को देख/देख नहीं सकते हैं।

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

यूएटी और अंततः प्रोड के लिए दोहराना।

जब कोई इस माइग्रेशन सिस्टम को बनाता है तो मुझे बताएं, क्योंकि इससे कई लोगों की मदद मिलेगी।

शायद मैं इसे स्वयं बनाउंगा ... कौन मुझे अनुबंध करना चाहता है?

1

दो शामिल समस्याओं के प्रकार:। जो लोग चाहते हैं के लिए

क) जानना चाहेंगे कि वे जो अंतर-निर्भरता और में उनकी प्राथमिकताएं ट्रैक करना चाहते हैं के लिए प्रत्येक घटक

ख) के लिए निर्भरता निर्धारित करने के लिए। घटकों की एक प्रणाली। (जैसा कि, कौन सा घटक पहले परीक्षण वातावरण में स्थापित हो जाता है ...)

यदि आपके पास घटक की एक श्रृंखला है, जिसमें से प्रत्येक आप निर्भरताओं को जानते हैं, और आप पूरी सूची के लिए निर्भरता आदेश चाहते हैं घटकों के, आपको एक पेर्ल मॉड्यूल मिल सकता है जिसे एल्गोरिदम :: निर्भरता :: कुछ मूल्य होने का आदेश दिया जाता है। ऐसे अन्य संबंधित मॉड्यूल हैं जो घटकों आदि के डेटाबेस रिकॉर्ड, या यहां तक ​​कि सरल फ़ाइल रिकॉर्ड के साथ काम कर सकते हैं। लेकिन एक चेतावनी: मुझे इसे काम करने में समस्याएं आई हैं।

वैकल्पिक रूप से, एक ग्राफिंग उपकरण मूल्य का हो सकता है।

1

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

digraph g { 
rankdir=LR; 
app1->app2->db1; 
app1->app3; 
} 

आशा इस मदद करता है,

+1

कोड को कोड के रूप में प्रारूपित करने के लिए (और सादा पाठ के रूप में नहीं) लाइन की शुरुआत में 4 रिक्त स्थान जोड़ें। – Artemix

0

मैं एक नौकरी के लिए नया था, और यह एक पहला काम है कि मैं प्रणाली निर्भरता की पहचान जाना के रूप में सुझाव दिया गया था:

यहाँ एक उदाहरण है। यह पता चला है कि मेरे मालिक का क्या मतलब था लोगों से बात करना - इस तरह मैं सीखूंगा कि कौन था। मैंने सोचा कि मेरा मालिक चाहता है कि मैं ऐसा करने के लिए एक कंप्यूटर प्रोग्राम लिखूं। और इसलिए मैंने किया। मेरी धारणा यह थी कि यदि कोई प्रोग्राम किसी अन्य प्रोग्राम (एक सेवा या सर्वर) का ग्राहक होता है, तो netstat -pant और netstat -panu तब एस्टाब्लिशिश के लिए grep आपको वह देगा। आप सुनवाई के लिए आउटपुट grepping द्वारा सेवाओं की पहचान कर सकते हैं।

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

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

यह और भी दिलचस्प हो जाता है क्योंकि सेवाएं (प्रोग्राम) सर्वर (हार्डवेयर) पर निर्भर करती हैं। सर्वर, बदले में, बिजली और एयर कंडीशनिंग पर निर्भर करता है।

इसलिए मेरी सोच नियंत्रण से बाहर हो गई, चीजें अधिक जटिल हो गईं, और मैंने इन सभी निर्भरताओं को पकड़ने के लिए एक डोमेन विशिष्ट भाषा (डीएसएल) बनाने के बारे में सोचा। मैंने सोचा कि, उदाहरण के लिए, server_1, server_3, और server_5 पावर चरण 1 पर हैं; सर्वर_2, server_4 और server_6 पावर चरण 2 पर हैं। Server_1, Server_3 और server_5 सभी एक ही समय में विफल हो जाते हैं: शायद चरण 1 विफल हो गया है। मैंने अभी भी काफी समझ नहीं लिया है। जाहिर है, एक निर्देशित ग्राफ द्वारा स्थिति का प्रतिनिधित्व किया जा सकता है, मैंने अभी विवरणों का काम नहीं किया है।

संबंधित मुद्दे