Веб-қосымшаларды жасауға және жариялауға арналған бақылау тізімі

Біздің заманымызда өзіңіздің веб-қосымшаңызды жасау үшін оны жасай білу жеткіліксіз. Маңызды аспект қолданбаны орналастыру, бақылау, сонымен қатар ол жұмыс істейтін ортаны басқару және басқару үшін құралдарды орнату болып табылады. Қолмен енгізу дәуірі ұмытылып бара жатқанда, тіпті шағын жобалар үшін де автоматтандыру құралдары айтарлықтай пайда әкелуі мүмкін. «Қолмен» орналастыру кезінде біз жиі бір нәрсені жылжытуды ұмытып кетуіміз мүмкін, осы немесе басқа нюанстарды ескеру, ұмытылған сынақты өткізу, бұл тізімді ұзақ уақыт бойы жалғастыруға болады.

Бұл мақала веб-қосымшаларды жасау негіздерін енді ғана үйреніп жатқан және негізгі шарттар мен конвенциялар туралы аздап түсінгісі келетіндерге көмектесуі мүмкін.

Сонымен, қосымшаларды құрастыруды әлі де 2 бөлікке бөлуге болады: қолданба кодына қатысты барлық нәрсе және осы код орындалатын ортаға қатысты барлық нәрсе. Қолданба коды, өз кезегінде, серверлік кодқа (серверде жұмыс істейтін, жиі: бизнес логикасы, авторизация, деректерді сақтау және т.б.) және клиенттік кодқа (пайдаланушы машинасында жұмыс істейтін: жиі) бөлінеді. интерфейс және онымен байланысты логика).

Сәрсенбіден бастайық.

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

Windows Server - бірдей Windows, бірақ сервер нұсқасында. Windows жүйесінің клиенттік (тұрақты) нұсқасында қол жетімді кейбір функциялар мұнда жоқ, мысалы, статистиканы жинауға арналған кейбір қызметтер және ұқсас бағдарламалық қамтамасыз ету, бірақ желіні басқаруға арналған утилиталар жиынтығы, серверлерді орналастыруға арналған негізгі бағдарламалық қамтамасыз ету (web, ftp, ...). Жалпы алғанда, Windows сервері кәдімгі Windows-қа ұқсайды, кәдімгі Windows-қа ұқсайды, бірақ оның құны әдеттегі аналогынан 2 есе қымбат. Дегенмен, қолданбаны арнайы/виртуалды серверде орналастыру ықтималдығыңызды ескере отырып, сіз үшін түпкілікті құны, ол өсуі мүмкін болса да, маңызды емес. Windows платформасы тұтынушылардың ОЖ нарығында басым орынға ие болғандықтан, оның серверлік нұсқасы көптеген пайдаланушыларға ең таныс болады.

Unix- ұқсас жүйе. Бұл жүйелердегі дәстүрлі жұмыс пайдаланушыға басқару элементі ретінде тек консольді ұсына отырып, таныс графикалық интерфейстің болуын талап етпейді. Тәжірибесіз пайдаланушы үшін бұл форматта жұмыс істеу қиын болуы мүмкін, деректерде өте танымал мәтіндік редактордан шығудың құны қанша Vim, осыған қатысты сұрақ 6 жыл ішінде 1.8 миллионнан астам қаралым жинаған. Бұл топтың негізгі дистрибутивтері (басылымдары) мыналар: Debian - танымал дистрибутив, ондағы пакеттік нұсқалар негізінен LTS (Ұзақ мерзімді қолдау – ұзақ уақыт бойы қолдау), бұл жүйе мен пакеттердің жеткілікті жоғары сенімділігі мен тұрақтылығымен көрінеді; Ubuntu – тұрақтылыққа әсер етуі мүмкін соңғы нұсқаларындағы барлық пакеттердің дистрибутивтерін қамтиды, бірақ жаңа нұсқалармен бірге келетін функционалдылықты пайдалануға мүмкіндік береді; Red Hat Enterprise Linux – ОЖ, коммерциялық пайдалану үшін орналастырылған, ақылы, бірақ бағдарламалық қамтамасыз ету жеткізушілерінің қолдауын, кейбір меншік пакеттерін және драйвер бумаларын қамтиды; 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 500 рубль). Осылайша, сіз осы провайдерлердің кез келгенін бір тиын жұмсамай-ақ сынап көре аласыз, бірақ көрсетілетін қызметтің сапасы мен деңгейі туралы шамамен пікір ала аласыз.

