9 қадам: Сіздің веб-қосымшаңызға арналған стек таңдау

Жаңа веб-қосымшаны жоспарлау қиынға соғуы мүмкін (Лука Браво түсірген сурет).

Сіз бағдарламалық жасақтаманы қалай құру керектігін шешетін құрылтайшы, бас директор, CTO, кеңесші немесе басқа мүдделі адамсыз ба? Веб-қосымшаңыз үшін технологиялық стек таңдауда қиындықтар туындады ма? Python немесе Java тілін өз тіліңіз ретінде пайдалану керек пе? Node.js немесе Flask / Django веб-арқа үшін дұрыс таңдау ма? Алдыңғы жағындағы ең жақсы нұсқа қандай: бұрыштық, реактивті немесе VueJS? MySQL, Postgres немесе MongoDB дерекқоры туралы не айтуға болады? Сіз өзіңізді DigitalOcean-да Apache немесе Nginx-те орналастыруыңыз керек немесе Amazon AWS-пен жұмыс істеу керек пе? Мүмкін сіз Героку сияқты PaaS-пен жұмыс істеуді жөн көресіз бе?

Егер сізде миллион сұрақ туындаса және қайдан бастау керектігін білмесеңіз, бұл мақала сізге шешім қабылдауға көмектеседі.

1. Қарапайым болыңыз. Ажырасыңыз!

Көбінесе сіз таңдаған технология маңызды емес, өйткені өнімнің өзі сәтсіздікке ұшырайды. Көптеген стартаптар масштабтау технологиясына сүйенеді және өз өнімдері үшін нарық жоқтығын анықтау үшін көп уақыт пен күш жұмсайды.

Егер сіз нөлден өнім жасағыңыз келсе, қарапайым шешім қабылдаған дұрыс. Wordpress немесе Unbounce қосылған бет жеткілікті болуы мүмкін. Мүмкін тіпті тұрақты бет жұмыс істейтін шығар, ол сіз шешуге тырысқаныңызды білдіреді. Өнімді жасаудан бұрын сіздің өнімге деген қызығушылықты бағалау маңызды. Егер тұжырымдаманы дәлелдеудің технологиясы сіз қолданып жүрген технологиядан өзгеше болса, жақсы.

Сіздің тұжырымдамаңыз жұмыс істейтінін біле салысымен, өнімді дамытуды жалғастыра аласыз. Осы кезеңде ептілікпен жүріңіз. Әзірлеушілерге 100 беттен тұратын жүйелік спецификацияны («талаптар мен ерекшеліктер») жасау үшін бірнеше айларды ешқашан жұмсауға болмайды, әсіресе өнімді іске асыру үшін 6 немесе 12 ай қажет болса. Бұл ескірген немесе кеш жеткізілген өнімді әкелуі мүмкін.

Ойланыңыз: алдымен алдымен. Негізгі парақты алыңыз, содан кейін бірінші, содан кейін екінші функцияңызды алыңыз. Бұл тәсілдің артықшылығы бар, сіз нақты уақытта прогресті бағалай аласыз және қажет болған жағдайда бағытты өзгерте аласыз. Сіз өзіңіздің тәуекеліңізді азайтасыз, себебі сіздің жүйеңіз жұмыс істеп тұр. Сіз елестеткен барлық мүмкіндіктер болмауы мүмкін, бірақ ол жұмыс істейді!

2. Өзіңіздің жеке талаптарыңыз туралы ойланыңыз

Проблемалық аймақты есіңізде сақтаңыз. Сіз таңдаған технология сіз шешкіңіз келетін мәселеге байланысты болуы керек. Кейбір әрекеттерді бір тілде екінші тілге қарағанда жасау оңай - мысалы, Python есептеулер мен статистика үшін керемет.

Технологияны пайдаланушылар

Өнімдер олардың пайдаланушылары үшін жасалуы керек. Сіз қай өнімді жасағыңыз келеді? Пайдаланушының ең жақсы тәжірибесін қалай жасауға болады? Сіздің жүйеңізді кім пайдаланатыны туралы ойланыңыз. Сіз жұмыс үстелінде немесе планшетте жұмыс жасайсыз ба? Олар заттарға ұялы байланыс арқылы қол жеткізе ме (қазіргі уақытта қолданушылардың 60% -ы)? Жұмыс үстелі стиліндегі қосымша болуы керек пе? Қай браузерлер жиі қолданылады?

Жылдамдық және өнімділік

Сізде (ерекше) өлшемдер бар ма? Бағдарламалық жасақтама сіздің интранетіңізде ме? Бұл жағдайда бастапқы жүктеу уақыты оңтайлы болмауы мүмкін.

