Чэкліст для стварэння і публікацыі вэб-прыкладанняў

Для таго, каб стварыць сваё вэб прыкладанне ў наш час нядосыць умець яго распрацоўваць. Важным аспектам з'яўляецца настройка інструментаў па разгортванні прыкладання, маніторынгу, а таксама кіраванне і адміністраванне асяроддзя, у якой яно працуе. Эра ручнога разгортвання сыходзіць у забыццё, нават для невялікіх праектаў, прылады аўтаматызацыі могуць прынесці адчувальную карысць. Пры разгортванні «рукамі», часцяком мы можам забыцца перанесці штосьці, улічыць той ці іншы нюанс, запусціць забыты тэст, гэты спіс можна працягваць даволі доўга.

Дадзены артыкул можа дапамагчы тым, хто толькі спасцігае асновы стварэння вэб прыкладанняў, і хоча крыху разабрацца ў асноўных тэрмінах і канвенцыях.

Такім чынам, пабудова прыкладанняў можна падзяліць усё ж на 2 часткі, гэта ўсё што суадносіцца з кодам прыкладання, і ўсё што суадносіцца з асяроддзем, у якім гэты код выконваецца. Код прыкладання ў сваю чаргу таксама дзеліцца на серверны (той, што выконваецца на серверы, часта: бізнес логіка, аўтарызацыя, захоўванне дадзеных, і да т.п.), і на кліенцкі (той што выконваецца на машыне карыстальніка: часта інтэрфейс, і звязаная з ім логіка).

Пачнём, мабыць, з серады.

Асновай для працы любога кода, сістэмы, праграмнага забеспячэння з'яўляецца, Аперацыйная сістэма, таму ніжэй мы разгледзім найболей папулярныя сістэмы, прадстаўленыя на рынку хостынгаў, і дамо ім кароткую характарыстыку:

сервер для Windows - тая самая Windows, але ў сервернай варыяцыі. Некаторы функцыянал, даступны ў кліенцкай(звычайнай) версіі Windows тут не прысутнічае, напрыклад, некаторыя службы па зборы статыстык, і падобнага роду ПА, затое прысутнічае набор утыліт для адміністравання сеткі, базавае ПА для разгортвання сервераў (web, ftp, …). Увогуле і цэлым, Windows Server выглядае як звычайная Windows, кракае як звычайная Windows, аднак, варта ў 2 разу даражэй свайго звычайнага субрата. Аднак, улічваючы, што разгортванне прыкладання Вы будзеце рабіць хутчэй за ўсё на выдзеленым/віртуальным серверы, канчатковы кошт для Вас хоць і можа ўзрасці, але не крытычна. Бо платформа Windows займае пераважнае месца на рынку карыстацкіх АС, яе серверная рэдакцыя будзе найболей звыклай большасці карыстачоў.

юнікс-падобная сістэма. Традыцыйная праца ў дадзеных сістэмах не мяркуе наяўнасці звыклага графічнага інтэрфейсу, прапаноўваючы карыстачу ў якасці элемента кіравання толькі кансоль. Для неспрактыкаванага карыстальніка праца ў такім фармаце можа ўяўляць цяжкасць, чаго толькі варта выйсце з досыць папулярнага ў дадзеных тэкставага рэдактара напор, пытанне, звязанае з гэтым за 6 гадоў набрала ўжо больш за 1.8 млн праглядаў. Асноўнымі дыстрыбутывамі (рэдакцыямі) дадзенага сямейства з'яўляюцца: Debian - папулярны дыстрыбутыў, версіі пакетаў у ім арыентаваны ў асноўным на LTS (Доўгатэрміновая падтрымка – падтрымка на працягу доўгага часу), што выяўляецца ў дастаткова вялікай надзейнасці і стабільнасці сістэмы і пакетаў; Ubuntu – змяшчае дыстрыбутывы ўсіх пакетаў у іх апошніх версіях, што можа адбівацца на стабільнасці, аднак дазваляе карыстацца функцыяналам, які пастаўляецца з новымі версіямі; Red Hat Enterprise Linux - АС, якая пазіцыянуецца для камерцыйнага выкарыстання, з'яўляецца платнай, аднак, уключае ў сябе падтрымку з боку пастаўшчыкоў ПА, некаторыя прапрыетарныя пакеты і пакеты драйвераў; CentOS - opensource варыяцыя Red Hat Enterprise Linux, адрозніваецца адсутнасцю прапрыетарных пакетаў і падтрымкі.

