Рӯйхати санҷиш барои эҷод ва нашри барномаҳои веб

Барои эҷоди як барномаи веби худ дар замони мо, қобилияти таҳияи он кофӣ нест. Ҷанбаи муҳим ин таъсиси абзорҳо барои ҷобаҷогузории барномаҳо, мониторинг, инчунин идора ва идоракунии муҳити он аст, ки дар он фаъолият мекунад. Вақте ки давраи ҷобаҷогузории дастӣ ба фаромӯшӣ меравад, ҳатто барои лоиҳаҳои хурд, воситаҳои автоматикунонӣ метавонанд манфиатҳои назаррас оваранд. Ҳангоми ҷойгиркунии "дастӣ" мо аксар вақт метавонем интиқол додани чизеро фаромӯш кунем, ин ё он нозукиро ба назар гирем, санҷиши фаромӯшшударо гузаронем, ин рӯйхатро барои муддати тӯлонӣ идома додан мумкин аст.

Ин мақола метавонад ба онҳое, ки танҳо асосҳои эҷоди барномаҳои вебро меомӯзанд ва мехоҳанд каме дар бораи истилоҳот ва конвенсияҳои асосиро фаҳманд, кӯмак кунад.

Ҳамин тариқ, сохтани замимаҳо ҳоло ҳам метавон ба 2 қисм тақсим кард: ҳама чизе, ки ба коди барнома алоқаманд аст ва ҳама чизе, ки ба муҳити он марбут аст, ки ин код иҷро карда мешавад. Рамзи барнома, дар навбати худ, инчунин ба коди сервер (касе, ки дар сервер кор мекунад, аксаран: мантиқи тиҷорат, иҷозат, нигоҳдории маълумот ва ғ.) ва коди муштарӣ (касе, ки дар мошини корбар кор мекунад: аксар вақт) тақсим карда мешавад. интерфейс ва мантиқи марбут ба он).

Биёед аз рӯзи чоршанбе оғоз кунем.

Асоси кори ҳама гуна код, система ё нармафзор Системаи Оператсионист, бинобар ин дар зер мо маъмултарин системаҳои бозори хостингро дида мебароем ва ба онҳо тавсифи мухтасар медиҳем:

Windows Server - ҳамон Windows, аммо дар варианти сервер. Баъзе функсияҳое, ки дар версияи муштарии (муқаррарии) Windows мавҷуданд, дар ин ҷо мавҷуд нестанд, масалан, баъзе хидматҳо барои ҷамъоварии омор ва нармафзори шабеҳ, аммо маҷмӯи утилитаҳо барои идоракунии шабака, нармафзори асосӣ барои ҷойгиркунии серверҳо (web, ftp, ...). Умуман, Windows Server ба Windows-и муқаррарӣ монанд аст, ба монанди Windows-и муқаррарӣ, аммо арзиши он нисбат ба ҳамтои муқаррарии худ 2 маротиба зиёдтар аст. Аммо, бо назардошти он, ки шумо эҳтимолан барномаро дар сервери бахшидашуда/виртуалӣ ҷойгир мекунед, арзиши ниҳоӣ барои шумо, гарчанде ки он метавонад афзоиш ёбад, муҳим нест. Азбаски платформаи Windows дар бозори ОС-и истеъмолӣ ҷои бузургро ишғол мекунад, нашри сервери он барои аксари корбарон шиностарин хоҳад буд.

