Lista kontrolluese për krijimin dhe publikimin e aplikacioneve në ueb

Për të krijuar aplikacionin tuaj në internet në kohën tonë, nuk mjafton të jeni në gjendje ta zhvilloni atë. Një aspekt i rëndësishëm është vendosja e mjeteve për vendosjen e aplikacionit, monitorimin, si dhe menaxhimin dhe administrimin e mjedisit në të cilin funksionon. Ndërsa epoka e vendosjes manuale zbehet në harresë, edhe për projekte të vogla, mjetet e automatizimit mund të sjellin përfitime të prekshme. Kur vendosim "me dorë", shpesh mund të harrojmë të lëvizim diçka, të marrim parasysh këtë apo atë nuancë, të kryejmë një test të harruar, kjo listë mund të vazhdojë për një kohë mjaft të gjatë.

Ky artikull mund t'i ndihmojë ata që sapo po mësojnë bazat e krijimit të aplikacioneve në internet dhe duan të kuptojnë pak për termat dhe konventat bazë.

Pra, ndërtimi i aplikacioneve ende mund të ndahet në 2 pjesë: gjithçka që lidhet me kodin e aplikacionit dhe gjithçka që lidhet me mjedisin në të cilin ekzekutohet ky kod. Kodi i aplikacionit, nga ana tjetër, ndahet gjithashtu në kodin e serverit (ai që funksionon në server, shpesh: logjika e biznesit, autorizimi, ruajtja e të dhënave, etj.), dhe kodi i klientit (ai që funksionon në makinën e përdoruesit: shpesh ndërfaqen dhe logjikën e lidhur me të).

Le të fillojmë me të mërkurën.

Baza për funksionimin e çdo kodi, sistemi ose softueri është Sistemi Operativ, kështu që më poshtë do të shohim sistemet më të njohura në tregun e pritjes dhe do t'u japim një përshkrim të shkurtër:

Windows Server - i njëjti Windows, por në një variant serveri. Disa funksione të disponueshme në versionin e klientit (të rregullt) të Windows nuk janë të pranishme këtu, për shembull, disa shërbime për mbledhjen e statistikave dhe softuer të ngjashëm, por ka një grup shërbimesh për administrimin e rrjetit, softuer bazë për vendosjen e serverëve (web, ftp, ...). Në përgjithësi, Windows Server duket si Windows i rregullt, quacks si Windows i zakonshëm, megjithatë, kushton 2 herë më shumë se homologu i tij i rregullt. Megjithatë, duke pasur parasysh se ka shumë të ngjarë që aplikacionin ta vendosni në një server të dedikuar/virtual, kostoja përfundimtare për ju, megjithëse mund të rritet, nuk është kritike. Meqenëse platforma Windows zë një vend të jashtëzakonshëm në tregun e konsumatorit të OS, botimi i serverit të saj do të jetë më i njohuri për shumicën e përdoruesve.

Unix- sistem i ngjashëm. Puna tradicionale në këto sisteme nuk kërkon praninë e një ndërfaqe grafike të njohur, duke i ofruar përdoruesit vetëm një tastierë si element kontrolli. Për një përdorues të papërvojë, puna në këtë format mund të jetë e vështirë, sa është kostoja e daljes nga një redaktues teksti që është mjaft i popullarizuar në të dhëna vrull, një pyetje në lidhje me këtë ka marrë tashmë më shumë se 6 milion shikime në 1.8 vjet. Shpërndarjet (edicionet) kryesore të kësaj familjeje janë: Debian - një shpërndarje popullore, versionet e paketave në të janë të përqendruara kryesisht në LTS (Mbështetje Afatgjatë – mbështetje për një kohë të gjatë), e cila shprehet në besueshmëri dhe stabilitet mjaft të lartë të sistemit dhe paketave; Ubuntu – përmban shpërndarje të të gjitha paketave në versionet e tyre më të fundit, të cilat mund të ndikojnë në stabilitetin, por ju lejon të përdorni funksionalitetin që vjen me versionet e reja; Red Hat Enterprise Linux – OS, i pozicionuar për përdorim komercial, paguhet, megjithatë, përfshin mbështetje nga shitësit e programeve kompjuterike, disa paketa të pronarit dhe paketa drejtuese; CentOS - me burim të hapur një variant i Red Hat Enterprise Linux, i karakterizuar nga mungesa e paketave të pronarit dhe mbështetjes.