Для тых, хто толькі спасцігае засваенне дадзенай вобласці, маёй рэкамендацыяй будуць сістэмы. сервер для Windows, Альбо Ubuntu. Калі разглядаць Windows, тое гэта ў першую чаргу звычнасць сістэмы, Ubuntu - больш талерантнасці да абнаўленняў, і ў сваю чаргу, напрыклад, менш праблем пры запуску праектаў на тэхналогіях якія патрабуюць новыя версіі.

Такім чынам, вызначыўшыся з АС, пяройдзем да набору прылад, якія дазваляюць дэплоіць (усталёўваць), абнаўляць і маніторыць стан прыкладання ці яго частак на серверы.

Наступным важным рашэннем будзе - размяшчэнне вашага прыкладання, і сервера для яго. На дадзены момант, самымі распаўсюджанымі з'яўляюцца 3 шляхі:

  • Хосціць (трымаць) сервер у сябе, самастойна, - найболей бюджэтны варыянт, але прыйдзецца замовіць у правайдэра статычны IP, каб ваш рэсурс не змяняў свайго адрасу з цягам часу.
  • Арандаваць Выдзелены Сервер (VDS) - і самастойна займацца яго адміністраваннем і маштабаваннем нагрузак
  • Аплаціць (часта пры гэтым даюць бясплатна паспрабаваць функцыянал платформы) падпіску на якім-небудзь хмарным хостынгу, дзе даволі распаўсюджана мадэль аплаты за выкарыстаныя рэсурсы. Найбольш яркія прадстаўнікі дадзенага кірунку: Amazon AWS (даюць бясплатны год карыстання паслугамі, але з лімітам у месяц), Google Cloud (даюць 300 $ на рахунак, якія можна выдаткаваць на працягу года на паслугі хмарнага хостынгу), Yandex. Воблака (даюць 4000 руб .на 2 месяцы), Microsoft Azure (даюць бясплатны доступ да папулярных паслуг на год, + 12 500 рублёў на любыя паслугі на працягу аднаго месяца). Такім чынам, можна апрабаваць любога з дадзеных правайдэраў, не выдаткаваўшы ні капейкі, але атрымаўшы прыкладнае меркаванне аб якасці і ўзроўні аказання паслуг.

У залежнасці ад абранага шляху, у далейшым зменіцца толькі той факт, на кім, па большай частцы ляжыць адказнасць за тую, ці іншую вобласць адміністравання. Калі Вы ходзіце самі, то Вы павінны разумець, што любыя перабоі з электрычнасцю, інтэрнэтам, самім серверам, ПА, разгорнутым на ім - усё гэта цалкам ляжыць на Вашых плячах. Зрэшты, для навучання і тэставанні, гэтага больш за досыць.

Калі ж у Вас няма лішняй машыны, здольнай згуляць ролю сервера, то тады Вы захочаце скарыстацца другім ці трэцім шляхам. Другі выпадак ідэнтычны першаму, за тым выключэннем, што Вы перакладаеце адказнасць за даступнасць сервера, і яго магутнасці на плечы хостэра. Адміністраванне сервера і ПЗ усё яшчэ пад Вашым кантролем.

І нарэшце, варыянт з арэндай магутнасцяў хмарных правайдэраў. Тут Вы можаце наладзіць аўтаматызаванае кіраванне практычна чым заўгодна, не моцна ўдаючыся ў тэхнічныя нюансы. Акрамя таго, замест адной машыны, вы можаце мець некалькі паралельна запушчаных інстансаў (экзэмпляраў), якія могуць, напрыклад, адказваць за розныя часткі прыкладання, пры гэтым не моцна адрозніваючыся па кошце ад валодання выдзеленага сервера. А яшчэ, тут у наяўнасці прылады аркестравання, кантэйнерызацыі, аўтаматычнага дэплою, бесперапыннай інтэграцыі і шмат чаго іншага! Некаторыя з гэтых рэчаў мы разгледзім ніжэй.

У агульным выпадку, інфраструктура сервера выглядае наступным чынам: мы маем так званы «аркестратар» («аркестраванне» - працэс кіравання некалькімі інстансамі сервераў), кіраўнік зменамі асяроддзя на інстансе сервера, кантэйнер віртуалізацыі (апцыянальны, але досыць часта ўжывальны), які дазваляе падзяліць прыкладанне на ізаляваныя лагічныя пласты, і ПА для Бесперапыннай Інтэграцыі – якое дазваляе ажыццяўляць абнаўленне размешчанага кода пасродкам "сцэнарыяў".

