Вэб програм үүсгэх, нийтлэх хяналтын хуудас

Өнөө үед өөрийн вэб программыг бий болгохын тулд түүнийг хөгжүүлж чаддаг байх нь хангалтгүй юм. Нэг чухал зүйл бол програмыг байрлуулах, хянах, түүнчлэн ажиллаж буй орчныг удирдах, удирдахад зориулсан хэрэгслүүдийг бий болгох явдал юм. Гар аргаар байршуулах эрин үе мартагдах тусам жижиг төслүүдэд ч автоматжуулалтын хэрэгслүүд бодит ашиг тусыг авчрах болно. "Гараар" байрлуулахдаа бид ямар нэг зүйлийг шилжүүлэхээ мартаж, энэ эсвэл өөр нюансыг анхаарч үзэх, мартагдсан тест хийх, энэ жагсаалтыг нэлээд удаан үргэлжлүүлэх боломжтой.

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

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

Лхагва гарагаас эхэлцгээе.

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

Windows Сервер - ижил Windows, гэхдээ серверийн хувилбартай. Windows-ийн клиент (ердийн) хувилбарт байгаа зарим функцууд энд байхгүй, жишээлбэл, статистик мэдээлэл цуглуулах үйлчилгээ болон үүнтэй төстэй програм хангамж, гэхдээ сүлжээний удирдлагын багц хэрэгсэл, сервер байрлуулах үндсэн програм хангамж (вэб, ftp, ...). Ерөнхийдөө Windows Server нь ердийн Windows шиг харагддаг, ердийн Windows шиг quacks, гэхдээ энэ нь ердийнхөөс 2 дахин үнэтэй байдаг. Гэсэн хэдий ч, та програмыг зориулалтын/виртуал сервер дээр байрлуулах магадлал өндөр байгаа тул таны хувьд эцсийн өртөг нь нэмэгдэж магадгүй ч тийм ч чухал биш юм. Windows платформ нь хэрэглэгчийн үйлдлийн системийн зах зээлд асар их байр суурь эзэлдэг тул түүний серверийн хувилбар нь ихэнх хэрэглэгчдийн хувьд хамгийн танил байх болно.

Unix- ижил төстэй систем. Эдгээр системүүдийн уламжлалт ажил нь танил график интерфэйстэй байхыг шаарддаггүй бөгөөд хэрэглэгчдэд хяналтын элемент болгон зөвхөн консолыг санал болгодог. Туршлагагүй хэрэглэгчийн хувьд энэ форматаар ажиллах нь хэцүү байх болно, өгөгдөлд нэлээд алдартай текст засварлагчаас гарахад ямар зардал гарах вэ? VIM, үүнтэй холбоотой асуулт 6 жилийн дотор аль хэдийн 1.8 сая гаруй хандалт авсан байна. Энэ гэр бүлийн үндсэн түгээлтүүд (хэвлэлүүд) нь: Debian - алдартай түгээлт, түүний багц хувилбарууд нь голчлон LTS дээр төвлөрсөн байдаг (Урт хугацааны дэмжлэг – удаан хугацааны туршид дэмжлэг үзүүлэх), энэ нь систем, багцын нэлээд өндөр найдвартай, тогтвортой байдалд илэрхийлэгддэг; Ubuntu – Тогтвортой байдалд нөлөөлж болох хамгийн сүүлийн хувилбарт бүх багцын тархалтыг агуулсан, гэхдээ шинэ хувилбартай хамт ирдэг функцийг ашиглах боломжийг танд олгоно; Red Hat Enterprise Linux – үйлдлийн систем, арилжааны зориулалтаар байршуулсан, төлбөртэй, Гэсэн хэдий ч, програм хангамжийн борлуулагчид дэмжлэг, зарим өмчийн багц болон драйвер багц; CentOS - нээлттэй эх сурвалж Red Hat Enterprise Linux-ийн хувилбар нь өмчийн багц, дэмжлэг байхгүй гэдгээрээ онцлог юм.

