7

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

  • आपके द्वारा उपयोग की जाने वाली भाषा (ओं)/ढांचे के नवीनतम संस्करण में नई सुविधाएं उपलब्ध हैं।
  • नए घटकों/ढांचे/प्लगइन्स की उपलब्धता जो संभावित रूप से उत्पाद को बेहतर बना सकती हैं।
  • आवश्यकता ने इसकी दिशा में बदलाव किया है, मौजूदा उत्पाद को नई जरूरतों का सामना करने के लिए डिज़ाइन नहीं किया गया था।

शर्त के रूप में ऊपर के साथ, मैं इस चर्चा गंभीर लेने के लिए और एक वेब अनुप्रयोग के लिए एक upgradable समाधान का सार की पहचान चाहते हैं। चर्चा में आप विकास (प्रारंभिक, जल्दी उन्नयन, वृद्धिशील upgardes) के किसी भी चरणों के बारे में बात करते हैं और निम्न में से अधिक में से एक को कवर कर सकते:

एक वेब अनुप्रयोग के लिए भाषा (ओं) का
  • विकल्प।
  • ढांचे का उपयोग करने के लिए निर्णय या नहीं? (ओवरहेड पर विचार करें)
  • डीबीएमएस और इसकी डिजाइन का विकल्प
  • हार्डवेयर और सेटअप का विकल्प?
  • आवश्यकताओं में लगातार परिवर्तन (है, जो वेब अनुप्रयोग का एक स्वाभाविक हो सकता है) कुल नया स्वरूप की ओर
  • रणनीति/निर्णय

उत्तर

5

हमारी कंपनी का वेब समाधान अपने चौथे प्रमुख पीढ़ी पर है, जो पिछले 8 वर्षों में काफी विकसित हुआ है। सबसे हालिया पीढ़ी ने इस कार्य को मदद करने के लिए व्यापक रूप से संरचनाओं की शुरुआत की क्योंकि नई ग्राहक मांगों के आधार पर पिछली पीढ़ी को अद्यतन करने के लिए यह अनावश्यक हो रहा था। इस प्रकार, मैंने 200 9 में इस समस्या के बारे में सोचने में काफी समय बिताया।

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

जहाँ तक चौखटे और भाषाओं जाना के रूप में, वहाँ दो प्राथमिक आवश्यकताएँ हैं: उस ढांचे लंबे समय तक रहा और स्थिर हो सकता है और पर्यावरण एक Separation of Concerns समर्थन करते हैं। एएसपी.नेट ने इस संबंध में मेरे लिए अच्छा काम किया है: यह एक तर्कसंगत तरीके से विकसित हुआ है और बिना किसी विघटन के पुराने कोड को अमान्य कर दिया गया है। मैं एसओसी का प्रबंधन करने के लिए एक अलग बिजनेस लॉजिक लेयर का उपयोग करता हूं लेकिन एएसपी.नेट अब भी एमवीसी विकास का समर्थन करता है।इसके विपरीत, मैं इसके साथ काम करने के कुछ महीनों के बाद PHP को नापसंद करने आया क्योंकि यह केवल गन्दा प्रथाओं को प्रोत्साहित करता था जो भविष्य के उन्नयन को खतरे में डाल देंगे।

डीबीएमएस चयन के संबंध में, कोई भी आधुनिक RDMS (SQL सर्वर, MySQL, Oracle) आपको अच्छी तरह से सेवा प्रदान करेगा। यहां कुंजी है हालांकि: आप को अपग्रेड प्रबंधित करने के लिए डीडीएल स्क्रिप्ट को बनाए रखने की आवश्यकता है। यह सिर्फ जीवन का एक तथ्य है। तो, आप इसे एक ट्रैक्टेबल प्रक्रिया कैसे बनाते हैं? किसी तीसरे पक्ष के डेवलपर से सबसे मूल्यवान टूल लाल गेट से एसक्यूएल की मेरी प्रति है। यह प्रक्रिया पूरी तरह से दुःस्वप्न और मेरे कोड को विकसित करने की मेरी क्षमता पर एक महत्वपूर्ण ड्रैग थी जब तक कि मुझे यह टूल नहीं मिला। इसलिए, जेनेरिक अनुशंसा डेटाबेस का उपयोग करना है जिसके लिए डेटाबेस संरचनाओं की तुलना करने के लिए एक उपकरण मौजूद है। एसक्यूएल सर्वर इस संबंध में बहुत भाग्यशाली है।

