Kontrolsaraksts tÄ«mekļa lietojumprogrammu izveidei un publicÄ“Å”anai

Lai mÅ«su laikos izveidotu savu tÄ«mekļa lietojumprogrammu, nepietiek tikai ar iespēju to izstrādāt. SvarÄ«gs aspekts ir rÄ«ku iestatÄ«Å”ana lietojumprogrammu izvietoÅ”anai, uzraudzÄ«bai, kā arÄ« vides, kurā tā darbojas, pārvaldÄ«bai un administrÄ“Å”anai. Tā kā manuālās izvietoÅ”anas laikmets aizmirst pat maziem projektiem, automatizācijas rÄ«ki var sniegt taustāmus ieguvumus. Izvietojot ā€œar rokuā€, bieži vien varam aizmirst kaut ko pārvietot, ņemt vērā Å”o vai citu niansi, palaist aizmirstu testu, Å”o sarakstu var turpināt diezgan ilgi.

Šis raksts var palīdzēt tiem, kuri tikai apgūst tīmekļa lietojumprogrammu izveides pamatus un vēlas mazliet izprast pamatnosacījumus un noteikumus.

Tātad lietojumprogrammas joprojām var iedalīt 2 daļās: viss, kas attiecas uz lietojumprogrammas kodu, un viss, kas attiecas uz vidi, kurā Ŕis kods tiek izpildīts. Lietojumprogrammas kods savukārt tiek sadalīts arī servera kodā (tas, kas darbojas serverī, bieži: biznesa loģika, autorizācija, datu glabāŔana utt.) un klienta kods (tas, kas darbojas lietotāja datorā: bieži saskarne un ar to saistītā loģika).

Sāksim ar treŔdienu.

Jebkura koda, sistēmas vai programmatūras darbības pamatā ir operētājsistēma, tāpēc tālāk mēs apskatīsim populārākās sistēmas hostinga tirgū un sniegsim tām īsu aprakstu:

Windows Server - tas pats Windows, bet servera variantā. Dažas Windows klienta (parastajā) versijā pieejamās funkcionalitātes Å”eit nav pieejamas, piemēram, daži statistikas vākÅ”anas pakalpojumi un lÄ«dzÄ«ga programmatÅ«ra, taču ir tÄ«kla administrÄ“Å”anas utilÄ«tu komplekts, pamata programmatÅ«ra serveru izvietoÅ”anai (tÄ«meklis, ftp, ...). Kopumā Windows Server izskatās kā parasts Windows, ir kā parastais Windows, tomēr tas maksā 2 reizes vairāk nekā parastais lÄ«dzinieks. Tomēr, ņemot vērā to, ka jÅ«s, visticamāk, izvietosit lietojumprogrammu speciālā/virtuālā serverÄ«, galÄ«gās izmaksas jums, lai gan tās var palielināties, nav bÅ«tiskas. Tā kā Windows platforma ieņem milzÄ«gu vietu patērētāju OS tirgÅ«, tās servera izdevums bÅ«s vispazÄ«stamākais lielākajai daļai lietotāju.

Unix- lÄ«dzÄ«ga sistēma. Tradicionālajam darbam Å”ajās sistēmās nav nepiecieÅ”ama pazÄ«stama grafiskā saskarne, piedāvājot lietotājam tikai konsoli kā vadÄ«bas elementu. NepieredzējuÅ”am lietotājam darbs Å”ajā formātā var bÅ«t sarežģīts, tikai cik maksā izieÅ”ana no datu ziņā diezgan populāra teksta redaktora spars, ar to saistÄ«ts jautājums 6 gadu laikā jau ir saņēmis vairāk nekā 1.8 miljonus skatÄ«jumu. Å Ä«s saimes galvenie izplatÄ«jumi (izdevumi) ir: Debian - populārs izplatÄ«jums, pakeÅ”u versijas tajā galvenokārt ir vērstas uz LTS (Ilgtermiņa atbalsts - atbalsts ilgu laiku), kas izpaužas diezgan augstā sistēmas un pakeÅ”u uzticamÄ«bā un stabilitātē; Ubuntu ā€“ satur visu pakotņu izplatÄ«jumus to jaunākajās versijās, kas var ietekmēt stabilitāti, bet ļauj izmantot funkcionalitāti, kas nāk ar jaunajām versijām; Red Hat Enterprise Linux ā€“ OS, kas ir paredzēts komerciālai lietoÅ”anai, ir apmaksāts, taču tajā ir iekļauts programmatÅ«ras pārdevēju atbalsts, dažas patentētas pakotnes un draiveru pakotnes; CentOS - atvērtā koda Red Hat Enterprise Linux variācija, ko raksturo patentētu pakotņu un atbalsta trÅ«kums.