Unix- системаи шабеҳ. Кори анъанавӣ дар ин системаҳо мавҷудияти интерфейси графикии шиносро талаб намекунад, ки ба корбар танҳо консолро ҳамчун унсури идоракунӣ пешниҳод мекунад. Барои корбари бетаҷриба, кор дар ин формат метавонад душвор бошад, танҳо арзиши баромадан аз муҳаррири матн, ки дар маълумот хеле маъмул аст, чӣ қадар аст Сабаби, як саволи марбут ба ин аллакай дар тӯли 6 сол беш аз 1.8 миллион тамошобин дарёфт кардааст. Тақсимоти асосии (нашри) ин оила инҳоянд: Debian - паҳнкунии маъмул, версияҳои бастаи он асосан ба LTS (Дастгирии дарозмуддат – дастгирӣ барои муддати тӯлонӣ), ки дар эътимоднокии хеле баланд ва устувории система ва бастаҳо ифода меёбад; Ubuntu – тақсимоти ҳама бастаҳоро дар версияҳои охирини худ дар бар мегирад, ки метавонад ба субот таъсир расонад, аммо ба шумо имкон медиҳад, ки функсияҳоеро, ки бо версияҳои нав ворид мешаванд, истифода баред; Red Hat Enterprise Linux – OS, ки барои истифодаи тиҷоратӣ ҷойгир шудааст, пулакӣ аст, аммо дастгирии фурӯшандагони нармафзор, баъзе бастаҳои хусусӣ ва бастаҳои драйверро дар бар мегирад; CentOS - манбаи кушода як варианти Red Hat Enterprise Linux, ки бо набудани бастаҳои хусусӣ ва дастгирӣ тавсиф мешавад.

Барои онҳое, ки нав ба азхуд кардани ин соҳа шурӯъ мекунанд, тавсияи ман системаҳо хоҳад буд Windows Server, ё Ubuntu. Агар мо Windows-ро ба назар гирем, пас ин пеш аз ҳама шиносоии система аст, Ubuntu - таҳаммулпазирии бештар ба навсозӣ ва дар навбати худ, масалан, мушкилоти камтар ҳангоми оғози лоиҳаҳо дар технологияҳое, ки версияҳои навро талаб мекунанд.

Ҳамин тавр, дар бораи ОС тасмим гирифта, биёед ба маҷмӯи асбобҳое гузарем, ки ба шумо имкон медиҳанд, ки ҳолати барнома ё қисмҳои онро дар сервер ҷойгир кунед (насб кунед), навсозӣ кунед ва назорат кунед.

Қарори муҳими навбатӣ ҷойгиркунии замимаи шумо ва сервер барои он хоҳад буд. Дар айни замон, маъмултарин 3 роҳ мебошанд:

  • Хостинг (нигоҳ доштани) сервер дар ихтиёри худ ин варианти аз ҳама барои буҷет аст, аммо шумо бояд аз провайдери худ IP-и статикӣ фармоиш диҳед, то манбаи шумо суроғаи худро бо мурури замон тағир надиҳад.
  • Сервери махсусро (VDS) иҷора гиред ва мустақилона онро идора кунед ва борҳоро миқёс кунед
  • Пардохт кунед (аксар вақт онҳо ба шумо имкон медиҳанд, ки функсияҳои платформаро ройгон санҷед) барои обуна ба баъзе хостинги абрӣ, ки модели пардохт барои захираҳои истифодашуда хеле маъмул аст. Намояндагони барҷастаи ин самт: Amazon AWS (онҳо барои истифодаи хидматҳо як соли ройгон медиҳанд, аммо бо маҳдудияти моҳона), Google Cloud (онҳо ба ҳисоб 300 доллар медиҳанд, ки онро дар тӯли сол барои хидматҳои хостинги абрӣ сарф кардан мумкин аст) , Yandex.Cloud (барои 4000 моҳ 2 рубл медиҳанд), Microsoft Azure (ба хизматрасониҳои маъмул барои як сол дастрасии ройгон медиҳанд, + 12 рубл барои ҳама гуна хидматҳо барои як моҳ). Ҳамин тариқ, шумо метавонед яке аз ин провайдерҳоро бе сарфи як динор санҷед, аммо дар бораи сифат ва сатҳи хидматрасонӣ тахминии тахминӣ гиред.

Вобаста аз роҳи интихобшуда, ягона чизе, ки дар оянда тағир хоҳад ёфт, он аст, ки барои ин ё он соҳаи маъмурият кӣ масъул аст. Агар шумо худро мизбон кунед, пас шумо бояд фаҳмед, ки ҳама гуна қатъ дар нерӯи барқ, Интернет, худи сервер, нармафзори дар он ҷойгиршуда - ҳамаи ин комилан ба дӯши шумост. Аммо, барои омӯзиш ва санҷиш, ин беш аз кофӣ аст.