Таңдалған жолға байланысты, болашақта өзгеретін жалғыз нәрсе - бұл басқарудың осы немесе басқа саласына кім жауапты болады. Егер сіз өзіңізді орналастыратын болсаңыз, онда электр қуатындағы, Интернеттегі, сервердің өзінде, онда орнатылған бағдарламалық жасақтамадағы кез келген үзілістер - мұның бәрі толығымен сіздің мойныңызда екенін түсінуіңіз керек. Дегенмен, оқыту және тестілеу үшін бұл жеткілікті.

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

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

Тұтастай алғанда, сервер инфрақұрылымы келесідей көрінеді: бізде сервер данасында қоршаған ортаның өзгерістерін басқаратын «оркестр» («оркестрация» - бірнеше сервер данасын басқару процесі) бар, виртуализация контейнері (міндетті емес, бірақ жеткілікті түрде). жиі пайдаланылады), бұл қолданбаны оқшауланған логикалық қабаттарға бөлуге мүмкіндік береді және «сценарийлер» арқылы орналастырылған кодты жаңартуға мүмкіндік беретін Үздіксіз интеграция бағдарламалық құралы.

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

Келесі қадам - ​​ОЖ деңгейінде виртуалдандыру. Қазіргі уақытта құралдан шыққан «докеризация» ұғымы кеңінен тарады Докер, ол бір-бірінен оқшауланған, бірақ бір операциялық жүйе контексінде іске қосылған контейнерлердің функционалдығын қамтамасыз етеді. Бұл нені білдіреді: осы контейнерлердің әрқайсысында сіз осы құрылғыда басқа біреудің бар екеніне күмәнданбай-ақ, бүкіл ОЖ-да жалғыз екеніне сенетін қолданбаны немесе тіпті қолданбалар жиынтығын іске қоса аласыз. Бұл функция әртүрлі нұсқалардың бірдей қолданбаларын немесе жай ғана қайшылықты қолданбаларды іске қосу үшін, сондай-ақ қолданба бөліктерін қабаттарға бөлу үшін өте пайдалы. Бұл қабат кескіні кейінірек кескінге жазылуы мүмкін, оны, мысалы, қолданбаны орналастыру үшін пайдалануға болады. Яғни, осы кескінді орнату және оның құрамындағы контейнерлерді орналастыру арқылы сіз қолданбаңызды іске қосу үшін дайын орта аласыз! Алғашқы қадамдарда сіз бұл құралды ақпараттық мақсаттар үшін де, қолданба логикасын әртүрлі қабаттарға бөлу арқылы өте нақты артықшылықтар алу үшін де пайдалана аласыз. Бірақ бұл жерде барлығына докеризация қажет емес және әрқашан емес екенін айту керек. Докеризация қолданба «фрагментацияланған», шағын бөліктерге бөлінген, әрқайсысы «микросервис архитектурасы» деп аталатын өз міндетіне жауап беретін жағдайларда негізделеді.

Сонымен қатар, қоршаған ортаны қамтамасыз етуден басқа, біз кодты түрлендірудің барлық түрлерін, қолданбаға қатысты кітапханалар мен бумаларды орнатуды, іске қосу сынақтарын, осы операциялар туралы хабарландыруларды және т.б. қамтитын қолданбаны сауатты орналастыруды қамтамасыз етуіміз керек. Бұл жерде біз «Үздіксіз интеграция» сияқты ұғымға назар аударуымыз керек (CI – Үздіксіз интеграция). Қазіргі уақытта осы саладағы негізгі құралдар - Дженкинс (Java тілінде жазылған CI бағдарламалық жасақтамасы басында біршама күрделі болып көрінуі мүмкін), Travis CI (Ruby тілінде жазылған, субъективті, біршама қарапайым Дженкинс, дегенмен, орналастыру конфигурациясы саласындағы кейбір білім әлі де қажет), Gitlab CI (жазылған Ruby және Go).

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