Tiem, kas tikai sāk apgÅ«t Å”o jomu, mans ieteikums bÅ«tu sistēmas Windows ServerVai Ubuntu. Ja ņemam vērā Windows, tad tā galvenokārt ir sistēmas pārzināŔana, Ubuntu ā€“ lielāka tolerance pret atjauninājumiem un, savukārt, piemēram, mazāk problēmu, uzsākot projektus tehnoloÄ£ijās, kurām nepiecieÅ”amas jaunas versijas.

Tātad, izlēmuÅ”i par OS, pāriesim pie rÄ«ku komplekta, kas ļauj izvietot (instalēt), atjaunināt un pārraudzÄ«t lietojumprogrammas vai tās daļu stāvokli serverÄ«.

Nākamais svarÄ«gais lēmums bÅ«s jÅ«su lietojumprogrammas un tās servera izvietoÅ”ana. PaÅ”laik visizplatÄ«tākie ir 3 veidi:

  • Servera izvietoÅ”ana (uzturÄ“Å”ana) paÅ”am ir budžetam draudzÄ«gākā iespēja, taču jums bÅ«s jāpasÅ«ta statisks IP no sava pakalpojumu sniedzēja, lai jÅ«su resurss laika gaitā nemainÄ«tu savu adresi.
  • Nomājiet speciālo serveri (VDS) un neatkarÄ«gi administrējiet to un mērogojiet slodzes
  • Maksājiet (bieži vien tie dod iespēju bez maksas izmēģināt platformas funkcionalitāti) par abonÄ“Å”anu mākoņa mitināŔanai, kur maksājumu modelis par izmantotajiem resursiem ir diezgan izplatÄ«ts. Spilgtākie Ŕī virziena pārstāvji: Amazon AWS (dod bezmaksas pakalpojumu lietoÅ”anas gadu, bet ar mēneÅ”a limitu), Google Cloud (kontam iedod 300$, ko gada laikā var iztērēt mākoņa hostinga pakalpojumos) , Yandex.Cloud (tie dod 4000 rubļu . par 2 mēneÅ”iem), Microsoft Azure (dod bezmaksas piekļuvi populāriem pakalpojumiem uz gadu, + 12 500 rubļu par jebkuriem pakalpojumiem vienu mēnesi). Tādējādi varat izmēģināt jebkuru no Å”iem pakalpojumu sniedzējiem, neiztērējot ne santÄ«ma, bet iegÅ«stot aptuvenu viedokli par sniegtā pakalpojuma kvalitāti un lÄ«meni.

AtkarÄ«bā no izvēlētā ceļa nākotnē mainÄ«sies tikai tas, kurÅ” ir lielā mērā atbildÄ«gs par to vai citu pārvaldes jomu. Ja mitināt sevi, jums jāsaprot, ka jebkādi elektrÄ«bas, interneta, paÅ”a servera, tajā izvietotās programmatÅ«ras pārtraukumi - tas viss pilnÄ«bā gulstas uz jÅ«su pleciem. Tomēr apmācÄ«bai un testÄ“Å”anai tas ir vairāk nekā pietiekami.