Агар шумо мошини иловагӣ надошта бошед, ки метавонад нақши серверро иҷро кунад, пас шумо мехоҳед роҳи дуюм ё сеюмро истифода баред. Ҳолати дуюм ба ҳолати аввал шабеҳ аст, ба истиснои он, ки шумо масъулияти мавҷудияти сервер ва қудрати онро ба дӯши соҳибхона мегузоред. Маъмурияти сервер ва нармафзор ҳоло ҳам таҳти назорати шумост.

Ва ниҳоят, варианти иҷораи иқтидори провайдерҳои абрӣ. Дар ин ҷо шумо метавонед назорати автоматии қариб ҳама чизро бидуни ворид кардани ҷузъиёти зиёди техникӣ танзим кунед. Илова бар ин, ба ҷои як мошин, шумо метавонед якчанд мисолҳои мувозии коркунанда дошта бошед, ки масалан, метавонанд барои қисмҳои гуногуни барнома масъул бошанд, дар ҳоле ки аз ҷиҳати арзиш аз соҳиби сервери махсус фарқ намекунанд. Ва инчунин, асбобҳо барои оркестрсозӣ, контейнерсозӣ, ҷойгиркунии автоматӣ, ҳамгироии пайваста ва ғайра мавҷуданд! Мо дар зер баъзе аз ин чизҳоро дида мебароем.

Умуман, инфрасохтори сервер чунин менамояд: мо ба истилоҳ "оркестратор" дорем (оркестратсия - раванди идоракунии якчанд мисолҳои сервер), ки тағироти муҳити зистро дар инстансияи сервер, контейнери виртуализатсия (ихтиёрӣ, вале комилан) идора мекунад. зуд-зуд истифода мешавад), ки ба шумо имкон медиҳад, ки барномаро ба қабатҳои ҷудошудаи мантиқӣ тақсим кунед ва нармафзори муттаҳидсозии доимӣ - имкон медиҳад, ки навсозиҳои коди ҷойгиршуда тавассути "скриптҳо".

Ҳамин тавр, оркестр ба шумо имкон медиҳад, ки ҳолати серверҳоро бубинед, навсозиҳоро ба муҳити сервер паҳн кунед ё баргардонед ва ғайра. Дар аввал, ин ҷанба гумон аст, ки ба шумо таъсир расонад, зеро барои танзими чизе ба шумо якчанд сервер лозим аст (шумо метавонед якто дошта бошед, аммо ин барои чӣ лозим аст?) ва барои доштани якчанд сервер ба шумо лозим аст. Дар байни абзорҳо дар ин самт маъмултаринаш Kubernetes мебошад, ки аз ҷониби таҳиягарон таҳия шудааст Google.

Қадами навбатӣ виртуализатсия дар сатҳи OS мебошад. Имрӯзҳо мафҳуми «докеризатсия» васеъ паҳн шудааст, ки аз асбоб бармеояд Доктор, ки функсияҳои контейнерҳои аз ҳамдигар ҷудошударо таъмин мекунад, аммо дар заминаи як системаи оператсионӣ ба кор андохта шудааст. Ин чӣ маъно дорад: дар ҳар яке аз ин контейнерҳо шумо метавонед як барнома ё ҳатто маҷмӯи барномаҳоро иҷро кунед, ки онҳо боварӣ доранд, ки онҳо дар тамоми ОС ягонаанд, ҳатто дар бораи мавҷудияти ягон каси дигар дар ин мошин шубҳа накунанд. Ин функсия барои оғоз кардани замимаҳои якхелаи версияҳои гуногун ё замимаҳои ба ҳам мухолиф ва инчунин барои тақсим кардани қисмҳои барнома ба қабатҳо хеле муфид аст. Ин қабати партофти баъдтар метавонад ба тасвир навишта шавад, ки онро масалан барои ҷойгиркунии барнома истифода бурдан мумкин аст. Яъне, бо насб кардани ин тасвир ва ҷойгиркунии контейнерҳои дар он мавҷудбуда, шумо муҳити омода барои иҷро кардани замимаи худро ба даст меоред! Дар қадамҳои аввал, шумо метавонед ин асбобро ҳам барои мақсадҳои иттилоотӣ истифода баред ва ҳам барои ба даст овардани манфиатҳои воқеӣ тавассути тақсим кардани мантиқи барнома ба қабатҳои гуногун. Аммо дар ин ҷо бояд гуфт, ки на ҳама ба докеризатсия ниёз доранд ва на ҳамеша. Докеризатсия дар ҳолатҳое асоснок карда мешавад, ки барнома ба қисмҳои хурд тақсим карда мешавад, ки ҳар кадоми онҳо барои вазифаи худ, ба истилоҳ "меъмории микросервис" масъуланд.

