40+ वर्ष के जीवनकाल के साथ वेब एप्लिकेशन को डिजाइन करने की सलाह


73

परिदृश्य

वर्तमान में, मैं एक स्वास्थ्य देखभाल परियोजना से अलग हूं जिसकी मुख्य आवश्यकता स्वास्थ्य देखभाल प्रदाताओं द्वारा उपयोगकर्ता द्वारा उत्पन्न रूपों का उपयोग करके अज्ञात विशेषताओं के साथ डेटा पर कब्जा करना है। दूसरी आवश्यकता यह है कि डेटा अखंडता महत्वपूर्ण है और यह अनुप्रयोग 40+ वर्षों के लिए उपयोग किया जाएगा। हम वर्तमान में पिछले 40 वर्षों से क्लाइंट के डेटा को विभिन्न स्रोतों (पेपर, एक्सेल, एक्सेस, आदि ...) से डेटाबेस में स्थानांतरित कर रहे हैं। भविष्य की आवश्यकताएं हैं:

  • रूपों का वर्कफ़्लो प्रबंधन
  • प्रपत्रों का शेड्यूल प्रबंधन
  • सुरक्षा / भूमिका आधारित प्रबंधन
  • रिपोर्टिंग इंजन
  • मोबाइल / टेबलेट का समर्थन

परिस्थिति

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

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

मैंने ड्रुपल जैसी सीएमएस प्रणाली का उपयोग करने का सुझाव दिया, लेकिन ग्राहक के संगठन में नीतिगत कारणों से, सिस्टम को खरोंच से बनाया जाना चाहिए।

यह पहली बार है कि मैं 40+ जीवन काल के साथ एक प्रणाली तैयार कर रहा हूँ। मैंने केवल 3-5 साल की उम्र वाली परियोजनाओं पर काम किया है, इसलिए यह स्थिति बहुत नई है, फिर भी रोमांचक है।

प्रशन

  • क्या डिजाइन विचार प्रणाली को और अधिक "भविष्य के प्रमाण" बना देगा?
  • सिस्टम को और अधिक "भविष्य के प्रमाण" बनाने के लिए क्लाइंट / पीएम से क्या प्रश्न पूछे जाने चाहिए?

59
भविष्य का प्रमाण देना एक बात है, लेकिन मेरा मानना ​​है कि एक ग्राहक को सॉफ्टवेयर के लिए पूछना है जो कि जीवन काल की अपेक्षा है जो कि मोबाइल / टैबलेट कंप्यूटिंग के वर्तमान इतिहास से 10x-20x लंबा है या भाषा के वर्तमान इतिहास से 5x-8x लंबा है। उपयोग में है ... कंप्यूटिंग के दिए गए मॉडल की स्थिरता के बारे में अनुचित रूप से आशावादी।

31
व्यर्थता में एक अभ्यास की तरह लगता है कि 40 + वर्ष 'भविष्य के प्रमाण' होने के लिए डिजाइनिंग।
whatsisname

10
अगले 40 वर्षों के लिए डेटाबेस के उपयोगी होने की आवश्यकता को पूरा करने के लिए मैं यह सब कागज पर लिखूंगा। कागज ने खुद को साबित कर दिया है, जबकि डिजिटल स्टोरेज ने ज्यादातर साबित कर दिया है कि बहुत सारे डेटा को तेजी से कैसे खोना है। (लेकिन संभोग सभी डेटा को संरक्षित करता है जिसे नष्ट कर दिया जाना चाहिए)
पीटर बी

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

12
2 लोगों के लिए 6 महीने के लिए वास्तुकार और एक आवेदन को लागू करने की आवश्यकता है जो पिछले 40+ वर्षों के लिए है? इससे कोई फर्क नहीं पड़ता कि आप कितने अच्छे हैं, असफलता के लिए एक सेटअप की तरह लगता है। यदि आप अपने संगठन को यह नहीं बता सकते हैं कि यह कैसे अनुचित है, तो मैं आपको अन्य रोजगार ASAP की तलाश शुरू करने का सुझाव दूंगा।
dsw88

जवाबों:


132

डेटा किंग है

मुझे लगता है कि इसकी एक अनुचित बात यह है कि २०५३ में २०१३ तक एक वेब एप्लिकेशन सर्कुलेट होने की उम्मीद है। टेक्नोलॉजीज बदलने जा रहे हैं। प्लेटफार्म आने-जाने वाले हैं। HTML तब तक एक विचित्र स्मृति हो सकती है। लेकिन आपका डेटा अभी भी आसपास रहेगा।

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