Ja jums nav papildu maŔīnas, kas varētu pildÄ«t servera lomu, tad vēlēsities izmantot otro vai treÅ”o veidu. Otrais gadÄ«jums ir identisks pirmajam, ar izņēmumu, ka atbildÄ«bu par servera pieejamÄ«bu un tā jaudu novelat uz hostera pleciem. Servera un programmatÅ«ras administrÄ“Å”ana joprojām ir jÅ«su kontrolē.

Un visbeidzot, iespēja nomāt mākoņpakalpojumu sniedzēju jaudu. Å eit jÅ«s varat iestatÄ«t automātisku vadÄ«bu gandrÄ«z visam, neiedziļinoties tehniskās detaļās. Turklāt vienas maŔīnas vietā var bÅ«t vairākas paralēli darbojoÅ”as instances, kas, piemēram, var bÅ«t atbildÄ«gas par dažādām lietojumprogrammas daļām, taču izmaksas daudz neatŔķiras no speciāla servera. Turklāt ir arÄ« instrumenti orÄ·estrÄ“Å”anai, konteinerizācijai, automātiskai izvietoÅ”anai, nepārtrauktai integrācijai un daudz kam citam! Tālāk mēs apskatÄ«sim dažas no Ŕīm lietām.

Kopumā servera infrastruktÅ«ra izskatās Ŕādi: mums ir tā sauktais "orÄ·estrators" ("orÄ·estrÄ“Å”ana" ir vairāku servera gadÄ«jumu pārvaldÄ«bas process), kas pārvalda vides izmaiņas servera instancē, virtualizācijas konteiners (pēc izvēles, bet diezgan bieži izmanto), kas ļauj sadalÄ«t lietojumprogrammu izolētos loÄ£iskajos slāņos un nepārtrauktās integrācijas programmatÅ«ru, kas ļauj atjaunināt mitināto kodu, izmantojot ā€œskriptusā€.

Tādējādi orÄ·estrÄ“Å”ana ļauj redzēt serveru statusu, izlaist vai atsaukt servera vides atjauninājumus un tā tālāk. Sākumā Å”is aspekts jÅ«s diez vai ietekmēs, jo, lai kaut ko noorganizētu, ir nepiecieÅ”ami vairāki serveri (var bÅ«t, bet kāpēc tas ir nepiecieÅ”ams?), un, lai bÅ«tu vairāki serveri, tie ir nepiecieÅ”ami. Starp Ŕī virziena rÄ«kiem vispopulārākais ir Kubernetes, ko izstrādājis google.

Nākamais solis ir virtualizācija OS lÄ«menÄ«. MÅ«sdienās ir kļuvis plaÅ”i izplatÄ«ts jēdziens ā€œdokerizācijaā€, kas izriet no rÄ«ka dokers, kas nodroÅ”ina viens no otra izolētu, bet vienas operētājsistēmas kontekstā palaistu konteineru funkcionalitāti. Ko tas nozÄ«mē: katrā no Å”iem konteineriem varat palaist lietojumprogrammu vai pat lietojumprogrammu kopu, kas uzskatÄ«s, ka tās ir vienÄ«gās visā OS, pat nenojauÅ”ot, ka Å”ajā maŔīnā ir kāds cits. Å Ä« funkcija ir ļoti noderÄ«ga, lai palaistu identiskas dažādu versiju lietojumprogrammas vai vienkārÅ”i konfliktējoÅ”as lietojumprogrammas, kā arÄ« lietojumprogrammas daļu sadalÄ«Å”anai slāņos. Å o slāņa izlādi vēlāk var ierakstÄ«t attēlā, ko var izmantot, piemēram, lietojumprogrammas izvietoÅ”anai. Tas ir, instalējot Å”o attēlu un izvietojot tajā esoÅ”os konteinerus, jÅ«s iegÅ«stat gatavu vidi savas lietojumprogrammas palaiÅ”anai! Pirmajos soļos Å”o rÄ«ku var izmantot gan informatÄ«viem nolÅ«kiem, gan iegÅ«t ļoti reālus ieguvumus, sadalot lietojumprogrammu loÄ£iku dažādos slāņos. Bet Å”eit ir vērts teikt, ka ne visiem ir nepiecieÅ”ama dokerizācija un ne vienmēr. Dokerizācija ir attaisnojama gadÄ«jumos, kad lietojumprogramma ir ā€œsadrumstalotaā€, sadalÄ«ta mazās daļās, no kurām katra ir atbildÄ«ga par savu uzdevumu, tā saukto ā€œmikropakalpojumu arhitektÅ«ruā€.

