Žiniatinklio programų kūrimo ir publikavimo kontrolinis sąrašas

Norint sukurti savo žiniatinklio programą mūsų laikais, neužtenka mokėti ją sukurti. Svarbus aspektas yra programų diegimo, stebėjimo, taip pat aplinkos, kurioje ji veikia, valdymo ir administravimo įrankių nustatymas. Kadangi rankinio diegimo era išnyksta į užmarštį, net ir mažiems projektams automatizavimo įrankiai gali duoti apčiuopiamos naudos. Diegdami „ranka“ dažnai galime pamiršti ką nors perkelti, atsižvelgti į vieną ar kitą niuansą, atlikti pamirštą testą, šį sąrašą galima tęsti gana ilgai.

Šis straipsnis gali padėti tiems, kurie tik mokosi žiniatinklio programų kūrimo pagrindų ir nori šiek tiek suprasti pagrindinius terminus ir susitarimus.

Taigi, programų kūrimą vis tiek galima suskirstyti į 2 dalis: viską, kas susiję su programos kodu, ir viską, kas susiję su aplinka, kurioje šis kodas vykdomas. Programos kodas, savo ruožtu, taip pat skirstomas į serverio kodą (tą, kuris veikia serveryje, dažnai: verslo logika, autorizacija, duomenų saugojimas ir kt.) ir kliento kodą (tą, kuris veikia vartotojo kompiuteryje: dažnai sąsaja ir su ja susijusi logika).

Pradėkime nuo trečiadienio.

Bet kurio kodo, sistemos ar programinės įrangos veikimo pagrindas yra operacinė sistema, todėl toliau apžvelgsime populiariausias prieglobos rinkos sistemas ir trumpai jas apibūdinsime:

"Windows Server - ta pati „Windows“, bet serverio variante. Kai kurių kliento (įprastoje) Windows versijoje pasiekiamų funkcijų čia nėra, pavyzdžiui, kai kurios statistikos rinkimo paslaugos ir panaši programinė įranga, tačiau yra tinklo administravimo paslaugų rinkinys, pagrindinė programinė įranga serveriams diegti (žiniatinklis, ftp, ...). Apskritai „Windows Server“ atrodo kaip įprasta „Windows“, šlykšti kaip įprasta „Windows“, tačiau kainuoja 2 kartus daugiau nei įprastas analogas. Tačiau, atsižvelgiant į tai, kad greičiausiai įdiegsite programą tam skirtame / virtualiame serveryje, galutinė jūsų kaina, nors ir gali padidėti, nėra svarbi. Kadangi „Windows“ platforma užima didžiulę vietą vartotojų OS rinkoje, jos serverio leidimas bus labiausiai pažįstamas daugumai vartotojų.

unix- panaši sistema. Tradicinis darbas šiose sistemose nereikalauja pažįstamos grafinės sąsajos, siūlančios vartotojui tik konsolę kaip valdymo elementą. Nepatyrusiam vartotojui dirbti šiuo formatu gali būti sunku, tik kiek kainuoja išeiti iš gana populiarių duomenų teksto rengyklės. Vim, su tuo susijęs klausimas per 6 metus jau sulaukė daugiau nei 1.8 milijono peržiūrų. Pagrindiniai šios šeimos platinimai (leidimai) yra šie: Debian - populiarus platinimas, paketų versijos jame daugiausia orientuotos į LTS (Ilgalaikė parama - palaikymas ilgą laiką), kuris išreiškiamas gana dideliu sistemos ir paketų patikimumu ir stabilumu; ubuntu – yra visų paketų paskirstymai naujausiose versijose, kurie gali turėti įtakos stabilumui, tačiau leidžia naudoti su naujomis versijomis teikiamas funkcijas; Red Hat Enterprise Linux – OS, skirtas komerciniam naudojimui, yra mokamas, tačiau apima programinės įrangos pardavėjų palaikymą, kai kuriuos patentuotus paketus ir tvarkyklių paketus; CentOS – atvirojo kodo Red Hat Enterprise Linux variantas, kuriam būdingas patentuotų paketų ir palaikymo nebuvimas.