वास्तविक अनुप्रयोगों के संबंध में, आपकी कंपनी शायद 'स्क्रैच से निर्माण' निर्देशन करने में यहाँ सही है। मैं कुछ 10 साल पुराने वेब ऐप्स बनाए रखता हूं, और मुझे बहुत खुशी है कि वे 2003 के प्रचलित सीएमएस सिस्टम में बंद नहीं हैं। वे बड़े हो चुके, बहुत ही सरल फ्रेमवर्क का उपयोग करते हैं। मुझे लगता है कि इस तरह के लिए आप एक बहुत ही बुनियादी ढांचे के साथ बेहतर हैं जो आप परियोजना की जरूरतों के लिए विशेष रूप से बनाते हैं।

लेकिन वास्तविकता यह है कि 40 वर्षों में, कंपनी (उम्मीद है) विकासशील प्लेटफार्मों के लिए अनुकूल करने के लिए काफी कुछ फ्रंट-एंड बैक एंड सर्विसेज बना रही होगी। तो यह देखते हुए कि, मैं अलग-अलग उपयोगकर्ता-सामना करने वाले अनुप्रयोगों के लिए 5-10 साल का जीवनकाल लक्षित करूंगा।


13
"हम संभवतः 40 वर्षों में इस कोड का उपयोग नहीं करेंगे!" यही कारण है कि वहाँ एक Y2K बग के साथ शुरू किया गया था। अपने कोड को प्रतिस्थापित करने की अपेक्षा करना केवल बुरा व्यवहार है।
डगएम

71
Y2K 'बग' एक डेटा समस्या थी - 4 के बजाय 2 अंक संग्रहीत किए गए थे। यही कारण है कि मैं डेटा पर ध्यान केंद्रित करने का सुझाव देता हूं।
ग्रैंडमास्टरबी

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

4
यह ठोस सलाह है। बहुत सारे कोबोल कार्यक्रम अभी भी चल रहे हैं जो मूल रूप से 20-30 साल पहले लिखे गए थे। यद्यपि तकनीक आगे बढ़ती है, यदि आपका डेटा और ऑब्जेक्ट मॉडल ठोस है, और डेटा रुचि का बना रहता है, तो आपका कोड किसी न किसी रूप में उपयोग में रहेगा।
Bobble

7
चूंकि किसी ने Y2K लाया: UNIX Y2K ( en.wikipedia.org/wiki/Year_2038_problem ) से सावधान रहें
19

40

हम ऐसे सॉफ़्टवेयर का उत्पादन करते हैं जो 20 वर्षों से ग्राहकों को भुगतान करके उपयोग में हैं। कोडबेस ने कई पीढ़ियों के सोर्स कंट्रोल टूल्स को पछाड़ दिया है। हमारा सॉफ़्टवेयर टैबलेट की चीज़ को छोड़कर आपके सभी बुलेट पॉइंट को हिट करता है।

कुछ चिंताओं में ESIGN और UETA शामिल हैं । हमारे वकीलों का मानना ​​है कि हमें इलेक्ट्रॉनिक रिकॉर्ड को न्यूनतम 10 वर्षों तक पढ़ने योग्य बनाए रखने की आवश्यकता है। उन दस्तावेजों के लिए जिन्हें संपूर्ण रखा जाता है, आपको पीडीएफ / ए में देखना चाहिए ।

अपने डेटाबेस के लिए, सामान्यीकरण के बारे में बहुत अधिक चिंता न करें। इसके बजाय आपको सब कुछ लॉग इन करने और डेटा में परिवर्तन / हटाने वाले ऑडिट टेबल रखने के बारे में चिंतित होना चाहिए। संस्करणों को अपग्रेड करते समय, यह सुनिश्चित करने के लिए पर्याप्त समय के लिए नए संस्करणों के परीक्षण पर योजना बनाएं कि आपने अपना डेटा माइग्रेट कर लिया है। नए संस्करणों के इस परीक्षण में नए ऑपरेटिंग सिस्टम भी शामिल हैं - हमने वर्षों में कुछ बहुत ही अप्रिय आश्चर्य किया है। एक रोलबैक करने की जरूरत है कि घटना में स्थापना मीडिया और लाइसेंस कुंजी को सुरक्षित रखें। परीक्षण बैकअप। यदि आप डेटाबेस में संग्रहित करने के लिए वस्तुओं को क्रमबद्ध करने जा रहे हैं, तो अपने विकास ढांचे द्वारा आपूर्ति किए गए क्रमांकन के बजाय XML करें।

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