Мүмкіндігінше әрдайым ептілік танытыңыз. Өнімділік шынымен сізде шешілуі керек мәселе ме? Егер сіз үлкен болғыңыз келсе, әрдайым өзіңіздің инфрақұрылымыңызбен жұмысты жақсартпас бұрын Platform-as-a-Service (Heroku сияқты) қызметінен бастай аласыз. Кішкентай кезіңізде уақыт пен ақша жұмсаудың орнына, сіз тиісті мөлшерден асқаннан кейін өнімділік туралы алаңдай бастай аласыз.

Көші-қон және бұрынғы жүйелер

Сізде деректер базасы және / немесе көшірілуі керек деректер бар ма? Сізде жаңа жүйеге ауыстырылуы керек ескі жүйелер бар ма? Осы және ұқсас пікірлер тексеріліп, бағалануы керек.

Қауіпсіздік

Қауіпсіздік ешқашан назардан тыс қалмауы керек. Сіз жұмыс істейтін деректер түріне байланысты қауіпсіздік маңызды фактор бола алады. Неліктен оның сақтық көшірмесін жасау туралы шешім қабылдамас бұрын, бірдеңенің сақтық көшірмесін жасау керектігін анықтаңыз. Алайда, технологияның бәрі бірдей емес екенін есте сақтаңыз. Қауіпсіздік ең алдымен сіздің әзірлеушілеріңіздің дағдыларына, жұмыс ортасына және сіз жүргізетін саясатқа байланысты болады.

3. Ашық бастапқы технологияларды таңдаңыз

Жаңа бағдарламалық жасақтаманы құру кезінде ашық шешімдерді іздеу керек. Олар сізге бәрін нөлден жасауға тура келмейді. Бұл көп уақытты үнемдейді және, бәлкім, қауіпсізірек (көптеген бастар бірнеше адамға қарағанда жақсы). Сондай-ақ, сіз бизнес жағына көңіл бөліп, өз өніміңізді ерекшелеуге болады. Ашық бастапқы қоғамдастыққа бір нәрсе беруді ұмытпаңыз!

Ықтимал технологияны таңдағаннан кейін сіз тексеру парағынан өтуіңіз керек. Оның қандай лицензиясы бар? Тілде немесе жақтауда сізге немесе сіздің жасаушыларыңызға қажет мүмкіндіктер бар ма? Негізгі жасаушылар қанша? Сіз Github репозиторийіндегі салымшыларды немесе жұлдыздарды және олардың эволюциясын уақыт өте келе қарап шығуға болады. Алгоритмге мұқият қарау керек болса, бастапқы кодты түсіну оңай ма? Құжаттама толықты ма, технология мұқият тексерілген бе және тез іске қосуға болатын стартер қазандықтары бар ма?

Тағы бір маңызды сұрақ: Технология артында тұрған топ қауіпсіздік мәселелерімен қалай айналысады? Осалдықтар туралы хабарлауға арналған электрондық пошта мекенжайы бар ма?

4. Экожүйені тексеріңіз

Әр технологияда адамдар мен құралдардың экожүйесі бар.

Тілдің немесе шеңбердің артындағы экожүйе қаншалықты үлкен? Stackover ағымы (мысалы, Udemy) туралы қанша сұрақ, конференция және онлайн оқулық бар? Google Trends не дейді? Бағдарламалық жасақтамаға деген қызығушылық артуда ма? Қанша пакет бар (npm, PyPi т.б.) және олардың сізде жұмыс істей алатын лицензиясы бар ма?

Сіз керемет фантастикалық тізімдерді білесіз бе? Олар сізге тілдің немесе шеңбердің экожүйесіне енуге көмектеседі. Сіз белгілі бір технологияға қатысты оқулықтарды, мақалаларды және негізгі пакеттерді көре аласыз. Django, node.js, React, Angular және басқалар үшін тізім бар.

Сондай-ақ, қауымдастықтың жаңа мүшелерді қабылдайтындығы және қоғамның қаншалықты белсенді екендігі маңызды. Пайдаланушылар мен әзірлеушілерге қандай қолдау ұнайды? Хабарламалар тізімі, чат арнасы, жалдамалы зал немесе билет жүйесі бар ма? Технология туралы блог жүргізетін адамдар бар ма?

5. Ұзақ мерзімді тенденциялар және қолдау

Нарықтық өмір циклдері