Илова бар ин, ба ғайр аз фароҳам овардани муҳити зист, мо бояд густариши салоҳиятноки барномаро таъмин кунем, ки ҳама намудҳои табдили код, насби китобхонаҳо ва бастаҳои марбут ба барнома, санҷишҳои иҷрошаванда, огоҳиҳо дар бораи ин амалиётҳо ва ғайраро дар бар мегирад. Дар ин ҷо мо бояд ба чунин мафҳуми «Интегратсияи пайваста» (CI - Интегратсияи муттасил). Воситаҳои асосӣ дар ин соҳа дар айни замон Ҷенкинс мебошанд (нармафзори CI, ки дар Java навишта шудааст, дар аввал каме мураккаб ба назар мерасад), Травис CI (бо забони руби навишта шудааст, субъективӣ, то андозае соддатар Ҷенкинс, аммо, баъзе донишҳо дар соҳаи конфигуратсияи густариш ҳанӯз талаб карда мешаванд), Gitlab CI (навишта шудааст Ruby ва Go).

Ҳамин тавр, пас аз он ки дар бораи муҳите, ки барномаи шумо дар он кор хоҳад кард, сухан ронда, вақти он расидааст, ки дар ниҳоят бубинем, ки ҷаҳони муосир ба мо барои эҷоди ин барномаҳо кадом асбобҳоро пешниҳод мекунад.

Биёед бо асосҳо оғоз кунем: Backend (backend) - қисми сервер. Интихоби забон, маҷмӯи вазифаҳои асосӣ ва сохтори (чаҳорчӯби) пешакӣ муайяншуда дар ин ҷо асосан аз рӯи афзалиятҳои шахсӣ муайян карда мешавад, аммо бо вуҷуди ин, барои баррасӣ бояд қайд кард (фикри муаллиф дар бораи забонҳо, ҳарчанд бо даъво хеле субъективӣ аст. ба тавсифи беғаразона):

  • Python як забони хеле дӯстона барои корбари бетаҷриба аст, он баъзе хатогиҳоро мебахшад, аммо он инчунин метавонад нисбат ба таҳиякунанда хеле сахтгир бошад, то ӯ кори баде накунад. Аллакай забони хеле пухта ва пурмазмун, ки соли 1991 пайдо шудааст.
  • Go - забоне аз Google, инчунин хеле дӯстона ва қулай аст, тартиб додан ва гирифтани файли иҷрошаванда дар ҳама гуна платформа хеле осон аст. Он метавонад содда ва гуворо бошад ё метавонад мураккаб ва ҷиддӣ бошад. Тару тоза ва ҷавон, нисбатан ба наздикӣ, дар соли 2009 пайдо шуд.
  • Раст аз ҳамтои қаблии худ, ки соли 2006 ба табъ расида буд, каме калонтар аст, аммо дар муқоиса бо ҳамсолонаш ҳанӯз хеле ҷавон аст. Ба таҳиягарони ботаҷриба нигаронида шудааст, гарчанде ки он то ҳол кӯшиш мекунад, ки бисёр вазифаҳои сатҳи пастро барои барномасоз ҳал кунад.
  • Java собиқадори рушди тиҷоратӣ мебошад, ки соли 1995 муаррифӣ шудааст ва имрӯз яке аз забонҳои маъмултарин дар таҳияи барномаҳои корхона мебошад. Бо мафҳумҳои асосӣ ва танзимоти вазнин, вақти кор метавонад барои шурӯъкунандагон хеле душвор гардад.
  • ASP.net платформаи таҳияи барномаҳоест, ки аз ҷониби Microsoft нашр шудааст. Барои навиштани функсияҳо асосан забони C# (талаффузи C Sharp), ки соли 2000 пайдо шудааст, истифода мешавад. Мушкилии онро бо сатҳи байни Java ва Rust муқоиса кардан мумкин аст.
  • PHP, ки дар ибтидо барои коркарди пешакии HTML истифода мешуд, дар айни замон, гарчанде ки он дар бозори забон пешсафияти мутлақро дорад, тамоюли коҳиши истифода вуҷуд дорад. Он ҳадди ақали вуруд ва осонии навиштани код дорад, аммо дар айни замон, ҳангоми таҳияи барномаҳои хеле калон, функсияи забон метавонад кофӣ набошад.