Tiems, kurie tik pradeda įvaldyti šią sritį, mano rekomendacija būtų sistemos "Windows ServerArba ubuntu. Jei atsižvelgsime į „Windows“, tai pirmiausia yra sistemos pažinimas, ubuntu – daugiau tolerancijos naujinimams ir, pavyzdžiui, mažiau problemų paleidžiant projektus technologijomis, kurioms reikia naujų versijų.

Taigi, apsisprendę dėl OS, pereikime prie įrankių rinkinio, leidžiančio įdiegti (įdiegti), atnaujinti ir stebėti programos ar jos dalių būseną serveryje.

Kitas svarbus sprendimas bus jūsų programos ir jos serverio vieta. Šiuo metu dažniausiai naudojami 3 būdai:

  • Serverio talpinimas (laikymas) yra pats ekonomiškiausias pasirinkimas, tačiau turėsite užsisakyti statinį IP iš savo teikėjo, kad jūsų resursas laikui bėgant nekeistų savo adreso.
  • Išsinuomokite skirtąjį serverį (VDS) ir savarankiškai valdykite jo administravimą bei apkrovos mastelį
  • Mokėkite (dažnai jie suteikia galimybę nemokamai išbandyti platformos funkcijas) už tam tikro debesies prieglobos prenumeratą, kur mokėjimo už naudojamus išteklius modelis yra gana įprastas. Ryškiausi šios krypties atstovai: Amazon AWS (duoda nemokamus naudojimosi paslaugomis metus, bet su mėnesio limitu), Google Cloud (sąskaitai duoda 300 USD, kuriuos per metus galima išleisti debesies prieglobos paslaugoms) , Yandex.Cloud (jie duoda 4000 rublių . už 2 mėnesius), Microsoft Azure (suteikia nemokamą prieigą prie populiarių paslaugų metams, + 12 500 rublių už bet kokias paslaugas vienam mėnesiui). Taigi, galite išbandyti bet kurį iš šių paslaugų teikėjų neišleisdami nė cento, bet gaudami apytikslę nuomonę apie teikiamų paslaugų kokybę ir lygį.

Priklausomai nuo pasirinkto kelio, ateityje pasikeis tik tai, kas yra atsakingas už tą ar kitą administravimo sritį. Jei šeimininkaujate patys, turite suprasti, kad bet kokie elektros, interneto, paties serverio, jame įdiegtos programinės įrangos trikdžiai - visa tai gula tik ant jūsų pečių. Tačiau mokymui ir testavimui to daugiau nei pakanka.

Jei neturite papildomo įrenginio, kuris galėtų atlikti serverio vaidmenį, tuomet norėsite naudoti antrą ar trečią būdą. Antrasis atvejis yra identiškas pirmajam, išskyrus tai, kad atsakomybę už serverio prieinamumą ir jo galią perkeliate ant prieglobos serverio pečių. Serverio ir programinės įrangos administravimas vis dar priklauso jums.

Ir galiausiai, galimybė išsinuomoti debesų tiekėjų pajėgumus. Čia galite nustatyti automatinį beveik visko valdymą, nesigilindami į technines detales. Be to, vietoj vieno įrenginio galite turėti keletą lygiagrečiai veikiančių egzempliorių, kurie, pavyzdžiui, gali būti atsakingi už skirtingas programos dalis, o išlaidos labai nesiskiria nuo dedikuoto serverio. Taip pat yra įrankių, skirtų orkestravimui, konteinerizavimui, automatiniam diegimui, nuolatiniam integravimui ir dar daugiau! Toliau apžvelgsime kai kuriuos iš šių dalykų.

Apskritai serverio infrastruktūra atrodo taip: turime vadinamąjį „orchestrator“ („orchestration“ – tai kelių serverio egzempliorių valdymo procesas), kuris valdo aplinkos pokyčius serverio egzemplioriuje, virtualizacijos konteinerį (neprivaloma, bet gana dažnai naudojama), kuri leidžia padalyti programą į izoliuotus loginius sluoksnius ir nuolatinio integravimo programinę įrangą, leidžiančią atnaujinti priglobtą kodą naudojant „skriptus“.