Такім чынам, аркестраванне, дазваляе Вам бачыць статуты сервераў, ажыццяўляць "накатыванне", або "адкат" абнаўленняў навакольнага асяроддзя сервера, і гэтак далей. На першую пару дадзены аспект ці наўрад кране Вас, паколькі каб чымсьці аркестраваць, неабходна некалькі сервераў (можна і адзін, але навошта гэта трэба?), а, каб было некалькі сервераў, неабходна запатрабаванне ў іх. З інструментаў дадзенага кірунку, на слыху ў асноўным Kubernetes, распрацаваны Google.

Наступная прыступка - віртуалізацыя на ўзроўні АС. Цяпер шырокае распаўсюджванне атрымала паняцце «дакерызацыя», - якое пайшло ад інструмента Докер, які прадстаўляе функцыянал ізаляваных адзін ад аднаго кантэйнераў, але якія запускаюцца ў кантэксце адной аперацыйнай сістэмы. Што гэта значыць: у кожным з такіх кантэйнераў можна запусціць дадатак, ці нават набор прыкладанняў, якія будуць лічыць, што яны адны адзіныя ва ўсёй АС, нават не падазраючы аб існаванні кагосьці яшчэ на дадзенай машыне. Гэтая функцыя вельмі карысная як для запуску аднолькавых прыкладанняў розных версій, альбо проста канфліктуючых прыкладанняў, а таксама для падзелу кавалачкаў прыкладання на пласты. Гэты злепак пластоў, пасля можна запісаць у выяву, які выкарыстоўваць, напрыклад, для дэплою прыкладання. Гэта значыць, усталёўваючы гэты вобраз, і разгортваючы кантэйнеры, які ён змяшчае вы атрымліваеце гатовае асяроддзе для запуску Вашага прыкладання! На першых кроках Вы можаце скарыстацца дадзенай прыладай як у азнаямленчых мэтах, так і для атрымання суцэль рэальнай выгады, разнясучы логіку прыкладання на розныя пласты. Але тут варта сказаць, што дакерызацыя патрэбна далёка не ўсім, і не заўсёды. Дакерызацыя апраўдана ў выпадках, калі дадатак «фрагментавана», разбіта на невялікія часткі, кожная якая адказвае за сваю задачу, так званая «мікрасэрвісная архітэктура».

Акрамя таго, акрамя забеспячэння асяроддзя, нам неабходна забяспечыць і пісьменны дэплой прыкладанні, улучальны ў сябе разнастайныя трансфармацыі кода, усталёўкі звязаных з дадаткам бібліятэк і пакетаў, прагонкі тэстаў, абвестак аб гэтых аперацыях і гэтак далей. Тут нам неабходна звярнуць увагу на такое паняцце як "Бесперапынная Інтэграцыя" (CI - Continuous Integration). Асноўнымі прыладамі ў дадзенай вобласці на дадзены момант з'яўляюцца Jenkins (ПА для CI, напісанае на Java, можа здацца некалькі складаным на старце), Travis CI (напісаны на Ruby, суб'ектыўна, некалькі прасцей Jenkins'a, зрэшты, усё яшчэ неабходна некаторыя веды ў вобласці налады дэплою), Gitlab CI (напісаны на Ruby і Go).

Такім чынам, пагаварыўшы аб асяроддзі, у якім трэба будзе працаваць Вашаму з дадаткам, надышоў час нарэшце паглядзець, якія інструменты прапануе нам сучасны свет, для стварэння гэтых самых прыкладанняў.