अपने कोडबेस के लिए, सुनिश्चित करें कि आपके पास आपके कोड में टिप्पणियां हैं। एक संस्करण नियंत्रण प्रणाली से दूसरे में माइग्रेट करना आपके चेक-इन टिप्पणियों को लगभग हमेशा खो देगा। मैं कल्पना और बग संख्या के बाद इकाई परीक्षणों के नामकरण का प्रशंसक हूं। इस तरह अगर इकाई परीक्षण Test_Bug_1235 टूट जाता है, तो आप जानते हैं कि क्या और कहाँ से परीक्षण किया जाना चाहिए, इसे ट्रैक करना है। यह आपके परीक्षणों के नामकरण के रूप में "सेक्सी" नहीं है, Check_File_Save_Networked_Drivesलेकिन परीक्षण के उस प्रकार को विनिर्देशों, आवश्यकताओं या बग के विपरीत करना मुश्किल है Test_requirement_54321_case_2


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

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

3
... कम से कम SVN को git पूर्ण प्रतिबद्ध इतिहास के साथ संभव है।
परेला

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

2
मेरा सुझाव है कि आप बग ट्रैकिंग और स्पेसिफिकेशन नंबरों के बाद ही टेस्ट का नाम नहीं लेते हैं , क्योंकि: a) बग नंबर 0 से शुरू होते हैं (क्योंकि किसी को भी ऐसा नहीं लगता है> 5-अंकीय संख्या और बग ट्रैकिंग सॉफ़्टवेयर का आदान-प्रदान हो जाता है; खो जाना (बदसूरत लेकिन यह अक्सर पर्याप्त होता है); ग) सेक्सी नाम अक्सर इसे स्पष्ट करते हैं। हालांकि, युक्ति / बग आईडी का संदर्भ होना हमेशा एक अच्छा विचार है।
बर्नस्टीन

29

यह पता लगाने की कोशिश करने के बजाय कि यह एप्लिकेशन अभी भी 20 साल से ऑपरेशन में कैसे चल रहा है, मुझे लगता है कि आपको अपने छह महीने उन समस्याओं को ठीक करने में बिताने चाहिए जो आपने पाया कि मूल वास्तुकार की वजह से, एक समझदार, मजबूत वास्तुकला और वहां से आगे बढ़ो।

एक डेटाबेस की आंशिक डी-सामान्यकरण जरूरी नहीं है कि चिकित्सा सेटिंग में पूरी तरह से अप्रत्याशित है। मेडिकल डेटाबेस के कुछ हिस्सों में विशेषताएं हैं जो उन्हें EAV (इकाई / गुण / मूल्य) मॉडल के लिए एक अच्छा फिट बनाती हैं ।


2
@ user2708395 ईएवी डिज़ाइन से सावधान रहें क्योंकि यह सबसे अधिक प्रदर्शन करने वाला या क्वेरी करने में आसान नहीं हो सकता है। यह भी रिपोर्टिंग के लिए एक अच्छा विकल्प नहीं हो सकता है।
maple_shaft

@maple_shaft यही मैंने भी पढ़ा है। मैं इससे बहुत सतर्क रहने वाला हूं क्योंकि मैंने कुछ डरावनी कहानियां सुनीं जहां लोग इसका इस्तेमाल करते हैं। कुछ रिपोर्टिंग डेटाबेस का उपयोग करके इसे क्वेरी करना आसान बनाता है क्योंकि क्लाइंट केवल महीने में एक बार रिपोर्ट बनाता है।
पीट

4
@maple_shaft: आमतौर पर डेटा EAV स्कीमा / डेटाबेस से एक अलग रिपोर्टिंग स्कीमा / डेटाबेस से निकाला जाता है।
FrustratedWithFormsDesigner

@FrustratedWithFormsDesigner यह एक उत्कृष्ट बिंदु है। आपके स्कीमा में लचीलापन जो EAV प्रदान करता है, वह बेजोड़ है, लेकिन यह निश्चित रूप से सभी दृढ़ता के लिए चांदी की गोली नहीं है।
maple_shaft