Хуб, қисми ниҳоии аризаи мо - барои корбар аз ҳама қобили мулоҳиза - Frontend (frontend) - чеҳраи барномаи шумо аст; маҳз бо ин қисм корбар мустақиман муошират мекунад.

Бе тафсилот, фронтенти муосир дар се сутун, чаҳорчӯба (ва на он қадар зиёд) барои эҷоди интерфейсҳои корбар қарор дорад. Бинобар ин, се маъмултарин инҳоянд:

  • ReactJS чаҳорчӯба нест, балки китобхона аст. Воқеан, чаҳорчӯба аз унвони ифтихории худ танҳо бо набудани баъзе функсияҳои "аз қуттӣ" ва зарурати насб кардани онҳо дастӣ фарқ мекунад. Ҳамин тариқ, якчанд вариантҳои «тайёркунии» ин китобхона мавҷуданд, ки чаҳорчӯбаҳои беназирро ташкил медиҳанд. Аз сабаби баъзе принсипҳои асосӣ ва танзими хеле хашмгини муҳити сохтмон, он метавонад барои шурӯъкунандагон каме душвор бошад. Аммо, барои оғози зуд, шумо метавонед бастаи "create-react-app" -ро истифода баред.
  • VueJS чаҳорчӯба барои сохтани интерфейсҳои корбар аст. Аз ин сегона, он ба таври ҳақиқӣ унвони чаҳорчӯбаи аз ҳама барои истифодабарандагонро мегирад; барои рушд дар Vue, монеаи вуруд нисбат ба бародарони дигари зикршуда пасттар аст. Гузашта аз ин, ӯ дар байни онҳо ҷавонтарин аст.
  • Angular мураккабтарини ин чаҳорчӯба ҳисобида мешавад, ки ягонаест, ки талаб мекунад TypeScript (илова барои забони Javascript). Аксар вақт барои сохтани барномаҳои бузурги корхона истифода мешавад.

Ҷамъбасти он чизе, ки дар боло навишта шудааст, мо метавонем ба хулосае омадем, ки ҳоло ҷойгиркунии барнома аз он ки ин раванд пештар идома дошт, ба куллӣ фарқ мекунад. Бо вуҷуди ин, ҳеҷ кас шуморо аз анҷом додани "ҷойгиркунӣ" бо усули кӯҳна бозмедорад. Аммо оё вақти ками сарфашуда дар ибтидо ба маблағи зиёди хатогиҳо меарзад, ки таҳиягаре, ки ин роҳро интихоб мекунад, бояд қадам гузорад? Ман боварӣ дорам, ки ҷавоб не. Бо сарфи вақти каме бештар барои шиносоӣ бо ин асбобҳо (ва ба шумо аз ин бештар лозим нест, зеро шумо бояд фаҳмед, ки оё онҳо дар лоиҳаи ҳозираи шумо лозиманд ё не), шумо метавонед онро бозӣ кунед ва ба таври назаррас коҳиш диҳед, масалан , ҳолатҳои хатогиҳои арвоҳ вобаста ба муҳит ва танҳо дар сервери истеҳсолӣ пайдо мешаванд, таҳлили шабонарӯзии он, ки ба суқути сервер оварда расонд ва чаро он сар намешавад ва ғайра.

Манбаъ: will.com

Илова Эзоҳ