Për ata që sapo kanë filluar të zotërojnë këtë fushë, rekomandimi im do të ishin sistemet Windows ServerOse Ubuntu. Nëse marrim parasysh Windows, atëherë kjo është kryesisht njohja e sistemit, Ubuntu – më shumë tolerancë ndaj përditësimeve, dhe nga ana tjetër, për shembull, më pak probleme gjatë nisjes së projekteve mbi teknologjitë që kërkojnë versione të reja.

Pra, pasi të kemi vendosur për OS, le të kalojmë në një grup mjetesh që ju lejojnë të vendosni (instaloni), përditësoni dhe monitoroni gjendjen e aplikacionit ose pjesëve të tij në server.

Vendimi tjetër i rëndësishëm do të jetë vendosja e aplikacionit tuaj dhe serveri për të. Për momentin, më të zakonshmet janë 3 mënyra:

  • Pritja (mbajtja) e një serveri më vete është opsioni më buxhetor, por do t'ju duhet të porosisni një IP statike nga ofruesi juaj në mënyrë që burimi juaj të mos ndryshojë adresën e tij me kalimin e kohës.
  • Merr me qira një server të dedikuar (VDS) – dhe administroje atë në mënyrë të pavarur dhe shkallëzoni ngarkesat
  • Paguani (shpesh ata ju japin një shans për të provuar funksionalitetin e platformës falas) për një abonim në disa hostime në cloud, ku modeli i pagesës për burimet e përdorura është mjaft i zakonshëm. Përfaqësuesit më të shquar të këtij drejtimi: Amazon AWS (ata japin një vit falas të përdorimit të shërbimeve, por me një kufi mujor), Google Cloud (ata japin 300 dollarë në llogari, të cilat mund të shpenzohen gjatë vitit në shërbimet e pritjes në cloud) , Yandex.Cloud (ata japin 4000 rubla . për 2 muaj), Microsoft Azure (japin akses falas në shërbimet e njohura për një vit, + 12 rubla për çdo shërbim për një muaj). Kështu, ju mund të provoni cilindo nga këta ofrues pa shpenzuar asnjë qindarkë, por duke marrë një mendim të përafërt për cilësinë dhe nivelin e shërbimit të ofruar.

Në varësi të rrugës së zgjedhur, e vetmja gjë që do të ndryshojë në të ardhmen është se kush është kryesisht përgjegjës për këtë apo atë fushë të administrimit. Nëse pret veten, atëherë duhet të kuptoni se çdo ndërprerje në energjinë elektrike, internetin, vetë serverin, softuerin e vendosur në të - e gjithë kjo qëndron tërësisht mbi supet tuaja. Megjithatë, për trajnim dhe testim, kjo është më se e mjaftueshme.

Nëse nuk keni një makinë shtesë që mund të luajë rolin e një serveri, atëherë do të dëshironi të përdorni mënyrën e dytë ose të tretë. Rasti i dytë është identik me të parin, me përjashtim që përgjegjësinë për disponueshmërinë e serverit dhe fuqinë e tij e kaloni mbi supet e hostit. Administrimi i serverit dhe softuerit është ende nën kontrollin tuaj.

Dhe së fundi, opsioni i marrjes me qira të kapacitetit të ofruesve të cloud. Këtu mund të konfiguroni kontrollin e automatizuar të pothuajse çdo gjëje pa hyrë në shumë detaje teknike. Për më tepër, në vend të një makinerie, mund të keni disa instanca paralele të funksionimit, të cilat, për shembull, mund të jenë përgjegjëse për pjesë të ndryshme të aplikacionit, ndërsa nuk ndryshojnë shumë në kosto nga zotërimi i një serveri të dedikuar. Dhe gjithashtu, ka mjete për orkestrimin, kontejnerizimin, vendosjen automatike, integrimin e vazhdueshëm dhe shumë më tepër! Ne do të shohim disa nga këto gjëra më poshtë.

Në përgjithësi, infrastruktura e serverit duket kështu: ne kemi një të ashtuquajtur "orkestrues" ("orkestrimi" është procesi i menaxhimit të disa shembujve të serverit), i cili menaxhon ndryshimet mjedisore në një shembull serveri, një kontejner virtualizimi (opsionale, por mjaft përdoret shpesh), i cili ju lejon të ndani aplikacionin në shtresa të izoluara logjike dhe në softuer të Integrimit të Vazhdueshëm—duke lejuar përditësimet e kodit të hostuar përmes "skripteve".

