TĂ€napĂ€eval ei piisa veebirakenduse loomiseks selle arendamise oskusest. Oluline on ka seadistada tööriistad rakenduse juurutamiseks, jĂ€lgimiseks ning keskkonna haldamiseks ja administreerimiseks, kus see töötab. KĂ€manualkatermine jÀÀb minevikku, isegi vĂ€ikeste projektide puhul vĂ”ivad automatiseerimistööriistad tuua mĂ€rkimisvÀÀrset kasu. Manuaalse juurutamise puhul unustame sageli midagi ĂŒle kanda, arvesse vĂ”tta teatud nĂŒanssi vĂ”i kĂ€ivitada ununenud test, ja see nimekiri vĂ”ib olla ĂŒsna pikk.
See artikkel vÔib olla abiks neile, kes alles Ôpivad veebirakenduste loomise aluseid ja soovivad pisut paremini mÔista pÔhitermineid ja konventsioone.
Seega jaguneb rakenduste loomine kaheks osaks: kÔik, mis on seotud rakenduse koodiga, ja kÔik, mis on seotud keskkonnaga, kus see kood töötab. Rakenduse kood jaguneb omakorda serveripoolseks (see, mis töötab serveris, sageli: Àriloogika, autoriseerimine, andmete salvestamine jne) ja kliendipoolseks (see, mis töötab kasutaja masinas: sageli liides ja sellega seotud loogika).
Alustame vÔib-olla keskkonnast.
Iga koodi, sĂŒsteemi vĂ”i tarkvara töö aluseks on operatsioonisĂŒsteem, seetĂ”ttu vaatame allpool kĂ”ige populaarsemaid sĂŒsteeme, mis on turul olemas, ja anname neile lĂŒhikese iseloomustuse:
Windows Server â see sama Windows, aga serveriversioonis. MĂ”ned funktsioonid, mis on saadaval kliendi (tavalises) versioonis, ei ole siin kohal, nĂ€iteks mĂ”ned statistikakogumise teenused ja sarnased rakendused, kuid selle asemel on olemas komplekt vĂ”rgu haldamise utiliite, pĂ”hitĂ€itmine tarkvara jaoks. serverite (web, ftp, âŠ). Ăldiselt tundub Windows Server nagu tavaline Windows, see kĂ€ivitub nagu tavaline Windows, kuid maksab kaks korda rohkem kui tema tavaline vend. Arvestades, et rakenduse kĂ€itamine toimub tĂ”enĂ€oliselt pĂŒhendatud/virtuaalsel serveril, vĂ”ib lĂ”plik hind teie jaoks tĂ”usta, kuid mitte kriitiliselt. Kuna Windowsi platvorm hĂ”ivab suure osa kasutajate operatsioonisĂŒsteemide turust, on selle serveriversioon enamiku kasutajate jaoks kĂ”ige harjumuslikum.
Unix-sarnane sĂŒsteem. Traditsiooniline töö nendes sĂŒsteemides ei eelda tuttava graafilise kasutajaliidese olemasolu, pakkudes kasutajale juhtelemendiks vaid konsooli. Kogenematule kasutajale vĂ”ib selline formaat olla raske, mida tĂ”estab ka kĂŒsimus, mis on seotud ĂŒhe populaarse tekstiredaktoriga Vim, mis on 6 aastaga kogunud ĂŒle 1.8 miljoni vaatamise. Selle perekonna peamised distributsioonid (vĂ€ljaanded) on jĂ€rgmised: Debian â populaarne distributsioon, mille paketiversioonid on suunatud peamiselt LTS (Long Term Support â pika toetust), mis vĂ€ljendub sĂŒsteemi ja paketide piisavas usaldusvÀÀrsuses ja stabiilsuses; Ubuntu â sisaldab kĂ”iki pakettide jaotusi nende uusimates versioonides, mis vĂ”ib mĂ”jutada stabiilsust, kuid vĂ”imaldab kasutada uusimate versioonidega kaasnevaid funktsioone; Red Hat Enterprise Linux â operatsioonisĂŒsteem, mis on suunatud Ă€riliseks kasutamiseks, on tasuline, kuid sisaldab toetust tarkvaratootjatelt, mĂ”ningaid proprietaalseid pakette ja draiverite pakette; CentOS â avatud lĂ€htekoodiga variant Red Hat Enterprise Linux, millel puuduvad proprietaarsed paketid ja tugi.
Algajatele soovitan sĂŒsteeme Windows Server, vĂ”i Ubuntu. Kui proovida Windowsit, siis eelkĂ”ige selle sĂŒsteemi tuttavlikkus, Ubuntu â suurem taluvus vĂ€rskenduste suhtes, mille tulemuseks on vĂ€hem probleeme projektide kĂ€ivitamisel uuemaid versioone vajavatel tehnoloogiatel.
Nii et pĂ€rast operatsioonisĂŒsteemi valimist liigume edasi tööriistade komplekti suunas, mis vĂ”imaldavad rakenduse vĂ”i selle osade paigaldamist, vĂ€rskendamist ja oleku jĂ€lgimist serveris.
JÀrgmine oluline otsus on teie rakenduse ja selle serveri paigutamine. Praegu on kolm kÔige levinumat teed:
- Hostida serverit endal â see on kĂ”ige soodsam valik, kuid tuleb tellida teenuselt staatiline IP, et teie ressursi aadress ei muutuks ajas.
- Rendi Dedikeeritud Server (VDS) ja hallake seda ise, sealhulgas koormuse suurendamine.
- Maksta (tihti pakuvad tasuta prooviperioodi platvormi funktsioonide testimiseks) tellimuse eest mĂ”nes pilvehostingus, kus on laialt levinud tasu maksmine kasutatud ressursside eest. Seda suunda esindavad kĂ”ige paremini: Amazon AWS (pakuvad tasuta aastase kasutuse, kuid piiranguga kuus), Google Cloud (pakuvad 300 dollarit kontole, mida saab aasta jooksul pilveteenuste eest kasutada). hostingu), Yandex.Cloud (annavad 4000 rubla 2 kuu jooksul), Microsoft Azure (annavad tasuta juurdepÀÀsu populaarsetele teenustele aastaks, + 12 500 rubla kĂ”igile teenustele ĂŒhe kuu jooksul). Niisiis, saate proovida ĂŒkskĂ”ik millist neist teenusepakkujatest, kulutamata sentigi, kuid saamata umbkaudset arusaamist kvaliteedist ja teenuse tasemest.
Valitud teest sÔltuvalt muutub edaspidi ainult see, kellel on enamasti vastutus konkreetse haldamisala eest. Kui hostite ise, peate mÔistma, et kÔik elektri-, Interneti-, serveri- ja sellele installitud tarkvara katkestused langevad tÀielikult teie Ôlule. Siiski on see Ôppimiseks ja katsetamiseks rohkem kui piisav.
Kui aga teil ei ole vaba masinat, mis vÔiks serverina toimida, siis soovite kasutada teist vÔi kolmandat teed. Teine juhtum on identne esimesele, vÀlja arvatud see, et te kandate serveri kÀttesaadavuse ja selle jÔudluse vastutuse hosti Ôlule. Serveri ja tarkvara haldamine jÀÀb siiski teie kontrolli alla.
Ja lĂ”puks, variatsioon pilveteenuste pakkujate ressursside rentimiseks. Siin saate seadistada automatiseeritud juhtimise peaaegu igasuguste toimingute jaoks, ilma et peaksite sĂŒgavale tehnilistesse detailidesse minema. Lisaks, ĂŒhe masina asemel vĂ”ite omada mitut paralleelselt töötavat instantsi, mis vĂ”ivad nĂ€iteks vastutada rakenduse erinevate osade eest, samas ei erine hinnakujundus oluliselt pĂŒhendatud serveri omamisest. Ja veel, siin on saadaval orkestreerimise, konteineriseerimise, automaatse juurutamise, pideva integreerimise ja palju muu tööriistad! MĂ”ned neist asjadest vaatleme allpool.
Ăldiselt nĂ€eb serveri infrastruktuur vĂ€lja jĂ€rgmine: meil on nii nimetatud âorkestratorâ (âorkestreerimineâ â protsess, millega haldatakse mitme serveri instantsi), mis haldab keskkonna muudatusi serveri instantsis, virtualiseerimise konteiner (valikuline, kuid sageli kasutatav), mis vĂ”imaldab rakendust jagada isoleeritud loogiliste kihtideks, ja pideva integreerimise tarkvara â mis vĂ”imaldab juurutada paigaldatud koodi âskeemideâ kaudu.
Nii et orkestreerimine vĂ”imaldab Teil nĂ€ha serverite staatuseid, teostada keskkonna uuendusi, nagu ârakendamineâ vĂ”i âtagasivĂ”tmineâ, ja nii edasi. Alguses ei puutu see teema Teisse tĂ”enĂ€oliselt, kuna orkestreerimiseks on vajalik mitu serverit (vĂ”ib olla ka ĂŒks, aga milleks see on vajalik?), ja et oleks mitu serverit, peab olema vajadus nende jĂ€rele. Sellest valdkonnast tuntud tööriist on peamiselt Kubernetes, mille on vĂ€lja töötanud. Google.
JĂ€rgmine samm on virtuaalsus operatsioonisĂŒsteemi tasandil. Praegu on laialdaselt levinud mĂ”isted âdookerlusâ, mis tuleneb tööriistast. Docker, mis pakub isoleeritud konteinerite funktsionaalsust, mis töötavad ĂŒhe operatsioonisĂŒsteemi kontekstis. Mis see tĂ€hendab: igas sellises konteineris saab kĂ€ivitada rakenduse vĂ”i isegi rakenduste komplekti, mis arvavad, et nad on ainsad kogu operatsioonisĂŒsteemis, teadmata, et teised samal masinal eksisteerivad. See funktsioon on vĂ€ga kasulik nii erinevate versioonide sama rakenduse kĂ€ivitamiseks kui ka lihtsalt konflikti pĂ”hjustavate rakenduste eraldamiseks ning rakenduse osade kihtideks jagamiseks. See kihistumise jĂ€ljend, mida hiljem saab salvestada kujutisse, mida saab kasutada, nĂ€iteks rakenduse juurutamiseks. Seega, kui installite selle kujutise ja kĂ€ivitate selle sisaldavad konteinerid, saate valmis keskkonna oma rakenduse kĂ€ivitamiseks! Alguses vĂ”ite seda tööriista kasutada nii tutvumiseks kui ka reaalse kasu saamiseks, jagades rakenduse loogikat erinevateks kihtideks. Kuid siin on oluline mĂ€rkida, et konteineriseerimine ei ole kĂ”igile vajalik ja mitte alati. Konteineriseerimine on Ă”igustatud olukordades, kus rakendus on 'fragmenteeritud', jagunenud vĂ€ikesteks osadeks, millest igaĂŒhe ĂŒlesanne on oma, nn 'mikroteenuste arhitektuur'.
Lisaks keskkonna tagamisele on meil vajalik ka rakenduse nĂ”uetekohane juurutamine, mis hĂ”lmab kĂ”iki koodi transformatsioonide teostamist, rakendusega seotud raamatukogude ja paketide installimist, testide lĂ€biviimist, teavitamist nende toimingute kohta ja nii edasi. Siinkohal tuleb meil tĂ€helepanu pöörata sellisele mĂ”istele nagu âPidev Integreerimineâ (CI â Pidev Integreerimine). Praegu on peamised tööriistad selles valdkonnas Jenkins (CI tarkvara, mis on kirjutatud Java keeles, vĂ”ib alguses tunduda veidi keeruline), Travis CI (kirjutatud Ruby keeles, subjektiivselt, veidi lihtsam Jenkinsâist, kuid siiski on vajalik mĂ”ningane teadmine juurutamise seadistamisest), Gitlab CI (kirjutatud Ruby ja Go).
Nii et pĂ€rast arutelu keskkonna ĂŒle, kus teie rakendus töötab, on aeg lĂ”puks vaadata, milliseid tööriistu pakub meile tĂ€napĂ€eva maailm nende rakenduste loomiseks.
Alustame pĂ”hitĂ”dedest: Backend (backend) â serveripool. Keel, pĂ”hifunktsioonide komplekt ja eelnevalt mÀÀratud struktuur (raamistik) sĂ”ltuvad siin peamiselt isiklikest eelistustest, kuid tasub siiski mainida kaalumist (autore arvamus keelte kohta on piisavalt subjektiivne, kuigi vĂ€idetavalt on see objektiivne kirjeldus):
- Python â piisavalt viisakas ja sĂ”bralik keel algaja kasutajale, andes andeks mĂ”ned vead, kuid samas vĂ”ib olla arendajaga ka piisavalt ranget, et ta ei teeks halbu asju. Juba piisavalt kĂŒps ja mĂ”testatud programmeerimiskeel, mis ilmus 1991. aastal.
- Go â Google'i keelek, samuti piisavalt sĂ”bralik ja mugav, seda on lihtne kompileerida ja saada tĂ€idetav fail igas platvormis. VĂ”ib olla lihtne ja meeldiv, aga ka keeruline ja tĂ”sine. Nooruslik ja vĂ€rske, ilmus suhteliselt hiljuti, 2009. aastal.
- Rust â veidi vanem oma eelmisest kolleegist, ilmus 2006. aastal, on siiski oma kaaslastest veel piisavalt noor. Suunatud rohkem kogenud arendajatele, kuigi pĂŒĂŒab endiselt lahendada paljusid madala taseme ĂŒlesandeid arendaja eest.
- Java â 1995. aastal turule tulnud Ă€rirakenduste arendamiseks ĂŒks tuntumaid programmeerimiskeeli, mille keerukad pĂ”himĂ”tted ja arenduskeskkonna seadistus vĂ”ivad olla algajatele korralikuks vĂ€ljakutseks.
- ASP.net â rakenduste arenduse platvorm, mille on vĂ€lja töötanud Microsoft. Funktsionaalsuse kirjutamiseks kasutatakse peamiselt C# keelt (hÀÀldatakse C-si Sharp), mis ilmus 2000. aastal. Oma keerukuselt jÀÀb see Java ja Rusti vahele.
- PHP â algselt HTML-i eelprotsessimiseks mĂ”eldud keel, mis hoiab endiselt tugevat turupositsiooni, kuid kasutuses on nĂ€ha langustrendi. Iseloomustab madal pÀÀsukoht, lihtne koodikirjutamine, kuid sihikindlate rakenduste arendamisel vĂ”ib keele funktsionaalsus olla ebapiisav.
Ja meie rakenduse viimane osa â kĂ”ige kĂ€egakatsutavam kasutajale â Frontend (front-end) â on teie rakenduse nĂ€gu, just sellega kasutaja vahetult suhtleb.
TÀnapÀeva front-end areng pÔhineb kolmel sambal, raamistikul (ja mitte ainult), mis vÔimaldavad luua kasutajaliideseid. Seega on kolm kÔige populaarsemat jÀrgmised:
- ReactJS â ei ole raamistik, vaid teek. Tegelikult eristab seda uhkest raamistikust ainult mĂ”ningate funktsioonide puudumine "karbis", mis tuleb paigaldada kĂ€sitsi. Seega on olemas mitmeid variatsioone selle teegi "valmistamiseks", mis vormivad omamoodi raamistikke. Algajale vĂ”ib see olla keeruline, arvestades mĂ”ningaid pĂ”hialuseid ja piisavalt keerukat kogu keskkonna seadistust. Siiski, kiireks alustamiseks vĂ”ib kasutada "create-react-app" paketti.
- VueJS â raamistik kasutajaliideste loomiseks. Antud kolmest raamist on see Ă”igusega kĂ”ige kasutajasĂ”bralikum, kuna Vue'ga programmeerimise sisenemislĂ€vi on madalam kui teistel mainitud raamistikudel. Lisaks on see nende seas ka noorim.
- Angular â peetakse olevat kĂ”ige keerulisem tĂ”lgitud raamistikke, ainus, mis nĂ”uab olemasolu TypeScript (JavaScript'i pealse). Sageli kasutatakse suurte ettevĂ”tte rakenduste loomisel.
KokkuvĂ”ttes vĂ”ib öelda, et rakenduse kĂ€itamine erineb radikaalselt sellest, kuidas see protsess varem kulges. Kuid keegi ei keela teha âdeplooĆŸiâ vanamoodsete meetoditega. Kuid kas natuke sÀÀstetud aega alguses tasub tohutut hulka takistusi, millele arendaja valinud see tee, peale astub? Arvan, et vastus on âeiâ. Veidi rohkem aega nende tööriistadega tutvumiseks (ja rohkem ei olegi vaja, sest peate lihtsalt aru saama, kas need on teie praeguses projektis vajalikud vĂ”i mitte) aitab oluliselt vĂ€hendada nĂ€iteks keskkonnast sĂ”ltuvate kummitusvigade esinemist, mis ilmnevad ainult tootmisserveris, öiste arutelude pĂ”hjuste osas, mis viis serveri kokkuvarisemiseni, ja palju muud.
Allikas: habr.com