Энэ талбарт дөнгөж суралцаж байгаа хүмүүст миний зөвлөмж бол системүүд байх болно Windows Сервер, эсвэл Ubuntu. Хэрэв бид Windows-ийг авч үзвэл энэ нь юуны түрүүнд системийн танил тал юм. Ubuntu - шинэчлэлтүүдэд илүү тэвчээртэй байх, жишээлбэл, шинэ хувилбаруудыг шаарддаг технологийн төслүүдийг эхлүүлэхэд асуудал багасна.

Тиймээс, үйлдлийн системээ сонгоод сервер дээр програм эсвэл түүний хэсгүүдийг байрлуулах (суулгах), шинэчлэх, төлөв байдлыг хянах боломжийг олгодог багц хэрэгслүүд рүү шилжье.

Дараагийн чухал шийдвэр бол таны програм болон түүнд зориулсан серверийг байрлуулах явдал юм. Одоогийн байдлаар хамгийн түгээмэл нь 3 арга зам юм.

  • Серверийг бие даан байршуулах (хадгалах) нь төсөвт хамгийн ээлтэй сонголт боловч таны нөөц цаг хугацааны явцад хаягаа өөрчлөхгүйн тулд үйлчилгээ үзүүлэгчээсээ статик IP захиалах шаардлагатай болно.
  • Зориулалтын сервер (VDS) түрээслэх ба үүнийг бие даан удирдах, ачааллыг хэмжих
  • Ашигласан эх үүсвэрийн төлбөрийн загвар нь нэлээд түгээмэл байдаг үүлэн хостингын захиалгад төлбөр төл (ихэвчлэн тэд танд платформын функцийг үнэ төлбөргүй туршиж үзэх боломжийг олгодог). Энэ чиглэлийн хамгийн алдартай төлөөлөгчид: Amazon AWS (тэдгээр нь үйлчилгээгээ нэг жил үнэгүй ашиглах боломжийг олгодог, гэхдээ сарын хязгаартай), Google Cloud (тэд 300 долларыг дансанд өгдөг бөгөөд үүнийг жилийн турш клоуд байршуулах үйлчилгээнд зарцуулж болно) , Yandex.Cloud (тэд 4000 сарын турш 2 рубль өгдөг), Microsoft Azure (нэг жилийн турш алдартай үйлчилгээнд үнэгүй нэвтрэх, нэг сарын турш ямар ч үйлчилгээнд + 12 рубль өгөх). Тиймээс та эдгээр үйлчилгээ үзүүлэгчдийн аль нэгийг нь нэг ч төгрөг зарцуулалгүйгээр туршиж үзэх боломжтой, гэхдээ үзүүлж буй үйлчилгээний чанар, түвшний талаар ойролцоогоор санал бодлоо авах боломжтой.

Сонгосон замаас хамааран ирээдүйд өөрчлөгдөх цорын ганц зүйл бол удирдлагын энэ эсвэл тэр чиглэлийг хэн хариуцах явдал юм. Хэрэв та өөрийгөө зохион байгуулдаг бол цахилгаан, интернет, сервер өөрөө, түүн дээр байрлуулсан програм хангамжийн тасалдал - энэ бүхэн таны мөрөн дээр байгаа гэдгийг ойлгох ёстой. Гэсэн хэдий ч сургалт, туршилтын хувьд энэ нь хангалттай юм.

Хэрэв танд серверийн үүрэг гүйцэтгэх нэмэлт машин байхгүй бол та хоёр, гурав дахь аргыг ашиглахыг хүсэх болно. Хоёрдахь тохиолдол нь эхнийхтэй ижил бөгөөд та серверийн бэлэн байдал, түүний хүчийг эзэмшигчийн мөрөн дээр шилжүүлэхийг эс тооцвол. Сервер болон програм хангамжийн удирдлага таны хяналтанд хэвээр байна.

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