Pra, orkestrimi ju lejon të shihni statusin e serverëve, të hapni ose riktheni përditësimet në mjedisin e serverit, etj. Në fillim, ky aspekt nuk ka gjasa të ndikojë tek ju, pasi për të orkestruar ndonjë gjë, ju duhen disa serverë (mund të keni një, por pse është e nevojshme kjo?), dhe për të pasur disa serverë, ju duhen ata. Ndër mjetet në këtë drejtim, më i popullarizuari është Kubernetes, i zhvilluar nga Google.

Hapi tjetër është virtualizimi në nivelin e OS. Në ditët e sotme, koncepti i "dockerization" është bërë i përhapur, i cili vjen nga mjeti prerës, i cili siguron funksionalitetin e kontejnerëve të izoluar nga njëri-tjetri, por të lançuar në kontekstin e një sistemi operativ. Çfarë do të thotë kjo: në secilin prej këtyre kontejnerëve mund të ekzekutoni një aplikacion, apo edhe një grup aplikacionesh, të cilat do të besojnë se janë të vetmet në të gjithë OS, pa dyshuar as për ekzistencën e dikujt tjetër në këtë makinë. Ky funksion është shumë i dobishëm për lëshimin e aplikacioneve identike të versioneve të ndryshme, ose thjesht aplikacione konfliktuale, si dhe për ndarjen e pjesëve të një aplikacioni në shtresa. Kjo shtresë e hedhur më vonë mund të shkruhet në një imazh, i cili mund të përdoret, për shembull, për të vendosur një aplikacion. Kjo do të thotë, duke instaluar këtë imazh dhe duke vendosur kontejnerët që ai përmban, ju merrni një mjedis të gatshëm për ekzekutimin e aplikacionit tuaj! Në hapat e parë, ju mund ta përdorni këtë mjet si për qëllime informative, ashtu edhe për të marrë përfitime shumë reale duke e ndarë logjikën e aplikacionit në shtresa të ndryshme. Por ia vlen të thuhet këtu se jo të gjithë kanë nevojë për dokerizim, dhe jo gjithmonë. Dockerizimi justifikohet në rastet kur aplikacioni është i "fragmentuar", i ndarë në pjesë të vogla, secila përgjegjëse për detyrën e vet, të ashtuquajturën "arkitekturë mikroservice".

Përveç kësaj, përveç sigurimit të mjedisit, ne duhet të sigurojmë një vendosje kompetente të aplikacionit, i cili përfshin të gjitha llojet e transformimeve të kodit, instalimin e bibliotekave dhe paketave të lidhura me aplikacionin, ekzekutimin e testeve, njoftimet për këto operacione, etj. Këtu duhet t'i kushtojmë vëmendje një koncepti të tillë si "Integrimi i vazhdueshëm" (CI – Integrim i vazhdueshëm). Mjetet kryesore në këtë fushë për momentin janë Jenkins (softueri CI i shkruar në Java mund të duket pak i komplikuar në fillim), Travis C.I. (shkruar në Ruby, subjektive, disi më e thjeshtë Jenkins, megjithatë, disa njohuri në fushën e konfigurimit të vendosjes janë ende të nevojshme), Gitlab CI (shkruar në Ruby dhe Shko).

Pra, pasi kemi folur për mjedisin në të cilin do të funksionojë aplikacioni juaj, është koha që më në fund të shohim se çfarë mjetesh na ofron bota moderne për krijimin e këtyre aplikacioneve.

Le të fillojmë me bazat: backend (backend) – pjesa e serverit. Zgjedhja e gjuhës, grupi i funksioneve themelore dhe struktura (korniza) e paracaktuar këtu përcaktohet kryesisht nga preferencat personale, por megjithatë, vlen të përmendet për t'u konsideruar (mendimi i autorit për gjuhët është mjaft subjektiv, megjithëse me një pretendim për një përshkrim të paanshëm):

  • Python është një gjuhë mjaft miqësore për një përdorues të papërvojë, ajo fal disa gabime, por gjithashtu mund të jetë mjaft e rreptë me zhvilluesin në mënyrë që ai të mos bëjë asgjë të keqe. Tashmë një gjuhë mjaft e pjekur dhe kuptimplote, e cila u shfaq në 1991.
  • Go - një gjuhë nga Google, është gjithashtu mjaft miqësore dhe e përshtatshme, është mjaft e lehtë të përpilosh dhe të marrësh një skedar të ekzekutueshëm në çdo platformë. Mund të jetë e thjeshtë dhe e këndshme, ose mund të jetë komplekse dhe serioze. E freskët dhe e re, u shfaq relativisht kohët e fundit, në 2009.
  • Rust është pak më i vjetër se kolegu i tij i mëparshëm, i lëshuar në vitin 2006, por është ende mjaft i ri në krahasim me moshatarët e tij. Ajo synon zhvilluesit më me përvojë, megjithëse ende përpiqet të zgjidhë shumë detyra të nivelit të ulët për programuesin.
  • Java është një veteran i zhvillimit komercial, i prezantuar në 1995 dhe është një nga gjuhët më të përdorura në zhvillimin e aplikacioneve të ndërmarrjeve sot. Me konceptet e tij bazë dhe konfigurimin e rëndë, koha e ekzekutimit mund të bëhet mjaft sfiduese për një fillestar.
  • ASP.net është një platformë e zhvillimit të aplikacioneve e lëshuar nga Microsoft. Për të shkruar funksionalitetin, përdoret kryesisht gjuha C# (shqiptohet C Sharp), e cila u shfaq në vitin 2000. Kompleksiteti i tij është i krahasueshëm me nivelin midis Java dhe Rust.
  • PHP, e përdorur fillimisht për përpunimin paraprak të HTML, aktualisht, megjithëse mban lidershipin absolut në tregun e gjuhës, ka një tendencë drejt një rënie në përdorim. Ka një prag të ulët të hyrjes dhe lehtësinë e shkrimit të kodit, por në të njëjtën kohë, kur zhvilloni aplikacione mjaft të mëdha, funksionaliteti i gjuhës mund të mos jetë i mjaftueshëm.

Epo, pjesa e fundit e aplikacionit tonë - më e prekshme për përdoruesin - frontend (frontend) – është fytyra e aplikacionit tuaj; është me këtë pjesë që përdoruesi ndërvepron drejtpërdrejt.

Pa hyrë në detaje, frontendi modern qëndron në tre shtylla, korniza (dhe jo aq shumë), për krijimin e ndërfaqeve të përdoruesit. Prandaj, tre më të njohurit janë:

  • ReactJS nuk është një kornizë, por një bibliotekë. Në fakt, korniza ndryshon nga titulli i tij krenar vetëm në mungesë të disa funksioneve "jashtë kutisë" dhe nevojës për t'i instaluar ato manualisht. Kështu, ka disa variacione të "përgatitjes" së kësaj biblioteke, duke formuar korniza unike. Mund të jetë pak e vështirë për një fillestar, për shkak të disa parimeve bazë dhe konfigurimit mjaft agresiv të mjedisit të ndërtimit. Sidoqoftë, për një fillim të shpejtë, mund të përdorni paketën “create-react-app”.
  • VueJS është një kornizë për ndërtimin e ndërfaqeve të përdoruesit. Nga kjo trinitet, me të drejtë merr titullin e kornizës më miqësore për përdoruesit; për zhvillimin në Vue, pengesa për hyrje është më e ulët se ajo e vëllezërve të tjerë të përmendur. Për më tepër, ai është më i riu mes tyre.
  • Angular konsiderohet më kompleksi i këtyre kornizave, i vetmi që kërkon TypeScript (shtesë për gjuhën Javascript). Shpesh përdoret për të ndërtuar aplikacione të ndërmarrjeve të mëdha.

Duke përmbledhur atë që u shkrua më lart, mund të konkludojmë se tani vendosja e një aplikacioni është rrënjësisht e ndryshme nga mënyra se si ka vazhduar ky proces më parë. Megjithatë, askush nuk po ju ndalon të bëni "vendosjen" në mënyrën e vjetër. Por a ia vlen koha e pakët e kursyer në fillim për numrin e madh të gabimeve që do të duhet të shkelë një zhvillues që zgjedh këtë rrugë? Unë besoj se përgjigja është jo. Duke shpenzuar pak më shumë kohë duke u njohur me këto mjete (dhe nuk ju nevojitet më shumë se kaq, sepse duhet të kuptoni nëse ju duhen ato në projektin tuaj aktual apo jo), mund ta luani atë, duke reduktuar ndjeshëm, për shembull , raste të gabimeve fantazmë në varësi të mjedisit dhe që shfaqen vetëm në serverin e prodhimit, analiza çdo natë të asaj që çoi në rrëzimin e serverit dhe pse nuk do të fillojë, dhe shumë më tepër.

Burimi: www.habr.com

Shto një koment