हार्डवेयर लगभग कोई परवाह नहीं है। जब तक आपकी विकास प्रक्रिया में उचित रिलीज बिल्ड प्रक्रिया के साथ शामिल हो, तब तक आप हमेशा नए हार्डवेयर पर जा सकते हैं।

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

कुल रीडिज़ाइन के लिए रणनीति/निर्णय है: नहीं। यदि आप प्रक्रिया में उचित विचार रखते हैं, तो आप मुख्यधारा के उपकरण का चयन करेंगे, और चिंता का पृथक्करण लागू करेंगे, फिर HTTP और RDBMS के पूर्ण त्याग से कम कुछ भी नहीं, कुल नवीनीकरण करना चाहिए।

यदि आपके पास पर्याप्त चंचल कि कुछ भी कर सकते हैं परिवर्तन, क्या तुमने कभी एक स्थिति में होने की संभावना नहीं कर रहे हैं, जहां सब कुछ चाहिए परिवर्तन।

+1

ग्रेट उत्तर:) –

+0

+1 अच्छा स्पष्टीकरण। इसके अलावा बदलती तकनीक भी उन्नयन दृष्टिकोण में एक भूमिका निभाती है।यदि कोई देखता है कि एक वर्ष में एक नई तकनीक उपलब्ध होगी या तो क्या किसी को इसके लिए इंतजार करना चाहिए या वर्तमान तकनीक के आधार पर अपग्रेड के लिए जाना चाहिए? – HotTester

+0

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

1

गेंद रोलिंग प्राप्त करने के लिए करने के लिए रणनीति, मैं एक भाषा/ढांचे सोचा था जो निर्भरता इंजेक्शन की अवधारणा का समर्थन करता है (या नियंत्रण के इनवर्जन को इन दिनों कहा जाता है) सूची में अधिक होगा।

+2

नोट: आईओसी * नहीं * निर्भरता इंजेक्शन है। डीआई एक "तरह का" आईओसी है। Http://garyshortor.web140.discountasp.net/blog/archive/2008/02/05/inversion-of-control-not-di.aspx – VonC

+0

@VonC - आप रहते हैं और सीखते हैं। :-) सर उठाने के लिए धन्यवाद। –

+0

http://bradleyboveinis.com/post/2009/09/03/Inversion-of-Control-vs- निर्भरता- इंजेक्शन.एएसएक्स भी दिलचस्प है, उस तरफ विषय पर "डीआई और आईओसी" – VonC

0

आप पाएंगे कि आरडीबीएमएस तकनीक आसानी से मापनीय नहीं है। सभी विक्रेताओं आपको अन्यथा बताएंगे जब तक कि आप एकाधिक सर्वरों का प्रयास नहीं करते हैं और अंतर्निहित सीमाओं को लोड-बैलेंसिंग दिखाएंगे। बाकी सब कुछ "बड़ा लोहे" के साथ बढ़ाया जा सकता है और यह अधिक कुशल कोड हो सकता है लेकिन डेटाबेस को विभाजित और आसानी से वितरित नहीं किया जा सकता है।

वेब एप्लिकेशन उम्मीदवार डेटाबेस प्रौद्योगिकियों में नवाचार ड्राइव करेंगे और हमें पुरातन रिलेशनल मॉडल दिमागी सेट से बाहर निकलने में मदद करेंगे। यह लंबे समय से अतिदेय है।

मैं शुरुआत से ही इस कमजोर लिंक पर बहुत अधिक ध्यान देने की सलाह देता हूं।

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

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