जब मैं अनुदान देता हूं कि ईएवी का उपयोग किया जा सकता है, तो आप उन रिश्तों पर आश्चर्यचकित होंगे जो आप पा सकते हैं। उस ने कहा, इस तरह के उद्योगों (स्वास्थ्य सेवा, ग्राहक संबंध आदि) के लिए अक्सर जो अतिरिक्त विशेषताएँ दिखाई देती हैं, उन्हें कहीं और जाना पड़ता है ... बस इसे एक विशेषता-कुंजी तालिका के साथ वापस करना सुनिश्चित करें, ताकि एक विहित सूची प्राप्त की जा सके जिम्मेदार बताते हैं।
क्लॉकवर्क-म्यूज़ियम

13

फ्रंट-एंड परिप्रेक्ष्य से उत्तर:

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

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

यहां लक्ष्य एक वेब ऐप लिखना नहीं है जो उनके सर्वर पर जाएगा और 40 साल तक बिना किसी को फिर से इसे छूए रहेगा। यह एक नींव का निर्माण करना है जो अभी भी लाइन के नीचे दशकों तक उपयोग में हो सकता है, जो खरोंच से पुनर्निर्माण किए बिना नई सुविधाओं का समर्थन करने के लिए बढ़ सकता है।

सबसे पहले, आपको आधिकारिक मानकों और केवल आधिकारिक मानकों पर कोड करना होगा । कोई जावास्क्रिप्ट सुविधाएँ एक अनुसमर्थित ECMAScript मानक का हिस्सा नहीं हैं; ES5.1 वर्तमान संस्करण है और आम तौर पर समर्थित है ताकि लक्ष्य के लिए सुरक्षित हो। इसी तरह, HTML5, CSS और यूनिकोड के वर्तमान संस्करण अच्छे हैं। कोई प्रयोगात्मक जावास्क्रिप्ट, CSS3 या HTML सुविधाएँ (वेंडर-उपसर्ग वाले या ब्राउज़रों के बीच 100% समझौते के बिना)। और कोई ब्राउज़र-विशिष्ट संगतता हैक नहीं करता है। एक बार मानक में होने के बाद आप एक नई सुविधा का उपयोग करना शुरू कर सकते हैं और हर कोई बिना उपसर्ग के इसका समर्थन करता है।

ES5 सपोर्ट का मतलब IE8 या उससे पहले ड्राप करना होगा, जो मैं वैसे भी सुझाव देता हूं क्योंकि इसके लिए ब्राउज़र-विशिष्ट हैक्स की आवश्यकता होती है जो कुछ वर्षों में बेकार हो जाएंगे। मैं दीर्घायु में सबसे अच्छे मौके के लिए ES5 के स्ट्रिक्ट मोड का सुझाव देता हूं, जो वास्तव में IE10 और अन्य सभी के हाल के संस्करणों में आपके आधारभूत ब्राउज़र संगतता को निर्धारित करता है । उन ब्राउज़र को एचटीएमएल 5 के कई फॉर्म सत्यापन और प्लेसहोल्डर सुविधाओं के लिए मूल समर्थन भी है, जो बहुत लंबे समय तक उपयोगी होंगे।

ECMAScript के नए संस्करण पुराने संस्करणों के साथ संगतता बनाए रखते हैं, इसलिए यदि आपके कोड को वर्तमान मानकों के अनुसार लिखा गया है, तो आगामी सुविधाओं को अपनाना बहुत आसान होगा। उदाहरण के लिए, आगामी classसिंटैक्स का उपयोग करके परिभाषित कक्षाएं वर्तमान constructor.prototypeसिंटैक्स के साथ परिभाषित कक्षाओं के साथ पूरी तरह से विनिमेय होंगी । इसलिए पांच साल में एक डेवलपर कुछ भी बिना - निश्चित रूप से यह मानकर ईएस 6 प्रारूप में कक्षाओं को फाइल-बाय-फाइल के आधार पर फिर से लिख सकता है कि आपके पास भी अच्छी यूनिट परीक्षण हैं।

