9 कदम: अपने वेब एप्लिकेशन के लिए एक तकनीकी स्टैक चुनना

अपने नए वेब एप्लिकेशन की योजना बनाना कठिन हो सकता है (Luca Bravo by Unsplash पर फोटो)।

क्या आप एक संस्थापक, सीईओ, सीटीओ, सलाहकार या अन्य हितधारक हैं जिन्हें यह तय करने की आवश्यकता है कि सॉफ्टवेयर उत्पाद कैसे बनाया जाए? अपने वेब एप्लिकेशन के लिए तकनीकी स्टैक पर निर्णय लेने में परेशानी हो रही है? क्या आपको पायथन या जावा को भाषा के रूप में उपयोग करना चाहिए? नोड.जेएस या फ्लास्क / Django वेब फ्रेमवर्क के लिए सही विकल्प है? सबसे अच्छा फ्रंट-एंड विकल्प क्या है: कोणीय, प्रतिक्रिया या VueJS? डेटाबेस के बारे में क्या - MySQL, Postgres या MongoDB? क्या आपको DigitalOcean पर Apache या Nginx के साथ सेल्फ-होस्ट करना चाहिए, या केवल Amazon AWS के साथ जाना चाहिए? हो सकता है कि आप बल्कि हेरोकू जैसे पा के साथ काम करें?

यदि आपके पास एक लाख सवाल हैं और यह नहीं जानते हैं कि कहां से शुरू करें, तो यह लेख आपको अपना निर्णय लेने में मदद कर सकता है।

1. इसे सरल रखें। चपल हो जाओ!

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

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

जैसे ही आप जानते हैं कि आपकी अवधारणा काम करेगी, आप उत्पाद के निर्माण के साथ आगे बढ़ सकते हैं। इस चरण के दौरान चुस्त रहें। आपको डेवलपर्स के लिए 100-पेज सिस्टम विनिर्देश (जर्मन में "Pflichten- und Lastenheft") को संकलित करने में कभी भी कई महीने नहीं बिताने चाहिए, खासकर अगर यह उत्पाद प्राप्ति के लिए 6 या 12 महीने का हो। यह शायद एक ऐसे उत्पाद का परिणाम होगा जो या तो अप्रचलित है या बहुत देर से वितरित किया गया है।

सोचो: पहली चीजें पहले। एक मूल पृष्ठ चल रहा है, फिर आपकी पहली विशेषता, फिर आपकी दूसरी। इस तरह से काम करने के फायदे यह हैं कि आप वास्तविक समय में प्रगति का मूल्यांकन कर सकते हैं और आवश्यकतानुसार दिशा बदल सकते हैं। आप अपने जोखिम को कम करते हैं क्योंकि आपका सिस्टम पहले से ही चल रहा है। आपके पास अभी तक वे सभी सुविधाएँ नहीं हैं जिनकी आपने कल्पना की थी, लेकिन यह चल रही है!

2. अपनी व्यक्तिगत आवश्यकताओं के बारे में सोचें

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

प्रौद्योगिकी से पहले उपयोगकर्ता

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

गति और प्रदर्शन

क्या आपके पास (छोड़कर) मापदंड है? क्या सॉफ्टवेयर आपके इंट्रानेट में चल रहा होगा? यदि हां, तो प्रारंभिक लोडिंग समय इष्टतम से कम हो सकता है।

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

माइग्रेशन और विरासत प्रणाली

क्या आपके पास डेटाबेस और / या डेटा है जिसे माइग्रेट करने की आवश्यकता है? क्या आपके पास विरासत प्रणाली है जिसे नई प्रणाली में स्थानांतरित करने की आवश्यकता है? इन और समान विचारों की जांच और मूल्यांकन किए जाने की आवश्यकता है।

सुरक्षा

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

3. ओपन-सोर्स तकनीकों के लिए जाएं

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

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

एक और महत्वपूर्ण सवाल: प्रौद्योगिकी के पीछे की टीम सुरक्षा समस्याओं से कैसे निपटती है? क्या सुरक्षा कमजोरियों की रिपोर्ट करने के लिए एक ईमेल पता है?

4. पारिस्थितिकी तंत्र की जाँच करें

हर तकनीक में लोगों और औजारों से बना एक पारिस्थितिकी तंत्र होता है।

भाषा या ढाँचे के पीछे का पारिस्थितिकी तंत्र कितना बड़ा है? कितने स्टैकओवरफ़्लो प्रश्न, सम्मेलन और ऑनलाइन ट्यूटोरियल (जैसे उदमी) हैं? Google रुझान क्या कहता है? क्या सॉफ्टवेयर में रुचि अभी भी बढ़ रही है? कितने पैकेज (npm, PyPi, आदि) हैं, और क्या उनके पास आपके पास काम करने के लिए लाइसेंस हैं?

क्या आप भयानक भयानक सूचियों के बारे में जानते हैं? वे आपको भाषा या रूपरेखा के पारिस्थितिकी तंत्र में खुदाई करने में मदद करते हैं। आप दिए गए तकनीक से संबंधित ट्यूटोरियल, लेख और महत्वपूर्ण पैकेजों की जांच कर सकते हैं। Django, node.js, React, Angular और कई और अधिक सूची हैं।

यह भी महत्वपूर्ण है: क्या समुदाय नए सदस्यों का स्वागत कर रहा है, और समुदाय कितना सक्रिय है? उपयोगकर्ताओं और डेवलपर्स के लिए समर्थन कैसे है? क्या कोई मेलिंग सूची, चैट चैनल, स्लैक रूम या टिकटिंग सिस्टम है? क्या लोग तकनीक के बारे में ब्लॉगिंग कर रहे हैं?

5. दीर्घकालिक रुझान और समर्थन