Ерөнхийдөө серверийн дэд бүтэц нь иймэрхүү харагдаж байна: бидэнд "оркестратор" гэж нэрлэгддэг (оркестрация гэдэг нь хэд хэдэн серверийн инстанцуудыг удирдах үйл явц), серверийн инстанц, виртуалчлалын контейнер (заавал биш, гэхдээ нэлээдгүй) дээр хүрээлэн буй орчны өөрчлөлтийг удирддаг. ихэвчлэн ашиглагддаг), энэ нь програмыг тусгаарлагдсан логик давхаргад хуваах боломжийг олгодог ба Continous Integration программ хангамж нь "скрипт" -ээр дамжуулан байршуулсан кодыг шинэчлэх боломжийг олгодог.

Тиймээс, зохион байгуулалт нь серверийн статусыг харах, серверийн орчинд шинэчлэлт хийх, буцаах гэх мэт боломжийг олгодог. Эхлээд энэ тал нь танд нөлөөлөх магадлал багатай, учир нь ямар нэгэн зүйлийг зохион байгуулахын тулд танд хэд хэдэн сервер хэрэгтэй (та нэгтэй байж болно, гэхдээ энэ нь яагаад шаардлагатай вэ?), хэд хэдэн сервертэй байхын тулд танд хэрэгтэй болно. Энэ чиглэлийн хэрэгслүүдээс хамгийн алдартай нь Кубернетесийн боловсруулсан Google-ийн.

Дараагийн алхам бол үйлдлийн системийн түвшинд виртуалчлал юм. Өнөө үед "докеризаци" гэсэн ойлголт өргөн тархсан бөгөөд энэ нь хэрэглүүрээс гаралтай Docker, энэ нь бие биенээсээ тусгаарлагдсан, гэхдээ нэг үйлдлийн системийн хүрээнд эхлүүлсэн контейнеруудын ажиллагааг хангадаг. Энэ нь юу гэсэн үг вэ: эдгээр контейнер тус бүр дээр та програмыг ажиллуулж болно, тэр ч байтугай энэ машин дээр өөр хэн нэгэн байгаа эсэхийг сэжиглэхгүйгээр бүх үйлдлийн систем дэх цорын ганц програм гэдэгт итгэх болно. Энэ функц нь өөр өөр хувилбаруудын ижил төстэй програмууд эсвэл зүгээр л зөрчилтэй програмуудыг эхлүүлэх, мөн програмын хэсгүүдийг давхарга болгон хуваахад маш хэрэгтэй. Энэ давхаргыг дараа нь зураг болгон бичиж болох бөгөөд үүнийг жишээ нь програмыг байрлуулахад ашиглаж болно. Өөрөөр хэлбэл, энэ зургийг суулгаж, түүнд агуулагдах контейнеруудыг байрлуулснаар та програмаа ажиллуулахад бэлэн орчинтой болно! Эхний алхмуудад та энэ хэрэгслийг мэдээллийн зорилгоор ашиглаж, хэрэглээний логикийг өөр өөр давхаргад хуваах замаар маш бодит ашиг тусыг авах боломжтой. Гэхдээ хүн болгонд докержуулалт шаардлагагүй, тэр бүр биш гэдгийг энд хэлэх нь зүйтэй болов уу. Програмыг "хуваасан", жижиг хэсгүүдэд хувааж, тус бүр нь "микросервис архитектур" гэж нэрлэгддэг өөрийн даалгаврыг хариуцдаг тохиолдолд докержуулалт зөвтгөгддөг.