दूसरा, ट्रेंडी जावास्क्रिप्ट ऐप फ्रेमवर्क से बचें, खासकर यदि वे आपके ऐप को कोड करने के तरीके को बदलते हैं। बैकबोन सभी क्रोध था, फिर स्प्राउटकोर और एम्बर थे, और अब एंगुलर की रूपरेखा हर किसी को बढ़ावा देने के लिए प्यार करती है। वे उपयोगी हो सकते हैं, लेकिन उनके पास भी कुछ सामान्य है: वे अक्सर ऐप को तोड़ते हैं और नए संस्करणों के आने पर कोड परिवर्तन की आवश्यकता होती है और उनकी लंबी उम्र संदिग्ध होती है। मैंने हाल ही में एक कोणीय 1.1 ऐप को 1.2 पर अपडेट किया, और काफी कुछ फिर से लिखना पड़ा। इसी तरह, बैकबोन 2 से 3 में जाने के लिए बहुत से HTML परिवर्तनों की आवश्यकता होती है। एक कारण के लिए मानक धीमी गति से चल रहे हैं, लेकिन ये ढांचे तेजी से आगे बढ़ते हैं और समय-समय पर टूटने वाली चीजें लागत होती हैं।

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

इसलिए यदि आप थर्ड-पार्टी लाइब्रेरी या फ्रेमवर्क को अपनाने की सोच रहे हैं, तो अपने आप से पूछें कि भविष्य में इसे निकालना कितना कठिन होगा। अगर यह एंगुलर जैसा ढाँचा है जिसे कभी भी आपके ऐप को स्क्रैच के पुनर्निर्माण के बिना हटाया नहीं जा सकता है, तो यह एक अच्छा संकेत है कि इसे 40 साल की वास्तुकला में इस्तेमाल नहीं किया जा सकता है। यदि यह एक तृतीय-पक्ष कैलेंडर विजेट है जिसे आपने कुछ कस्टम मिडलवेयर के साथ अमूर्त किया है, तो इसे बदलने में कुछ घंटे लगेंगे।

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

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

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

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

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

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


1
'जेएस फ्रेमवर्क' पर अच्छी सलाह बैकएंड फ्रेमवर्क पर भी लागू होती है। अंकल बॉब मार्टिन की सलाह देखें ।
ब्रायन लो

सच कहूँ तो, मैं पूरी तरह से संदर्भ दिया जेएस से सावधान रहना होगा। मैं कल्पना कर सकता हूँ कि HTML लगभग 40 वर्षों में है; मैं जो भी कनवर्टर का उपयोग किया जा रहा है उस पर भरोसा नहीं करना चाहिए, तो जेएस को जिस तरह से आप का समर्थन करना चाहते हैं (और विचार करें कि आपका जेएस संभवतः गलत काम कर रहा है क्योंकि पसंदीदा आउटपुट डिवाइस अकल्पनीय रूप से भिन्न हो सकता है)।
ईमोन नेरबोन

10

अपने ग्राहक की अनुचित अपेक्षाओं के मुद्दों को छोड़कर और डिज़ाइन के मुद्दों पर ध्यान केंद्रित करते हुए, मैं 40 साल तक नहीं जाऊँगा, लेकिन आपको जो समस्या दीर्घकालिक अपवित्रता की है, वह ठीक वही है जो REST के लिए बनाई गई थी । इसके द्वारा मैं वास्तव में REST को एक वास्तुकला शैली के रूप में समझता हूं, न कि buzzword संचालित विकास जो इन दिनों आमतौर पर शब्द के साथ जुड़ा हुआ है।

कुछ हद तक, लोगों को REST गलत लगता है क्योंकि मैं अपने शोध प्रबंध के भीतर मीडिया प्रकार के डिजाइन पर पर्याप्त विवरण शामिल करने में विफल रहा। ऐसा इसलिए है क्योंकि मैं समय से बाहर भाग गया, इसलिए नहीं कि मुझे लगा कि यह REST के अन्य पहलुओं की तुलना में कम महत्वपूर्ण है। इसी तरह, मुझे संदेह है कि बहुत से लोगों को यह गलत लगता है क्योंकि वे इस विषय पर केवल विकिपीडिया प्रविष्टि पढ़ते हैं, जो आधिकारिक स्रोतों पर आधारित नहीं है।

हालांकि, मुझे लगता है कि ज्यादातर लोग सिर्फ यह गलती करते हैं कि साधारण चीजों को डिजाइन करना सरल होना चाहिए। वास्तव में, किसी चीज को डिजाइन करने के लिए आवश्यक प्रयास परिणाम की सादगी के विपरीत आनुपातिक है। वास्तुशिल्प शैली के अनुसार, REST बहुत सरल है।