Әр технологияда өмірлік цикл бар. Сіз жетілген технологияларды таңдағыңыз келеді, өйткені олар сенімді. Болашаққа сенімді технологиялар туралы түсінік алу үшін ең жаңа технологиялық радарды тексеру керек. Бұл сізге оны қабылдауға немесе кейінге қалдыруға шешім қабылдауға көмектеседі. Технологиялық радар ақысыз болып табылады және технологияларды санаттарға, платформаларға, құралдар мен тілдерге және шеңберлерге бөледі. Алайда, сіз ресурстарды сақтықпен пайдалануыңыз керек, өйткені берілген ақпарат тасқа салынбаған.

Тағы бір идея - stackshare.io немесе techstacks.io көмегімен саланың таңдаған технологиялары бойынша стектерді тексеру. Airbnb не пайдаланатынын немесе адамдар AngularJS-ті ұнататындығын және оны кім қолданатынын біліңіз. Егер сіз технология туралы білмесеңіз, балама іздей аласыз. Мұнда alternto.net сайтындағы бұрыштық JS-ге балама нұсқалардың тізімі берілген.

Провайдерлердің ұзақ мерзімді қолдауы

Технологиялық провайдер біршама уақыт болатын сияқты ма? Ірі компаниялар аталған технологияның дамуына қолдау көрсете ме? Google Angular артында және Facebook React артында. Бұл компания қолдауды тоқтату туралы шешім қабылдағанға дейін белгілі бір прогресс болуы керек дегенді білдіреді (иә, бұл мүмкін). Бірақ қоғам неғұрлым үлкен болса, соғұрлым біршама уақытқа созылатын мүмкіндік соғұрлым жоғары болады.

Кейбір қосымшаларда ұзақ мерзімді қолдау нұсқалары бар. Содан кейін көрсетілген нұсқалар белгілі уақыт аралығында қателерді түзетумен қамтамасыз етіледі. Технологиялық веб-сайтты тексеру керек: жаңартулар қалай өңделеді? Жаңарту / көшіру процесі қаншалықты оңай? Әсіресе сәйкес келмейтін нұсқалар болды ма (мысалы, Бұрыш 1 және Бұрыш 2)?

6. Кадрлар және жалдау

Сіздің сайтыңызда қандай жасаушылар бар? Егер сіз алдыңғы технологияны таңдауға және үш күшті бұрыштық әзірлеушілерге ие болуыңыз керек болса, онда сіз олармен жұмыс істеуіңіз керек. Тез қозғалу маңызды болуы мүмкін және сіздің жайлылық аймағында адамдар болуы жаңа технологияны үйренудің орнына артықшылық болып табылады. Экожүйе туралы бұрыннан бар білім де қосымша пайда әкеледі.

Жұмысқа қабылдау туралы келесілерді тексеріңіз: Сізге қажет технология үшін сапалы әзірлеушілер таба аласыз ба? Сіз қанша төлеуіңіз керек? Ірі компаниялар бірдей технологиялармен жұмыс істейді және барлық жақсы әзірлеушілер құлдырай ма? Әзірлеушілер көбінесе белгілі кәсіпқой мамандарды табады ма, әлде оларды сценарийлерден ажырату қиын ба? Жақсы Java әзірлеушісін Рельдердегі немесе PHP-дегі жақсы Ruby-ден гөрі табу оңайырақ болуы мүмкін. Зерттеу үшін XING, LinkedIn немесе жұмыс іздеу порталдарын тексеруге болады. Сондай-ақ, сіз жұмыс үрдісін іздей аласыз (мысалы, Angular-ды React-пен салыстырыңыз).

Технологияны үйрену оңай ма? Қарапайым тіл сізге жас әзірлеушілерді табуға және үйретуге көмектеседі, ал бүкіл экожүйе көп адамды тарта алады.

Соңғысы, бірақ маңызды: кадрлар бөліміндегі керемет ресурс - Stackoverflow әзірлеушісі сауалнамасы. Ол әзірлеуші ​​түрлеріне, қолданылатын технологиялар мен жалақы туралы есептерге тамаша шолу жасайды. Қарашы!

7. Сіз икемді бола аласыз ба?

Қызметтің түйірлілігі

Бәрі 20 жыл бұрынғыға қарағанда тез өзгереді. Ұзақ уақыт бойы адамдар негізінен жұмыс үстелі компьютерлерінде және Windows жүйесінде жұмыс істеді. Бұл келесі 10 жылда болмайды. Сіз таңдаған технология сізде 5 жылдан 10 жылға дейін болады. Бұл ұзақ уақыт және сіз қалай болатынын біле алмайсыз. Осы себепті, қажет болған жағдайда технологияларды өзгертуге дайын болу керек.