बाजार जीवन चक्र

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

एक अन्य विचार यह है कि उद्योग-पसंदीदा प्रौद्योगिकी स्टैक को stackshare.io या techstacks.io के साथ जांचें। Airbnb क्या उपयोग कर रहा है या क्या लोग AngularJS के बारे में पसंद करते हैं और कौन इसका उपयोग कर रहा है, इसकी जाँच करें। यदि आप किसी तकनीक के बारे में अनिश्चित हैं, तो आप विकल्प खोज सकते हैं। यहां वैकल्पिक ऑल्टरनेट पर Angular JS के विकल्पों की सूची दी गई है।

लंबे समय तक विक्रेता का समर्थन

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

कुछ अनुप्रयोगों में दीर्घकालिक समर्थन वाले संस्करण होते हैं। निर्दिष्ट संस्करण तब बग-फिक्स के साथ दिए गए समय के लिए प्रदान किए जाते हैं। आपको तकनीक के वेबपेज की भी जांच करनी चाहिए: अपडेट कैसे संभाले जाते हैं? अपडेट / माइग्रेशन प्रक्रिया कितनी आसान है? क्या विशेष रूप से असंगत संस्करण हैं (जैसे कि कोणीय 1 और कोणीय 2)?

6. मानव संसाधन और भर्ती

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

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

क्या तकनीक सीखना आसान है? एक आसान भाषा आपको जूनियर डेवलपर्स को खोजने और प्रशिक्षित करने में मदद कर सकती है, और संपूर्ण पारिस्थितिकी तंत्र अधिक लोगों को आकर्षित कर सकता है।

पिछले नहीं बल्कि कम से कम: मानव संसाधन में एक महान संसाधन Stackoverflow डेवलपर सर्वेक्षण है। यह डेवलपर प्रकारों, उपयोग की गई तकनीकों और वेतन रिपोर्ट का एक बड़ा अवलोकन प्रदान करता है। एक नज़र देख लो!

7. क्या आप पर्याप्त लचीले होंगे?

सेवा ग्रैन्युलैरिटी

20 साल पहले की तुलना में चीजें बहुत तेज़ी से बदल रही हैं। लंबे समय तक, लोग मुख्य रूप से डेस्कटॉप कंप्यूटर और विंडोज पर काम करते थे। यह शायद अगले 10 वर्षों में नहीं होगा। आपकी चुनी गई तकनीक संभवतः 5 से 10 वर्षों तक आपके साथ रहेगी: यह एक लंबा समय है, और आप सुनिश्चित नहीं हो सकते हैं कि चीजें कैसे विकसित होंगी। इसीलिए जरूरत पड़ने पर आपको तकनीक बदलने के लिए तैयार रहना होगा।

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

क्या आप जमानत कर सकते हैं? क्या यह पैमाना होगा?

क्या आपके पास हमेशा डेटा तक पहुंच है? क्या आपको प्रौद्योगिकियों को बदलने की आवश्यकता है, तो अपने डेटा को निर्यात करना हमेशा संभव है? क्या तकनीक के दूसरे छोर पर लचीलेपन की अनुमति देने के लिए एपीआई है? हो सकता है कि आप अपने ग्राहकों या ग्राहकों के लिए अपना एप्लिकेशन खोलना चाहते हों या आप चुनी हुई तकनीक के शीर्ष पर मोबाइल ऐप, डेस्कटॉप ऐप या अन्य सिस्टम बनाना चाहते हों।

8. कैसा लगता है?

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

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

ज़बरदस्त रियलवर्ल्ड प्रोजेक्ट और भी आगे जाता है: यह एक मध्यम जैसा फुल-स्टैक-एप्लिकेशन है, जो बैक-एंड के लिए Django या node.js का उपयोग करता है और फ्रंट-एंड के लिए कोणीय या रिएक्ट करता है। आप एरिक सिमंस द्वारा इसके बारे में एक परिचयात्मक लेख पढ़ सकते हैं।

9. आरंभ करें

यदि आप एक छोटे से स्टार्टअप हैं, तो बाजार के लिए सही तकनीक होने से ज्यादा महत्वपूर्ण है। उपयोगकर्ताओं के फेसबुक की मात्रा को संभालने के लिए आवश्यक सभी प्रौद्योगिकी पूर्व-अनुकूलन के बजाय अपने व्यवसाय और विपणन पर ध्यान दें। संभवतः आपको प्रारंभिक चरण में सभी आवश्यक ज्ञान नहीं है, लेकिन आप जैसे-जैसे बढ़ते हैं (और आवश्यक बजट होता है) चीजों को ठीक कर सकते हैं और टेक स्टैक को बदल सकते हैं या बदल सकते हैं।

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

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

और अधिक संसाधनों:

  • अपने सॉफ़्टवेयर प्रोजेक्ट के लिए सही तकनीकों का चयन कैसे करें (बुलेट बिंदुओं की एक त्वरित-पढ़ने के लिए सूची)
  • अपने ऐप के लिए सही तकनीक स्टैक का चयन कैसे करें (कंपनी के आकार / स्थिति के आधार पर निर्णय पर चर्चा करने वाला अच्छा लेख)
  • अपने स्टार्टअप के टेक्नोलॉजी स्टैक को चुनने के 5 टिप्स (अच्छी लिस्टिंग और टेक स्टिरर्स की चेतावनी)

आपकी रुचि के लिए धन्यवाद। क्या मैं कुछ महत्वपूर्ण भूल गया? क्या आपकी राय अलग है? मुझे हमेशा प्रतिक्रिया प्राप्त करने में खुशी होती है।

अपडेट और अधिक के लिए ट्विटर पर मेरा अनुसरण करें: @jensneuhaus - updates