REST दशकों के पैमाने पर सॉफ़्टवेयर डिज़ाइन है : हर विवरण का उद्देश्य सॉफ़्टवेयर की दीर्घायु और स्वतंत्र विकास को बढ़ावा देना है।

http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven#comment-724

आपने उल्लेख किया है कि आप RESTful इंटरफ़ेस का उपयोग करना चाहते हैं। यह टिप्पणी खुद बताती है कि आपको इसमें कुछ गंभीर शोध करने चाहिए और यह समझने की कोशिश करनी चाहिए कि वास्तव में REST क्या है। आप शायद इसे केवल HTTP तरीकों की मैपिंग के साथ CRUD के संचालन से जोड़ रहे हैं जो कि ज्यादातर लोगों को लगता है कि REST है, लेकिन इसका इससे कोई लेना-देना नहीं है।

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


यह बहुत मददगार है! धन्यवाद। मैं REST में कुछ और शोध कर रहा था और मैं इसका बड़े पैमाने पर लाभ देख सकता हूं और यह कैसे HTTP तरीकों से आगे बढ़ाया जा सकता है। यह बहुत शक्तिशाली सामान है और मैं इसके साथ काम करने के लिए बहुत उत्साहित हूं। लिंक के लिए भी धन्यवाद! काश मेरे पास और समय होता!
पीट

9

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

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

सारांशित: मैं जिन चीज़ों की सबसे अधिक देखभाल करता हूँ, वे उन कार्यों की चिंताओं और विनिमय-क्षमता की जुदाई है जिन्हें कार्यों के लिए सौंपा गया है। आप बस जानते हैं कि 40 वर्षों में (यहां तक ​​कि 5 या 10 में) हार्डवेयर, इंटरफेस, भंडारण, आदि बहुत बदल जाएगा। और बाद में डेवलपर्स को आपके एप्लिकेशन के उन परिवर्तनों और विनिमय भागों पर प्रतिक्रिया करनी होगी, चाहे वह डेटा कंटेनर हो या उपयोगकर्ता इंटरफ़ेस के कुछ भाग।


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

7

संभव के रूप में "भविष्य-प्रूफ" चीजों को बनाने के लिए, परिवर्तन की योजना बनाएं। यही है, आसानी से बदलने की क्षमता के अलावा किसी भी चीज़ के लिए अनुकूलित न करने के लिए अपने सबसे कठिन प्रयास करें। तो कोई सामान्यीकरण नहीं, कोई सख्त मान्यता नहीं है, और ढीली कपलिंग जालोर।

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

  • स्कीमा-कम NoSQL डेटाबेस का उपयोग करें। MongoDB जैसे दस्तावेज़ स्टोर के लिए उपयोग किए जा रहे असंरचित डेटा का प्रकार लगभग पाठ्यपुस्तक से बाहर है। पारंपरिक संबंधपरक डेटाबेस और उनका सामान्यीकरण अच्छा है जब आप जानते हैं कि आपका डेटा कैसे संरचित होने जा रहा है, लेकिन यह वास्तव में एक कल्पना है, विशेष रूप से यहाँ। RDBS में स्कीमा बदलने की लागत प्रणाली के विस्तार के रूप में बड़ी और बड़ी हो जाती है। यह जान लें कि अब जो भी ढांचा चुना गया है वह परिवर्तन को समाप्त करने वाला है।

  • व्यापक रूप से स्वीकृत मानकों का उपयोग करके सिस्टम को भारी रूप से कम करना। वेब सेवाओं में सभी डेटा एक्सेस और म्यूटेशन को तोड़ना इस ओर एक कदम है। परिवर्तनों को प्रस्तुत करने के लिए संदेश कतारों के साथ संयोजन करना और इस तरह सिस्टम के अलग-अलग हिस्सों को समय के साथ भाषाओं या प्रौद्योगिकियों को बदलने में मदद मिलेगी।


दुर्भाग्य से, एक स्कीमालेस डेटाबेस का उपयोग करने का मतलब यह नहीं है कि डेटा के पुनर्गठन और पुनर्गठन में शून्य लागत है।
एलेक्स डी

4

ठीक है, इसलिए मैं यहाँ कुछ बातें कहने जा रहा हूँ जो शायद बहुत अलोकप्रिय हो रही हैं, लेकिन यहाँ मेरे साथ रहना।