Кішкене пакеттерде мұқият ойланыңыз және алаңдаушылықтан аулақ болыңыз. Сіз қызметтерді, артқы және алдыңғы жақтарды кіші қосымшалар мен микро қызметтерге бөлуіңіз керек. Егер сізде жұмыс істемейтін технологиялар бұдан былай жұмыс істемесе, сіз технологиялармен оңай алмасуыңыз керек. Қызметке бағдарланған сәулет (SOA) және домендік дизайн (DDD) сияқты ұғымдарды қарап шығыңыз.

Сіз кепілге шыға аласыз ба? Ол масштабтала ма?

Сізде әрдайым мәліметтер бар ма? Технологияларды өзгерту қажет болған кезде деректерді экспорттау әрқашан мүмкін бе? Технологияда екінші жағынан икемділік беретін API бар ма? Мүмкін сіз өзіңіздің тұтынушыларыңызға немесе тұтынушыларыңызға қосымшаны ашқыңыз немесе таңдаған технология бойынша мобильді қосымшалар, жұмыс үстелі бағдарламалары немесе басқа жүйелер жасағыңыз келетін шығар.

8. Бұл қалай көрінеді?

Әзірлеушілерге технологияны жасауға немесе оны өзіңіз жасауға мүмкіндік беріңіз - алғашқы әсеріңіз қандай? Кішкене ұшқыш конфигурациясын жасаңыз, қазандықтың бар тақталарын сынап көріңіз немесе кішкене сынақ жобасын өткізіңіз (мүмкін болса). Егер сіз түйіршіктелген қызметтерді таңдасаңыз, жаңа кішігірім қызметті құру және оның қалай жұмыс істейтінін көру үшін белгілі бір технологияны қолдана аласыз.

Айырмашылықтарды жақсы түсінуге көмектесетін нақты өмірлік қосымшалар да бар. TodoMVC - бұл керемет жоба - қарапайым Todo қосымшасы әртүрлі Javascript рамаларын қолдана отырып жүзеге асырылады және сіз бастапқы код архитектурасын тексере аласыз. Мысалдардың барлық түрлері бар және сіз бұрыштарды React немесе Vue-ді Ember-пен салыстыра аласыз.

Үлкен RealWorld жобасы одан да үлкен жетістіктерге жетеді: бұл орта өлшемді толық стек қосымшасы, ол артқы жағы үшін Django немесе node.js, ал алдыңғы шеті үшін Angular немесе React қолданады. Ол туралы Эрик Саймонның кіріспе мақаласын оқи аласыз.

9. Бастау

Егер сіз кішкентай стартап болсаңыз, оны іске қосу өте жақсы технологияға қарағанда маңызды. Facebook қолданушыларының санын басқаруға қажетті барлық технологияларды алдын-ала оңтайландырудан гөрі, өзіңіздің бизнесіңіз бен маркетингіңізге көңіл бөліңіз. Мүмкін сізде барлық білім жоқ, бірақ сіз өсіп келе жатқанда (және бюджетіңіз бар) техникалық талаптарды өзгерте аласыз.

Компания бола отырып, бәрі басқаша болуы мүмкін. Шешім әдетте бәрібір саяси болады - сіздің компанияңыздағы адамдар сіздің шешіміңізбен келісуі керек. Менеджмент (және ішкі / болашақ әзірлеушілер) мүмкін борттағы маңызды мүдделі тараптар болып табылады.

Сапа заттарды түзетуге қатысты екенін есте ұстаған жөн. Технология тек маңызды емес: сізге дұрыс дизайн, дұрыс талаптар, тестілеудің дұрыс процедуралары және т.б. қажет. Ең бастысы, болашақта сіз өзіңіздің өлшемдеріңізді шектеумен немесе басқа технологияға көшумен шектелмейсіз.

Қосымша ресурстар:

  • Сіздің бағдарламалық жасақтама жобаңызға дұрыс технологияны қалай таңдауға болады (кілт сөздердің нақты тізімі)
  • Бағдарлама үшін дұрыс технологиялық буманы қалай таңдауға болады (компанияның көлеміне / мәртебесіне байланысты шешімді талқылайтын жағымды мақала)
  • Стартаптың технологиялық қатарын таңдауға арналған 5 кеңес (жақсы листинг және техникалық араластырғыштарға ескерту)

Қызығушылық танытқаныңызға рахмет. Мен бір маңызды нәрсені ұмытып қалдым ба? Сіздің пікіріңіз басқа ма? Мен әрқашан пікірлерді бағалаймын.

Мені Twitter-де жаңару және басқа ақпарат үшін бақылаңыз: @jensneuhaus -