Пачнём з асновы: Backend (бэкэнд) - серверная частка. Выбар мовы, набору асноўных функцый і наканаванай структуры (фрэймворка) тут вызначаецца ў асноўным асабістымі перавагамі, але тым не менш, варта згадаць для разгляду (меркаванне аўтара наконт моў з'яўляецца дастаткова суб'ектыўным, хоць і з прэтэнзіяй на непрадузятае апісанне):

  • Python – дастаткова прыязная для неспрактыкаванага карыстальніка мова, даруе некаторыя памылкі, але ў таксама можа быць дастаткова строгі з распрацоўшчыкам, каб той не нарабіў чаго дрэннага. Ужо дастаткова дарослы і асэнсаваны ЯП, які з'явіўся ў 1991 годзе.
  • Go - мова ад кампаніі Google, таксама досыць прыязная і зручная, досыць лёгка скампіляваць і атрымаць выкананы файл на любой платформе. Можа быць простым і прыемным, а можа і складаным і сур'ёзным. Свежы і малады, з'явіўся адносна нядаўна, у 2009 годзе.
  • Rust – крыху старэйшы за папярэдняга калегі, які выйшаў у 2006 годзе, усё яшчэ дастаткова малады адносна сваіх субратаў. Арыентаваны на больш дасведчаных распрацоўнікаў, хоць усё яшчэ імкнецца вырашаць шматлікія нізкаўзроўневыя задачы за праграміста.
  • Java - ветэран камерцыйнай распрацоўкі, які з'явіўся ў 1995 годзе, адзін з найбольш часта выкарыстоўваюцца моў пры распрацоўцы карпаратыўных прыкладанняў на дадзены момант. З яго базавымі канцэпцыямі і цяжкай настройкай асяроддзя выканання можа стаць дастаткова складаным для пачаткоўца.
  • ASP.net - платформа для распрацоўкі прыкладанняў, выпушчаная кампаніяй Microsoft. Для напісання функцыяналу галоўным чынам выкарыстоўваецца мова C# (вымаўляецца Cі Шарп), які з'явіўся ў 2000 году. Па сваёй складанасці супастаўны з узроўнем паміж Java і Rust.
  • PHP - першапачаткова выкарыстоўваўся для препроцессинга HTML, на дадзены момант хоць і ўтрымлівае абсалютнае лідэрства на рынку моў, прасочваецца тэндэнцыя да спаду выкарыстання. Адрозніваецца нізкім парогам уваходу, прастатой напісання кода, але ў той жа час, пры распрацоўцы дастаткова буйных прыкладанняў, функцыяналу мовы можа апынуцца недастаткова.

Ну і фінальная частка нашага прыкладання - найболей якая адчуваецца для карыстача - Frontend (франтэнд) - з'яўляецца асобай Вашага прыкладання, менавіта з гэтай часткай карыстальнік ўзаемадзейнічае напрамую.

Не ўдаючыся ў дэталі, сучасны фронтэнд стаіць на трох слупах, фрэймворкаў (і не вельмі), для стварэння карыстацкіх інтэрфейсаў. Адпаведна, тры найболей папулярных з'яўляюцца:

  • ReactJS – не фрэймворк, але бібліятэка. Уласна, ад ганарлівага звання фреймворк адрозніваецца толькі адсутнасцю некаторых функцый "са скрынкі", і неабходнасцю ўсталёўваць іх уручную. Такім чынам, ёсць некалькі варыяцый “падрыхтоўкі” дадзенай бібліятэкі, якія фарміруюць своеасаблівыя фрэймворкі. Для пачаткоўца можа быць цяжкаваты, з-за некаторых базавых прынцыпаў, і досыць агрэсіўнай налады зборачнага асяроддзя. Зрэшты, для хуткага старту можна скарыстацца "create-react-app" пакетам.
  • VueJS - фрэймворк для пабудовы карыстацкіх інтэрфесаў. З гэтай тройцы па праве забірае тытул самага прыязнага да карыстача фрэймворка, для распрацоўкі ва Vue парог уваходжання ніжэй чым у астатніх прыведзеных субратаў. Акрамя таго, сярод іх ён самы малады.
  • Angular - лічыцца самым складаным з прыведзеных фрэймворкаў, адзіны патрабуе наяўнасці машынапіс (надбудова над мовай Javascript). Часцяком прымяняецца для пабудовы вялікіх карпаратыўных прыкладанняў.

Рэзюмуючы вышэй напісанае, можна зрабіць выснову, што цяпер разгортванне прыкладання кардынальна адрозніваецца ад тое, як гэты працэс працякаў раней. Зрэшты, ніхто не мяшае ажыццяўляць «дэплой» па даўніне. Але ці варта трохі зэканомленага часу на старце - велізарнай колькасці грабляў, на якія маецца быць наступіць распрацоўніку які абраў гэты шлях? Я лічу, што адказ "не". Выдаткаваўшы крыху больш часу на азнаямленне з гэтымі інструментамі (а большага і не патрабуецца, бо Вам неабходна зразумець, патрэбныя яны Вам у бягучым праекце ці не), Вы зможаце адыграць яго, значна скараціўшы, напрыклад, выпадкі прывідных памылак, якія залежаць ад асяроддзя і якія праяўляюцца толькі на прадакшн-серверы, начных разбораў, што ж прывяло да падзення сервера, і чаму ён не запускаецца, і шмат чаго іншага.

Крыніца: habr.com

Дадаць каментар