जैसा कि यह आपकी पहली परियोजना है, जहां डेटा और / या एप्लिकेशन को 20+ वर्षों तक चलना चाहिए, और आप इस परियोजना का नेतृत्व कर रहे हैं, आपको एक कदम पीछे खींचने की जरूरत है और इस परियोजना के सफल होने के बारे में सोचने की जरूरत है । क्योंकि वे मूल रूप से शून्य के बगल में हैं।

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

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

ड्रुपल की तरह परियोजना को टाई करने की इच्छा से पता चलता है कि इस परियोजना को उन लोगों की आवश्यकता क्यों है जो इन प्रकार की परियोजनाओं पर काम करने के अभ्यस्त हैं। आप कुछ भी करने के लिए आवेदन टाई नहीं करना चाहते हैं कि कुछ वर्षों के भीतर शैली से बाहर जा सकते हैं। यदि आप करते हैं, तो 5-10 साल में सिस्टम पर काम करने के लिए किसी को ढूंढना बहुत जल्दी मुश्किल हो सकता है।

मैं इस सलाह को प्रबंधन के लिए ले जाऊंगा और उन्हें समझाऊंगा कि आपको परियोजना पर अधिक वरिष्ठ लोगों को लाने की आवश्यकता है। अन्यथा परियोजना विफल होने के लिए बर्बाद है, और आप शायद इसके लिए दोषी होने वाले को समाप्त कर देंगे।


3

आवेदन किसी भी विकास के बिना 40 साल जीवित रहने की जरूरत है। लेकिन, क्योंकि यह खरोंच से बनाया जाना चाहिए या होना चाहिए, फिर भी यह 'कार्यशील' हो सकता है।

सबसे महत्वपूर्ण बात 'डेटा आर्किटेक्चर' है जो कुछ स्थिरता और शासन के साथ-साथ एक्स्टेंसिबल के लिए अनुमति देता है।

हमने डेटा आर्किटेक्चर और टैक्सोनॉमी डिज़ाइन किए हैं जो लगभग मानवता के अंत तक जीवित रह सकते हैं लेकिन अभी भी एक्स्टेंसिबल हैं। आपके लिए ऐसा करने के लिए आपको एक सच्चा DATA TAXONOMY / DATA ARCHITECTURE व्यक्ति मिल गया है।


मुझे लगता है कि शुरुआत से ही इस परियोजना की विफलता थी कि यह एक उचित डेटा वास्तुकार के बिना शुरू किया गया था। यह निश्चित रूप से बहुत अच्छी सलाह है।
पीट

मुझे कॉल करने और काम पर रखने का समय :) कुछ कंपनियों के लिए डेटा गवर्नेंस और टैक्सोनॉमी बात करना :) जैसा कि हम बोलते हैं :)
एलेक्स एस

3

यहाँ कुंजी डेटाबेस पर ध्यान केंद्रित करने के लिए है (जैसा कि ऊपर कहा गया है)। यह सुसंगत होना चाहिए और पूरी तरह से ऑपरेशन का वर्णन करना चाहिए। इसे बदलते ही ऑपरेशन के साथ बढ़ने की जरूरत है। यदि यह आसान तो बदलने के लिए नहीं है, यह तारीख से बाहर निकलना होगा और कहा कि मौत का चुम्बन है। बाकी अपेक्षाकृत कम महत्वपूर्ण है।

मैं उन लोगों से असहमत हूं जो सामान्यीकरण का सुझाव देते हैं, यह महत्वपूर्ण नहीं है, हालांकि हमेशा ऐसे मामले होते हैं जहां मौजूदा सिस्टम नौकरी तक नहीं होते हैं। इन मामलों में असामान्य रूप से लेकिन सुनिश्चित करें कि डेटाबेस एक परमाणु लेनदेन के हिस्से के रूप में अतिरिक्त लेखन / परिवर्तन को संभालता है। इस तरह से आप समस्या को प्रभावी ढंग से अनदेखा कर सकते हैं जब तक आप इसे ठीक कर सकते हैं।

रिटायरमेंट से पहले मैंने जिस कंपनी के लिए काम किया था, वह एक ऐसी प्रणाली है जो खरोंच से लिखी गई थी और लगभग 25 वर्षों तक लगातार बढ़ी है, और एक मध्यम रिटेलर के लगभग सभी पहलुओं को कवर करती है। इस प्रणाली के पहलू जो मुझे लगता है कि महत्वपूर्ण थे:

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

2

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

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.