Taigi, orkestravimas leidžia matyti serverių būseną, įdiegti arba grąžinti serverio aplinkos naujinimus ir pan. Iš pradžių šis aspektas vargu ar paveiks jus, nes norint ką nors suorganizuoti, reikia kelių serverių (galite turėti vieną, bet kam to reikia?), o norint turėti kelis serverius – jų reikia. Tarp šios krypties įrankių populiariausias yra „Kubernetes“, kurį sukūrė "Google".

Kitas žingsnis yra virtualizavimas OS lygiu. Šiais laikais plačiai paplito „dokerizacijos“ sąvoka, kilusi iš įrankio dokininkas, kuri suteikia vienas nuo kito atskirtų, bet vienos operacinės sistemos kontekste paleidžiamų konteinerių funkcionalumą. Ką tai reiškia: kiekviename iš šių konteinerių galite paleisti programą ar net programų rinkinį, kuris patikės, kad jie yra vieninteliai visoje OS, net neįtardami, kad šiame kompiuteryje yra kažkas kitas. Ši funkcija labai naudinga paleidžiant identiškas skirtingų versijų programas arba tiesiog prieštaringas programas, taip pat dalijant programos dalis į sluoksnius. Šis sluoksnis vėliau gali būti įrašytas į vaizdą, kuris gali būti naudojamas, pavyzdžiui, diegti programą. Tai yra, įdiegę šį vaizdą ir įdiegę jame esančius konteinerius, gausite paruoštą aplinką programai paleisti! Pirmaisiais žingsniais galite naudoti šį įrankį tiek informaciniais tikslais, tiek gauti labai realios naudos, suskirstę taikymo logiką į skirtingus sluoksnius. Tačiau čia verta pasakyti, kad ne visiems reikia dokerizacijos ir ne visada. Dokerizavimas pateisinamas tais atvejais, kai programa yra „suskaldyta“, padalinta į mažas dalis, kurių kiekviena yra atsakinga už savo užduotį, vadinamąją „mikro paslaugų architektūrą“.

Be to, be aplinkos suteikimo, turime užtikrinti kompetentingą programos diegimą, kuris apima visų rūšių kodų transformacijas, su programa susijusių bibliotekų ir paketų diegimą, testų vykdymą, pranešimus apie šias operacijas ir pan. Čia reikia atkreipti dėmesį į tokią sąvoką kaip „Nuolatinė integracija“ (CI – nuolatinis integravimas). Pagrindiniai įrankiai šioje srityje šiuo metu yra „Jenkins“ (Java parašyta CI programinė įranga iš pradžių gali atrodyti šiek tiek sudėtinga), Travisas CI (parašyta rubinų kalba, subjektyvu, kiek paprastesnė Jenkinsastačiau vis dar reikia tam tikrų žinių diegimo konfigūravimo srityje), Gitlab CI (parašyta Ruby and Go).

Taigi, pakalbėjus apie aplinką, kurioje veiks jūsų aplikacija, laikas pagaliau pažvelgti, kokius įrankius mums siūlo šiuolaikinis pasaulis kuriant būtent šias programas.