Нэмж дурдахад бид орчинг бүрдүүлэхээс гадна бүх төрлийн кодын хувиргалт, програмтай холбоотой номын сан, багцуудыг суулгах, туршилтыг явуулах, эдгээр үйлдлийн талаархи мэдэгдэл зэргийг багтаасан програмыг чадварлаг байршуулах хэрэгтэй. Энд бид "Тасралтгүй интеграци" гэх мэт ойлголтыг анхаарч үзэх хэрэгтэй.CI - Тасралтгүй интеграци). Одоогийн байдлаар энэ чиглэлийн гол хэрэгсэл бол Женкинс (Java хэл дээр бичигдсэн CI програм хангамж нь эхэндээ бага зэрэг төвөгтэй мэт санагдаж магадгүй), Травис CI (Руби хэлээр бичигдсэн, субъектив, арай энгийн ЖенкинсГэсэн хэдий ч, байршуулах тохиргооны талбарт зарим мэдлэг шаардлагатай хэвээр байна), Gitlab CI (дээр бичсэн Ruby болон Go).

Тиймээс, таны програм ажиллах орчны талаар ярилцсаны дараа орчин үеийн ертөнц эдгээр програмуудыг бий болгоход ямар хэрэгслийг санал болгож байгааг харах цаг болжээ.

Үндсэн зүйлээс эхэлцгээе: Арын арын хэсэг (арын хэсэг) - серверийн хэсэг. Хэлний сонголт, үндсэн функцүүдийн багц, урьдчилан тодорхойлсон бүтэц (хүрээ) нь үндсэндээ хувийн сонголтоор тодорхойлогддог боловч анхааралдаа авах нь зүйтэй (хэлний талаархи зохиогчийн санал бодол нь нэлээд субъектив боловч нэхэмжлэлтэй байдаг. нэг талыг баримтлалгүй тайлбарт):

  • Python бол туршлагагүй хэрэглэгчдэд ээлтэй хэл бөгөөд энэ нь зарим алдааг уучилдаг, гэхдээ энэ нь хөгжүүлэгчтэй маш хатуу харьцдаг бөгөөд ингэснээр тэр муу зүйл хийхгүй байх болно. 1991 онд гарч ирсэн нэлээд боловсорсон, утга учиртай хэл.
  • Go - Google-ийн хэл, бас ээлтэй, тохиромжтой, ямар ч платформ дээр хөрвүүлэх, гүйцэтгэх файлыг авахад маш хялбар байдаг. Энэ нь энгийн бөгөөд тааламжтай байж болно, эсвэл төвөгтэй, ноцтой байж болно. Шинэхэн, залуу, харьцангуй саяхан буюу 2009 онд гарч ирсэн.
  • Зэв нь 2006 онд гарсан өмнөх хамтран ажиллагсдаасаа арай том боловч үе тэнгийнхэнтэйгээ харьцуулахад нэлээд залуу хэвээр байна. Энэ нь програмистуудын хувьд бага түвшний олон даалгавруудыг шийдвэрлэхийг хичээдэг ч илүү туршлагатай хөгжүүлэгчдэд зориулагдсан.
  • Java бол 1995 онд танилцуулагдсан арилжааны хөгжлийн туршлагатай бөгөөд өнөө үед аж ахуйн нэгжийн програм хөгжүүлэхэд хамгийн өргөн хэрэглэгддэг хэлнүүдийн нэг юм. Үндсэн ойлголтууд болон хүнд тохируулгатай тул ажиллах хугацаа нь эхлэгчдэд нэлээд төвөгтэй болж магадгүй юм.
  • ASP.net бол Майкрософт компаниас гаргасан програм хөгжүүлэлтийн платформ юм. Функцийг бичихийн тулд 2000 онд гарч ирсэн C# хэлийг (C Sharp гэж нэрлэдэг) голчлон ашигладаг. Түүний нарийн төвөгтэй байдал нь Java болон Rust-ийн түвшинтэй харьцуулж болно.
  • PHP нь анх HTML боловсруулалтад ашиглагдаж байсан хэдий ч одоогоор хэлний зах зээлд үнэмлэхүй тэргүүлж байгаа ч хэрэглээ буурах хандлагатай байна. Энэ нь нэвтрэх босго бага, код бичихэд хялбар боловч нэлээд том програмуудыг хөгжүүлэхэд хэлний функц хангалтгүй байж магадгүй юм.

