मैं एक जूनियर डेवलपर (~ 3 साल का ऍक्स्प) हूं और अपनी नौकरी पर हम एक नई प्रणाली के निर्माण की प्रक्रिया में हैं। मेरे लीड डेवलपर मुख्य वास्तुकार होंगे, हालांकि उन्होंने मुझे चुनौती दी है कि मैं सिस्टम को खुद (समानांतर में) आर्किटेक्चर करने की कोशिश करूं।
विचार-मंथन विचारों के कुछ पुनरावृत्तियों के दौरान और जो मैंने वास्तुकला के सुझावों के रूप में देखा था, उसे प्रस्तावित करते हुए, मेरे नेतृत्व ने मुझे यह प्रतिक्रिया दी कि मैं जो कर रहा हूं, वह "डिजाइनिंग" था न कि "आर्किटेक्चरिंग"।
उन्होंने इस अंतर को वास्तुकला के कार्यान्वयन-अज्ञेय के रूप में वर्णित किया, जबकि एक डिजाइन कार्यान्वयन का वर्णन है। उन्होंने कहा कि मुझे अपनी डिजाइनर टोपी उतारने की जरूरत है और अपने वास्तुकार की टोपी पहननी चाहिए। ऐसा करने के लिए उन्होंने मुझे थोड़ी सलाह दी, लेकिन मैं आपसे भी पूछना चाहूंगा:
मैं सॉफ्टवेयर डिजाइनर मोड से कैसे निकलूं और एक वास्तुकार की तरह अधिक सोचना शुरू कर दूं?
यहाँ "डिज़ाइन" के कुछ उदाहरण दिए गए हैं जो कि मेरे नेतृत्व द्वारा वास्तुकला के लिए प्रासंगिक नहीं थे:
- मैं हमारे सिस्टम से संसाधनों को लोड करने और उतारने के लिए एक एल्गोरिथ्म के साथ आया था और मेरे नेतृत्व ने कहा कि एल्गोरिदम स्पष्ट रूप से वास्तुकला नहीं हैं।
- मैं घटनाओं के एक सेट के साथ आया था जिसे सिस्टम को उठाना चाहिए और उन्हें किस क्रम में उठाना चाहिए, लेकिन यह भी इसे वास्तुकला के रूप में कटौती नहीं करता है।
मैं विवरणों में फंसता हुआ प्रतीत हो रहा हूं और बहुत पीछे नहीं जा रहा हूं। मुझे लगता है कि जब मैं एक ऐसी चीज के साथ आता हूं, जो वास्तुकला स्तर पर होती है, तो मैं अक्सर वहां कई कार्यान्वयन की कोशिश करके और विवरणों में घूमकर फिर सामान्यीकरण और अमूर्तता से वहां पहुंच जाता हूं। जब मैंने इसे अपनी अगुवाई के लिए वर्णित किया, तो उन्होंने कहा कि मैं गलत दृष्टिकोण ले रहा था: मुझे "टॉप डाउन" सोचने की जरूरत थी न कि "नीचे" करने की।
यहाँ परियोजना के बारे में कुछ और विशिष्ट विवरण दिए गए हैं :
- हम जिस प्रोजेक्ट का आर्किटेक्चर कर रहे हैं वह एक वेब एप्लिकेशन है।
- मैं कोड की लगभग 10-100 हजार पंक्तियों का अनुमान लगा रहा हूं।
- हम एक स्टार्ट अप हैं। हमारी इंजीनियरिंग टीम लगभग 3-5 लोग हैं।
- निकटतम चीज जो हम अपने आवेदन की तुलना कर सकते हैं वह एक हल्का सीएमएस है। इसमें समान जटिलता है और यह मुख्य रूप से घटक लोडिंग और अनलोडिंग, लेआउट प्रबंधन और प्लग-इन स्टाइल मॉड्यूल के साथ संबंधित है।
- आवेदन अजाक्स-वाई है। उपयोगकर्ता क्लाइंट को एक बार डाउनलोड करता है फिर डेटा का अनुरोध करता है क्योंकि उसे सर्वर से इसकी आवश्यकता होती है।
- हम एमवीसी पैटर्न का उपयोग करेंगे।
- आवेदन में प्रमाणीकरण होगा।
- हम पुराने ब्राउज़र समर्थन (whew!) के बारे में बहुत चिंतित नहीं हैं, इसलिए हम नवीनतम और सबसे बड़ा लाभ उठाने के लिए देख रहे हैं जो कि बाहर है और बाहर आ जाएगा। (HTML5, CSS3, WebGL ;, मीडिया स्रोत एक्सटेंशन, और बहुत कुछ!)
यहाँ परियोजना के कुछ लक्ष्य हैं :
- आवेदन को स्केल करने की आवश्यकता है। निकट अवधि में हमारे उपयोगकर्ता सैकड़ों से हजारों के आदेश पर होंगे, लेकिन हम हजारों से लाखों और उससे आगे की योजना बना रहे हैं।
- हमें उम्मीद है कि आवेदन हमेशा के लिए होगा। यह एक अस्थायी समाधान नहीं है। (वास्तव में हमारे पास पहले से ही एक अस्थायी समाधान है, और जो हम आर्किटेक्चर कर रहे हैं वह हमारे पास दीर्घकालिक प्रतिस्थापन है)।
- आवेदन सुरक्षित होना चाहिए क्योंकि इसमें संवेदनशील व्यक्तिगत जानकारी के साथ संपर्क हो सकता है।
- आवेदन को स्थिर करने की आवश्यकता है। (आदर्श रूप से, यह जीमेल के स्तर के आसपास स्थिर होगा लेकिन इसे मंगल रोवर के चरम पर होने की आवश्यकता नहीं है।)