Pradėkime nuo pagrindų: Vidinis (backend) – serverio dalis. Kalbos, pagrindinių funkcijų rinkinio ir iš anksto nustatytos struktūros (karkaso) pasirinkimą čia daugiausia lemia asmeniniai pomėgiai, tačiau vis dėlto verta paminėti (autorio nuomonė apie kalbas yra gana subjektyvi, nors ir su pretenzija). į nešališką aprašymą):

  • Python yra gana draugiška kalba nepatyrusiam vartotojui, atleidžia kai kurias klaidas, bet gali būti ir gana griežta kūrėjui, kad jis nieko blogo nepadarytų. Jau gana brandi ir prasminga kalba, atsiradusi 1991 m.
  • Go - kalba iš Google, taip pat yra gana draugiška ir patogi, ją gana lengva sukompiliuoti ir gauti vykdomąjį failą bet kurioje platformoje. Tai gali būti paprasta ir malonu arba sudėtinga ir rimta. Švieži ir jauni, pasirodė palyginti neseniai, 2009 m.
  • Rust yra šiek tiek vyresnis nei ankstesnis kolega, išleistas 2006 m., Tačiau, palyginti su savo bendraamžiais, yra dar gana jaunas. Skirta labiau patyrusiems kūrėjams, nors vis dar bando išspręsti daugybę žemo lygio užduočių programuotojui.
  • „Java“ yra komercinės plėtros veteranė, pristatyta 1995 m., ir šiandien yra viena dažniausiai naudojamų kalbų kuriant įmonės programas. Dėl pagrindinių koncepcijų ir sudėtingos sąrankos vykdymo laikas gali tapti gana sudėtingas pradedantiesiems.
  • ASP.net yra „Microsoft“ išleista programų kūrimo platforma. Funkcionalumui rašyti daugiausia naudojama C# kalba (tariama C Sharp), kuri pasirodė 2000 m. Jo sudėtingumas yra panašus į „Java“ ir „Rust“ lygį.
  • PHP, iš pradžių naudotas HTML išankstiniam apdorojimui, šiuo metu, nors ir užima absoliučią lyderio poziciją kalbų rinkoje, pastebima naudojimo mažėjimo tendencija. Jis turi žemą įėjimo slenkstį ir kodo rašymo paprastumą, tačiau tuo pačiu, kuriant gana dideles programas, kalbos funkcionalumo gali nepakakti.

Na, paskutinė mūsų programos dalis - labiausiai apčiuopiama vartotojui - Frontend (frontend) – yra jūsų programos veidas; būtent su šia dalimi vartotojas sąveikauja tiesiogiai.

Nesileidžiant į detales, šiuolaikinė priekinė dalis stovi ant trijų ramsčių, karkasų (ir ne tiek daug), kad būtų sukurta vartotojo sąsaja. Atitinkamai, trys populiariausi yra:

  • ReactJS nėra sistema, o biblioteka. Tiesą sakant, karkasas skiriasi nuo savo išdidaus pavadinimo tik tuo, kad nėra kai kurių funkcijų „iš dėžutės“ ir poreikio jas įdiegti rankiniu būdu. Taigi yra keletas šios bibliotekos „paruošimo“ variantų, sudarančių unikalius rėmus. Pradedantiesiems tai gali būti šiek tiek sudėtinga dėl kai kurių pagrindinių principų ir gana agresyvios kūrimo aplinkos sąrankos. Tačiau norėdami greitai pradėti, galite naudoti paketą „sukurti-reaguoti-programą“.
  • VueJS yra vartotojo sąsajų kūrimo sistema. Iš šios trejybės ji teisėtai užima patogiausios vartotojui sistemos titulą; kuriant Vue, įėjimo kliūtis yra mažesnė nei kitų minėtų brolių. Be to, jis yra jauniausias tarp jų.
  • Kampinis yra laikomas sudėtingiausiu iš šių karkasų, vieninteliu, kurio reikia „TypeScript“ (Javascript kalbos priedas). Dažnai naudojamas didelėms įmonėms kurti.

Apibendrinant tai, kas buvo parašyta aukščiau, galime daryti išvadą, kad dabar programos diegimas iš esmės skiriasi nuo to, kaip šis procesas vyko anksčiau. Tačiau niekas netrukdo jums „diegti“ senamadiškai. Tačiau ar pradžioje sutaupytas mažas laikas vertas daugybės klaidų, kurias turės žengti šį kelią pasirinkęs kūrėjas? Tikiu, kad atsakymas yra ne. Skirdami šiek tiek daugiau laiko susipažinimui su šiomis priemonėmis (ir jums nereikia daugiau, nes jūs turite suprasti, ar jums jų reikia dabartiniame projekte, ar ne), galite tai padaryti, žymiai sumažindami pvz. , klaidų atvejai, priklausantys nuo aplinkos ir atsirandantys tik gamybos serveryje, naktinė analizė, kas lėmė serverio gedimą ir kodėl jis nepasileidžia, ir daug daugiau.

Šaltinis: www.habr.com

Добавить комментарий