Turklāt papildus vides nodroÅ”ināŔanai mums ir jānodroÅ”ina kompetenta lietojumprogrammas izvietoÅ”ana, kas ietver visa veida koda transformācijas, ar lietojumprogrammu saistÄ«to bibliotēku un pakotņu instalÄ“Å”anu, testu izpildi, paziņojumus par Ŕīm darbÄ«bām utt. Å eit mums jāpievērÅ” uzmanÄ«ba tādam jēdzienam kā ā€œNepārtraukta integrācijaā€ (CI ā€” nepārtraukta integrācija). Galvenie rÄ«ki Å”ajā jomā Å”obrÄ«d ir Jenkins (Java valodā rakstÄ«ta CI programmatÅ«ra sākumā var Ŕķist nedaudz sarežģīta), Travis CI (rakstÄ«ts rubÄ«nā, subjektÄ«vs, nedaudz vienkārŔāks Dženkinsstomēr joprojām ir nepiecieÅ”amas zināmas zināŔanas izvietoÅ”anas konfigurācijas jomā), Gitlab CI (rakstÄ«ts uz RubÄ«ns un aiziet).

Tātad, runājot par vidi, kurā darbosies jūsu lietojumprogramma, ir pienācis laiks beidzot apskatīt, kādus rīkus mūsdienu pasaule mums piedāvā tieŔi Ŕo aplikāciju izveidei.

Sāksim ar pamatiem: aizmugure (backend) ā€“ servera daļa. Valodas izvēli, pamatfunkciju kopumu un iepriekÅ” definēto struktÅ«ru (ietvaru) Å”eit nosaka galvenokārt personÄ«gās izvēles, taču tomēr ir vērts pieminēt (autora viedoklis par valodām ir diezgan subjektÄ«vs, lai gan ar pretenziju uz objektÄ«vu aprakstu):

  • Python ir diezgan draudzÄ«ga valoda nepieredzējuÅ”am lietotājam, tā piedod dažas kļūdas, taču tā var bÅ«t arÄ« diezgan strikta pret izstrādātāju, lai viņŔ neko sliktu neizdarÄ«tu. Jau diezgan nobriedusi un jēgpilna valoda, kas parādÄ«jās 1991. gadā.
  • Go - valoda no Google, ir arÄ« diezgan draudzÄ«ga un ērta, to ir diezgan viegli apkopot un iegÅ«t izpildāmo failu uz jebkuras platformas. Tas var bÅ«t vienkārÅ”s un patÄ«kams, vai tas var bÅ«t sarežģīts un nopietns. Svaigi un jauni, parādÄ«jās salÄ«dzinoÅ”i nesen, 2009. gadā.
  • Rust ir nedaudz vecāks par savu iepriekŔējo kolēģi, kas izlaists 2006. gadā, bet joprojām ir diezgan jauns, salÄ«dzinot ar saviem vienaudžiem. Paredzēts pieredzējuŔākiem izstrādātājiem, lai gan tas joprojām mēģina atrisināt daudzus programmētāja zema lÄ«meņa uzdevumus.
  • Java ir komerciālās izstrādes veterāns, kas tika ieviests 1995. gadā, un tā ir viena no mÅ«sdienās visbiežāk lietotajām valodām uzņēmumu lietojumprogrammu izstrādē. Ar tā pamatjēdzieniem un smago iestatÄ«jumu izpildlaiks var kļūt diezgan sarežģīts iesācējam.
  • ASP.net ir Microsoft izlaidusi lietojumprogrammu izstrādes platforma. Funkcionalitātes rakstÄ«Å”anai galvenokārt tiek izmantota C# valoda (izrunā C Sharp), kas parādÄ«jās 2000. gadā. Tā sarežģītÄ«ba ir salÄ«dzināma ar Java un Rust lÄ«meni.
  • PHP, kas sākotnēji tika izmantots HTML pirmapstrādei, paÅ”laik, lai gan tai ir absolÅ«ta lÄ«derpozÄ«cija valodu tirgÅ«, ir tendence samazināties. Tam ir zems ievades slieksnis un koda rakstÄ«Å”anas vienkārŔība, taču tajā paŔā laikā, izstrādājot diezgan lielas lietojumprogrammas, valodas funkcionalitāte var nebÅ«t pietiekama.

Nu, mÅ«su lietojumprogrammas pēdējā daļa - lietotājam vispiemērotākā - frontend (frontend) ā€“ ir jÅ«su lietojumprogrammas seja; ar Å”o daļu lietotājs mijiedarbojas tieÅ”i.

Neiedziļinoties detaļās, mūsdienu frontend lietotāja interfeisu izveidei balstās uz trim pīlāriem, ietvariem (un ne tik daudz). Attiecīgi trīs populārākie ir:

  • ReactJS nav ietvars, bet gan bibliotēka. Faktiski ietvars atŔķiras no tā lepnā nosaukuma tikai ar to, ka nav dažu funkciju ā€œno kastesā€ un nepiecieÅ”amÄ«ba tās instalēt manuāli. Tādējādi ir vairākas Ŕīs bibliotēkas ā€œsagatavoÅ”anasā€ variācijas, veidojot unikālus ietvarus. Iesācējam tas var bÅ«t nedaudz sarežģīts dažu pamatprincipu un diezgan agresÄ«vas bÅ«vniecÄ«bas vides iestatÄ«Å”anas dēļ. Tomēr, lai ātri sāktu, varat izmantot pakotni ā€œcreate-react-appā€.
  • VueJS ir ietvars lietotāja interfeisu veidoÅ”anai. No Ŕīs trÄ«svienÄ«bas tas pamatoti iegÅ«st lietotājam draudzÄ«gākās sistēmas titulu; Vue attÄ«stÄ«bai barjera ienākÅ”anai ir zemāka nekā citiem minētajiem brāļiem. Turklāt viņŔ ir jaunākais starp viņiem.
  • Angular tiek uzskatÄ«ts par vissarežģītāko no Å”iem karkasiem, vienÄ«go, kas nepiecieÅ”ams TypeScript (papildinājums Javascript valodai). Bieži izmanto lielu uzņēmumu lietojumprogrammu izveidei.

Apkopojot iepriekÅ” rakstÄ«to, mēs varam secināt, ka tagad lietojumprogrammas izvietoÅ”ana radikāli atŔķiras no tā, kā Å”is process noritēja iepriekÅ”. Tomēr neviens neliedz jums veikt ā€œizvietoÅ”anuā€ vecmodÄ«gā veidā. Bet vai sākumā ietaupÄ«tais mazais laiks ir tā milzÄ«gā kļūdu skaita vērts, kas nāksies pieļaut izstrādātājam, kurÅ” izvēlēsies Å”o ceļu? Es uzskatu, ka atbilde ir nē. Pavadot nedaudz vairāk laika, iepazÄ«stoties ar Å”iem rÄ«kiem (un vairāk nevajag, jo ir jāsaprot, vai tie ir nepiecieÅ”ami paÅ”reizējā projektā vai nē), varat to izspēlēt, ievērojami samazinot piem. , spoku kļūdu gadÄ«jumi atkarÄ«bā no vides un parādās tikai ražoÅ”anas serverÄ«, ikvakara analÄ«ze par to, kas izraisÄ«ja servera avāriju un kāpēc tas nesākas, un daudz kas cits.

Avots: www.habr.com

Pievieno komentāru