Негіздерден бастайық: Тетік бағдарламасы (backend) – сервер бөлігі. Мұнда тілді таңдау, негізгі функциялар жиынтығы және алдын ала анықталған құрылым (қаңқа) негізінен жеке қалаулармен анықталады, бірақ соған қарамастан, ескеру үшін атап өткен жөн (автордың тілдер туралы пікірі талаппен болса да, айтарлықтай субъективті. бейтарап сипаттамаға):

  • Python - тәжірибесіз қолданушы үшін өте ыңғайлы тіл, ол кейбір қателерді кешіреді, бірақ ол жаман ештеңе жасамауы үшін әзірлеушіге өте қатал болуы мүмкін. Қазірдің өзінде 1991 жылы пайда болған жеткілікті жетілген және мағыналы тіл.
  • Go - Google-дан шыққан тіл, сонымен қатар өте ыңғайлы және ыңғайлы, кез келген платформада орындалатын файлды құрастыру және алу өте оңай. Бұл қарапайым және жағымды болуы мүмкін немесе күрделі және маңызды болуы мүмкін. Балғын және жас, салыстырмалы түрде жақында, 2009 жылы пайда болды.
  • Rust 2006 жылы шыққан бұрынғы әріптесінен сәл үлкен, бірақ құрдастарымен салыстырғанда әлі де жас. Тәжірибелі әзірлеушілерге бағытталған, бірақ ол әлі де бағдарламашы үшін көптеген төмен деңгейлі тапсырмаларды шешуге тырысады.
  • Java 1995 жылы енгізілген коммерциялық дамудың ардагері болып табылады және бүгінгі күні кәсіпорын қолданбаларын әзірлеуде ең жиі қолданылатын тілдердің бірі болып табылады. Негізгі тұжырымдамаларымен және күрделі орнатуымен жұмыс уақыты бастаушы үшін өте қиын болуы мүмкін.
  • ASP.net — Microsoft шығарған қолданбаларды әзірлеу платформасы. Функционалдылықты жазу үшін негізінен 2000 жылы пайда болған C# тілі (C Sharp деп аталады) қолданылады. Оның күрделілігі Java және Rust арасындағы деңгеймен салыстырылады.
  • Бастапқыда HTML алдын ала өңдеу үшін пайдаланылған PHP қазіргі уақытта тіл нарығында абсолютті көшбасшылыққа ие болғанымен, қолданудың төмендеуі тенденциясы байқалады. Оның кіру шегі төмен және кодты жазудың қарапайымдылығы бар, бірақ сонымен бірге жеткілікті үлкен қосымшаларды әзірлеу кезінде тілдің функционалдығы жеткіліксіз болуы мүмкін.

Біздің қосымшамыздың соңғы бөлігі - пайдаланушы үшін ең маңыздысы - Алғы жақ (frontend) – қолданбаңыздың беті; дәл осы бөлікпен пайдаланушы тікелей әрекеттеседі.

Егжей-тегжейлерге тоқталмай-ақ, қазіргі заманғы интерфейс пайдаланушы интерфейстерін жасау үшін үш тірекке, фреймворктарға (және онша көп емес) тұрады. Тиісінше, ең танымал үшеу:

  • ReactJS - бұл фреймворк емес, кітапхана. Шын мәнінде, рамка өзінің мақтан тұтатын атауынан кейбір функциялардың «қораптан тыс» болмауымен және оларды қолмен орнату қажеттілігімен ерекшеленеді. Осылайша, бірегей шеңберлерді құра отырып, бұл кітапхананы «дайындаудың» бірнеше нұсқалары бар. Кейбір негізгі принциптерге және құрастыру ортасын өте агрессивті орнатуға байланысты жаңадан бастағандар үшін бұл сәл қиын болуы мүмкін. Дегенмен, жылдам бастау үшін сіз «жасау-реакциялау» бумасын пайдалана аласыз.
  • VueJS – пайдаланушы интерфейстерін құруға арналған негіз. Осы үштіктің ішінде ол ең ыңғайлы құрылым атауын алады; Vue-де даму үшін кіруге кедергі басқа аталған ағайындыларға қарағанда төмен. Оның үстіне ол олардың ішіндегі ең жасы.
  • Бұрыштық бұл жақтаулардың ең күрделісі болып саналады, оны талап ететін жалғыз TypeScript (Javascript тіліне арналған қосымша). Көбінесе ірі кәсіпорын қосымшаларын құру үшін қолданылады.

Жоғарыда жазылғандарды қорытындылай келе, біз қазір қосымшаны қолдану бұл процестің бұрынғыдан түбегейлі айырмашылығы бар деп қорытынды жасауға болады. Дегенмен, «орналастыруды» ескі әдіспен орындауға ешкім кедергі келтірмейді. Бірақ бастапқыда үнемделген аз уақыт осы жолды таңдаған әзірлеуші ​​​​басуға тура келетін көптеген қателіктерге тұрарлық па? Мен жауап жоқ деп сенемін. Осы құралдармен танысуға біраз уақыт жұмсай отырып (және сізге бұдан артық қажет емес, өйткені сіз олардың ағымдағы жобаңызға қажет пе, жоқ па екенін түсінуіңіз керек), мысалы, оны айтарлықтай азайта аласыз. , ортаға байланысты және тек өндірістік серверде пайда болатын елес қателер жағдайлары, сервердің бұзылуына не әкелгенін және оның неліктен басталмайтынын түнде талдау және т.б.

Ақпарат көзі: www.habr.com

пікір қалдыру