За, бидний хэрэглээний эцсийн хэсэг - хэрэглэгчийн хувьд хамгийн бодитой - урд хэсэг (frontend) - энэ нь таны програмын нүүр царай бөгөөд энэ хэсэгт хэрэглэгч шууд харилцдаг.

Нарийвчилсан мэдээлэлгүйгээр орчин үеийн урд тал нь хэрэглэгчийн интерфэйсийг бий болгох гурван тулгуур, хүрээ (мөн тийм ч их биш) дээр байрладаг. Үүний дагуу хамгийн алдартай гурван нь:

  • ReactJS бол хүрээ биш, номын сан юм. Үнэн хэрэгтээ энэ хүрээ нь "хайрцагнаас гадуур" зарим функц байхгүй, тэдгээрийг гараар суулгах шаардлагатай байгаагаараа л бахархаж байгаа нэрээсээ ялгаатай юм. Тиймээс энэхүү номын сангийн "бэлтгэл"-ийн хэд хэдэн хувилбарууд байдаг бөгөөд энэ нь өвөрмөц хүрээг бүрдүүлдэг. Зарим үндсэн зарчмууд, барилгын орчныг нэлээд түрэмгий тохиргооноос шалтгаалан энэ нь эхлэгчдэд бага зэрэг хэцүү байж болно. Гэхдээ хурдан эхлүүлэхийн тулд та "create-react-app" багцыг ашиглаж болно.
  • VueJS нь хэрэглэгчийн интерфэйсийг бий болгох хүрээ юм. Энэхүү гурвалын дотроос энэ нь хамгийн хэрэглэгчдэд ээлтэй хүрээ гэсэн цолыг зүй ёсоор авдаг; Vue-г хөгжүүлэхийн тулд нэвтрэхэд саад тотгор нь бусад дурдсан ах нарынхаас доогуур байдаг. Түүгээр ч барахгүй тэр тэдний хамгийн залуу нь юм.
  • Angular нь эдгээр хүрээнүүдийн хамгийн төвөгтэй, цорын ганц шаардлагатай гэж үздэг TypeScript (Javascript хэлний нэмэлт). Томоохон аж ахуйн нэгжийн програмуудыг бүтээхэд ихэвчлэн ашигладаг.

Дээр бичсэн зүйлийг нэгтгэн дүгнэж үзвэл, одоо програмыг байршуулах нь энэ үйл явц нь урьд өмнө хэрхэн явагдсанаас эрс ялгаатай байна гэж дүгнэж болно. Гэсэн хэдий ч хэн ч таныг хуучин хэв маягаар "байршуулах" ажилд саад болохгүй. Гэхдээ эхэнд хэмнэгдсэн багахан хугацаа нь энэ замыг сонгосон хөгжүүлэгчийн алхам хийх ёстой асар их алдаатай үнэ цэнэтэй юу? Хариулт нь үгүй ​​гэдэгт би итгэж байна. Эдгээр хэрэгслүүдтэй танилцахад бага зэрэг илүү цаг зарцуулснаар (мөн танд үүнээс илүү зүйл хэрэггүй, учир нь та эдгээр хэрэглүүр нь таны одоогийн төсөлд хэрэгтэй эсэхийг ойлгох хэрэгтэй) жишээлбэл, та үүнийг ашиглаж болно, жишээлбэл, мэдэгдэхүйц багасгана. , орчноос шалтгаалаад зөвхөн үйлдвэрлэлийн сервер дээр гарч ирдэг сүнсний алдааны тохиолдлууд, сервер гацахад хүргэсэн, яагаад эхлэхгүй байгаа талаар шөнийн дүн шинжилгээ хийх гэх мэт.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх