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