Веб тиркемелерди түзүү жана жарыялоо үчүн текшерүү тизмеси

Биздин убакта өзүңүздүн веб тиркемеңизди түзүү үчүн аны иштеп чыгуу жетишсиз. Маанилүү аспект тиркемени жайылтуу, мониторинг жүргүзүү, ошондой эле ал иштеп жаткан чөйрөнү башкаруу жана башкаруу үчүн куралдарды түзүү болуп саналат. Кол менен жайылтуу доору унутулуп бараткандыктан, атүгүл кичинекей долбоорлор үчүн автоматташтыруу куралдары олуттуу пайда алып келиши мүмкүн. "Кол менен" жайгаштырууда биз көп учурда бир нерсени жылдырууну унутуп калышыбыз мүмкүн, тигил же бул нюансты эске алып, унутулган тестти өткөрөбүз, бул тизмени бир топ убакытка чейин улантууга болот.

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

Ошентип, тиркемелерди куруу дагы эле 2 бөлүккө бөлүнөт: тиркеме кодуна тиешелүү бардык нерсе жана бул код аткарылган чөйрөгө тиешелүү бардык нерсе. Тиркеме коду өз кезегинде сервердик кодго (серверде иштеген, көбүнчө: бизнес логикасы, авторизация, маалыматтарды сактоо ж.б.) жана кардар кодуна (колдонуучунун машинасында иштеген: көбүнчө) бөлүнөт. интерфейс жана аны менен байланышкан логика).

Шаршембиден баштайлы.

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

Windows Server - ошол эле Windows, бирок сервердик вариацияда. Windowsтун клиенттик (кадимки) версиясында жеткиликтүү болгон кээ бир функциялар бул жерде жок, мисалы, статистиканы чогултуу үчүн кээ бир кызматтар жана ушул сыяктуу программалык камсыздоо, бирок тармакты башкаруу үчүн утилиталардын топтому, серверлерди жайылтуу үчүн негизги программалык камсыздоо (web, ftp, ...). Жалпысынан алганда, Windows Server кадимки Windows сыяктуу көрүнөт, кадимки Windows сыяктуу quacks, бирок, анын баасы кадимки кесиптешине караганда 2 эсе кымбат. Бирок, сиз тиркемени атайын/виртуалдык серверде жайгаштыра турганыңызды эске алганда, сиз үчүн акыркы чыгым, бирок ал көбөйүшү мүмкүн, бирок маанилүү эмес. Windows платформасы керектөө OS рыногунда басымдуу орунду ээлегендиктен, анын сервердик нускасы көпчүлүк колдонуучулар үчүн эң тааныш болуп калат.

Unix- окшош система. Бул системалардагы салттуу иш колдонуучуга башкаруу элементи катары консолду гана сунуштаган тааныш графикалык интерфейстин болушун талап кылбайт. Тажрыйбасы жок колдонуучу үчүн бул форматта иштөө кыйын болушу мүмкүн, маалыматтарда абдан популярдуу болгон тексттик редактордон чыгуунун баасы канча болот? vim, буга байланыштуу суроо 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 500 рубль). Ошентип, сиз бир тыйын коротпостон, бул провайдерлердин каалаганын сынап көрө аласыз, бирок көрсөтүлгөн кызматтын сапаты жана деңгээли жөнүндө болжолдуу пикир аласыз.

Тандалган жолго жараша, келечекте өзгөрө турган бир гана нерсе - бул башкаруунун тигил же бул чөйрөсү үчүн ким жооптуу болот. Эгер сиз өзүңүздү кабыл алсаңыз, анда электр энергиясындагы, Интернеттеги, сервердин өзүндөгү, ага орнотулган программалык камсыздоодогу бардык үзгүлтүктөр - мунун баары толугу менен сиздин моюнуңузда экенин түшүнүшүңүз керек. Бирок, окутуу жана тестирлөө үчүн бул жетиштүү.

Эгер сизде сервердин ролун ойной турган кошумча машина жок болсо, анда экинчи же үчүнчү жолду колдонгуңуз келет. Экинчи учур биринчисине окшош, сервердин жеткиликтүүлүгү жана анын күчү үчүн жоопкерчиликти хосттердин мойнуна жүктөйсүз. Серверди жана программалык камсыздоону башкаруу дагы эле сиздин көзөмөлүңүздө.

Акыр-аягы, булут провайдерлеринин дараметин ижарага алуу мүмкүнчүлүгү. Бул жерде сиз өтө көп техникалык деталдарга кирбестен дээрлик бардык нерсени автоматташтырылган башкарууну орното аласыз. Кошумчалай кетсек, бир машинанын ордуна сизде бир нече параллелдүү иштеп жаткан инстанциялар болушу мүмкүн, алар, мисалы, тиркеменин ар кандай бөлүктөрүнө жооптуу болушу мүмкүн, ошол эле учурда атайын серверге ээ болуу наркы боюнча көп айырмаланбайт. Ошондой эле, оркестрлөө, контейнерлештирүү, автоматтык жайгаштыруу, үзгүлтүксүз интеграция жана башка көптөгөн нерселер бар! Биз төмөндө ушул нерселердин айрымдарын карап чыгабыз.

Жалпысынан сервердин инфраструктурасы төмөнкүдөй көрүнөт: бизде "оркестратор" (оркестрация - бул бир нече сервер инстанцияларын башкаруу процесси) бар, ал сервер инстанциясында экологиялык өзгөрүүлөрдү башкарат, виртуалдаштыруу контейнери (милдеттүү эмес, бирок толугу менен). көп колдонулат), бул сизге тиркемени обочолонгон логикалык катмарларга бөлүүгө мүмкүндүк берет жана Үзгүлтүксүз интеграция программалык камсыздоосу — “скрипттер” аркылуу жайгаштырылган кодду жаңыртууга мүмкүндүк берет.

Ошентип, оркестрлөө серверлердин абалын көрүүгө, сервер чөйрөсүнө жаңыртууларды чыгарууга же артка кайтарууга жана башкаларга мүмкүндүк берет. Адегенде бул аспект сизге таасир этпейт, анткени бир нерсени уюштуруу үчүн сизге бир нече сервер керек (сизде бирөө болушу мүмкүн, бирок бул эмне үчүн керек?), жана бир нече серверге ээ болуу үчүн сизге алар керек. Бул багыттагы куралдардын ичинен эң популярдуусу - бул Kubernetes тарабынан иштелип чыккан Гугл.

Кийинки кадам - ​​бул OS деңгээлинде виртуалдаштыруу. Азыркы учурда куралдан келип чыккан "докеризация" түшүнүгү кеңири тараган ютуб, бул бири-биринен обочолонгон, бирок бир операциялык системанын контекстинде ишке киргизилген контейнерлердин функционалдуулугун камсыз кылат. Бул эмнени билдирет: бул контейнерлердин ар биринде сиз тиркемени, атүгүл тиркемелердин топтомун иштете аласыз, алар бул машинада башка бирөөнүн бар экенине шектенбестен, алар бүтүндөй ОСте жалгыз деп эсептешет. Бул функция ар кандай версиялардын окшош тиркемелерин же жөн гана карама-каршы тиркемелерди ишке киргизүү үчүн, ошондой эле тиркеменин бөлүктөрүн катмарларга бөлүү үчүн абдан пайдалуу. Бул катмарды кийинчерээк сүрөткө жазса болот, аны, мисалы, тиркемени жайылтуу үчүн колдонсо болот. Башкача айтканда, бул сүрөттү орнотуу жана андагы контейнерлерди жайылтуу менен, сиз колдонмоңузду иштетүү үчүн даяр чөйрө аласыз! Биринчи кадамдарда, сиз бул куралды маалыматтык максатта да колдоно аласыз жана колдонмо логикасын ар кандай катмарларга бөлүү менен реалдуу пайдаларды ала аласыз. Бирок бул жерде бардыгына эле докеризация керек эмес жана ар дайым эмес деп айтууга болот. Докеризация тиркеме "фрагментацияланган", майда бөлүктөргө бөлүнгөн, ар бири "микросервис архитектурасы" деп аталган өз милдетине жооп берген учурларда негиздүү.

Мындан тышкары, айлана-чөйрөнү камсыз кылуудан тышкары, биз кодду трансформациялоонун бардык түрлөрүн, тиркеме менен байланышкан китепканаларды жана пакеттерди орнотууну, иштеп жаткан тесттерди, бул операциялар жөнүндө эскертмелерди жана башкаларды камтыган тиркеменин компетенттүү жайылышын камсыздашыбыз керек. Бул жерде биз "Үзгүлтүксүз интеграция" сыяктуу түшүнүккө көңүл бурушубуз керек (CI – Үзгүлтүксүз интеграция). Азыркы учурда бул чөйрөдөгү негизги инструменттер Дженкинс (Java тилинде жазылган CI программасы башында бир аз татаал сезилиши мүмкүн), Travis C.I. (Ruby тилинде жазылган, субъективдүү, бир аз жөнөкөй Дженкинс, бирок, жайылтуу конфигурациясында кээ бир билим дагы эле талап кылынат), Gitlab CI (жазылган Ruby жана Go).

Ошентип, сиздин тиркемеңиз иштей турган чөйрө жөнүндө сөз кылып, акыры ушул тиркемелерди түзүү үчүн заманбап дүйнө бизге кандай куралдарды сунуштап жатканын карап чыгууга убакыт келди.

Негизгилерден баштайлы: Backend (backend) – сервер бөлүгү. Бул жерде тилди, негизги функциялардын жыйындысын жана алдын ала аныкталган структураны (алкакты) тандоо, негизинен, жеке каалоолор менен аныкталат, бирок ошону менен бирге, эске алуу үчүн белгилеп кетүү зарыл (тилдер боюнча автордун пикири доомат менен болсо да, бир топ субъективдүү калыс сыпаттамага):

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

Ооба, биздин арыздын акыркы бөлүгү - колдонуучу үчүн эң көрүнүктүү - Frontend (Fronend) – бул сиздин колдонмоңуздун жүзү;

Детальдарга кирбестен, заманбап фронтон үч мамыга, алкактарга (жана анчалык деле көп эмес), колдонуучу интерфейстерин түзүү үчүн турат. Демек, үч эң популярдуу болуп төмөнкүлөр саналат:

  • ReactJS бул алкак эмес, китепкана. Чындыгында, алкак өзүнүн текебер аталышынан айрым функциялардын "кутудан тышкары" жоктугу жана аларды кол менен орнотуу зарылдыгы менен гана айырмаланат. Ошентип, уникалдуу алкактарды түзүү, бул китепкананы "даярдоо" бир нече вариациялар бар. Бул башталгыч үчүн бир аз кыйын болушу мүмкүн, анткени кээ бир негизги принциптери жана куруу чөйрөсүн абдан агрессивдүү орнотуу. Бирок, тез баштоо үчүн, сиз "түзүү-реакция-колдонмо" топтомун колдоно аласыз.
  • VueJS колдонуучу интерфейстерин куруу үчүн негиз болуп саналат. Бул үчилтиктин ичинен, ал Vue'де иштеп чыгуу үчүн эң ыңгайлуу негиздин наамын алат, кирүү үчүн тоскоолдук башка аталган бир туугандарга караганда төмөн. Анын үстүнө ал алардын эң жашы.
  • Angular бул алкактардын эң татаалы болуп эсептелет, аны талап кылган жалгыз типография (Javascript тили үчүн кошумча). Көбүнчө ири ишкана колдонмолорун куруу үчүн колдонулат.

Жогоруда жазылгандарды жалпылап, биз азыр тиркемени жайылтуу бул процесс мурда кандай жүрүп жатканынан кескин айырмаланат деген тыянакка келсек болот. Бирок, эч ким сизге эски модада "жайгаштырууну" токтотпойт. Бирок, башында үнөмдөлгөн аз убакыт бул жолду тандаган иштеп чыгуучу кадам ташташы керек болгон көп каталарга татыктуубу? Жооп жок деп ишенем. Бул инструменттер менен таанышууга бир аз көбүрөөк убакыт коротуу менен (жана мындан ашыкча кереги жок, анткени сиз алардын учурдагы долбооруңузга керекпи же жокпу түшүнүшүңүз керек), мисалы, бир кыйла азайтып, аны ойной аласыз. , айлана-чөйрөгө жараша жана өндүрүш серверинде гана пайда болгон арбак каталарынын учурлары, сервердин бузулушуна эмне себеп болгонун жана эмне үчүн ал башталбай турганын түнкү талдоо жана башкалар.

Source: www.habr.com

Комментарий кошуу