Web aplikazioak sortzeko eta argitaratzeko kontrol-zerrenda

Gure garaian zure web aplikazioa sortzeko, ez da nahikoa berau garatu ahal izatea. Alderdi garrantzitsu bat aplikazioak hedatzeko, monitorizatzeko, baita funtzionatzen duen ingurunea kudeatzeko eta administratzeko tresnak ezartzea da. Eskuzko hedapenaren aroa ahanzturan desagertzen den heinean, proiektu txikietan ere, automatizazio-tresnek onura nabariak ekar ditzakete. "Eskuz" zabaltzen denean, askotan ahaztu gaitezke zerbait mugitzea, hau edo beste ñabardura kontuan hartu, ahaztutako proba bat exekutatu, zerrenda hau denbora luzez jarraitu daiteke.

Artikulu honek web aplikazioak sortzeko oinarriak ikasten ari direnei eta oinarrizko terminoei eta konbentzioei buruz pixka bat ulertu nahi dutenei lagun diezaieke.

Beraz, aplikazioak eraikitzeko 2 zatitan bana daiteke oraindik: aplikazio-kodearekin zerikusia duen guztia eta kode hori exekutatzen den ingurunearekin zerikusia duen guztia. Aplikazio-kodea, berriz, zerbitzari-kodea (zerbitzarian exekutatzen dena, askotan: negozio-logika, baimena, datuak biltegiratzea, etab.) eta bezero-kodea (erabiltzailearen makinan exekutatzen dena: askotan) banatzen da. interfazea eta harekin erlazionatutako logika).

Has gaitezen asteazkenarekin.

Edozein kode, sistema edo softwareren funtzionamenduaren oinarria Sistema Eragilea da, beraz, jarraian ostalaritza-merkatuko sistema ezagunenak aztertuko ditugu eta deskribapen labur bat emango diegu:

Windows zerbitzaria - Windows bera, baina zerbitzariaren aldaera batean. Windows-en bezero (ohiko) bertsioan eskuragarri dauden funtzionalitate batzuk ez daude hemen, adibidez, estatistikak eta antzeko softwareak biltzeko zerbitzu batzuk, baina sareak administratzeko utilitate multzo bat dago, zerbitzariak zabaltzeko oinarrizko softwarea (web, ftp, ...). Oro har, Windows zerbitzariak Windows arruntaren itxura du, Windows arruntaren itxura du, ordea, bere kontrako arrunta baino 2 aldiz gehiago kostatzen da. Hala ere, ziurrenik aplikazioa zerbitzari dedikatu/birtual batean zabalduko duzula kontuan hartuta, zuretzat azken kostua, nahiz eta handitu egin daitekeen, ez da kritikoa. Windows plataformak kontsumo sistema eragilearen merkatuan leku ikaragarria hartzen duenez, bere zerbitzariaren edizioa erabiltzaile gehienentzat izango da ezagunena.

Unix-Antzeko sistema. Sistema hauetako lan tradizionalak ez du interfaze grafiko ezagun baten presentzia behar, erabiltzaileari kontsola bat baino ez zaio eskaintzen kontrol-elementu gisa. Esperientziarik gabeko erabiltzailearentzat, formatu honetan lan egitea zaila izan daiteke, zein da datuetan nahiko ezaguna den testu-editore batetik irtetearen kostua. Vim, honekin lotutako galdera batek 6 milioi bisita baino gehiago jaso ditu dagoeneko 1.8 urtean. Familia honen banaketa (edizio) nagusiak hauek dira: Debian - banaketa ezaguna, bertan dauden paketeen bertsioak LTSra bideratzen dira batez ere (Epe luzerako laguntza – denbora luzerako euskarria), sistemaren eta paketeen fidagarritasun eta egonkortasun nahiko altuan adierazten dena; Ubuntu – pakete guztien banaketak ditu azken bertsioetan, egonkortasunean eragina izan dezaketenak, baina bertsio berriekin dakarten funtzionalitateak erabiltzeko aukera ematen dizu; Red Hat Enterprise Linux - OS, erabilera komertzialerako kokatuta, ordaintzen da, hala ere, software-saltzaileen laguntza, jabedun pakete batzuk eta kontrolatzaile-paketeak barne hartzen ditu; CentOS - kode irekia Red Hat Enterprise Linux-en aldaera bat, jabedun pakete eta euskarririk ez duelako ezaugarria.

Arlo hau menperatzen hasi berri direnentzat, nire gomendioa sistemak izango lirateke Windows zerbitzariaEdo Ubuntu. Windows kontuan hartzen badugu, sistemaren ezagutza da hau batez ere, Ubuntu – eguneratzeekiko tolerantzia handiagoa, eta, aldi berean, adibidez, bertsio berriak behar dituzten teknologien inguruko proiektuak abiarazteko arazo gutxiago.

Beraz, sistema eragilea erabakita, pasa gaitezen zerbitzarian aplikazioaren edo haren zatien egoera zabaldu (instalatu), eguneratu eta kontrolatzeko aukera ematen duten tresna multzo batera.

Hurrengo erabaki garrantzitsua zure aplikazioa eta zerbitzaria kokatzea izango da. Momentuz, ohikoenak 3 modu dira:

  • Zerbitzari bat zure kabuz ostatatzea (mantentzea) da aurrekonturik errespetatzen duen aukera, baina zure hornitzaileari IP estatiko bat eskatu beharko diozu zure baliabideak denboran zehar helbidea aldatu ez dezan.
  • Alokatu zerbitzari dedikatua (VDS) - eta kudeatu independentean eta eskalatu kargak
  • Ordaindu (askotan plataformaren funtzionaltasuna doan probatzeko aukera ematen dizute) hodeiko ostalaritza baterako harpidetza, non erabilitako baliabideen ordainketa eredua nahiko ohikoa den. Norabide honetako ordezkari nabarmenenak: Amazon AWS (zerbitzuak erabiltzeko urte bat doan ematen dute, baina hileroko mugarekin), Google Cloud (300 dolar ematen dizkiote kontuari, urtean zehar hodeiko ostalaritza zerbitzuetan gastatu daitekeena) , Yandex.Cloud (4000 errublo ematen dituzte . 2 hilabetez), Microsoft Azure (eman doako sarbidea zerbitzu ezagunetara urtebetez, + 12 errublo edozein zerbitzutarako hilabetez). Horrela, hornitzaile horietako edozein probatu dezakezu zentimorik gastatu gabe, baina emandako zerbitzuaren kalitateari eta mailari buruzko gutxi gorabeherako iritzia lortuz.

Aukeratutako bidearen arabera, etorkizunean aldatuko den gauza bakarra nor den administrazio-eremu honen edo besteren erantzule nagusiena da. Zeure burua ostatatzen baduzu, ulertu behar duzu elektrizitatean, Interneten, zerbitzarian bertan, bertan zabaldutako softwarean etenaldiak egiten direla - hori guztia zure sorbaldetan dagoela. Hala ere, entrenatzeko eta probak egiteko, nahikoa da hori.

Zerbitzari baten rola bete dezakeen makina gehigarririk ez baduzu, bigarren edo hirugarren modua erabili nahi izango duzu. Bigarren kasua lehenengoaren berdina da, zerbitzariaren erabilgarritasunaren eta bere boterearen erantzukizuna ostalariaren sorbaldetara aldatzen duzula izan ezik. Zerbitzariaren eta softwarearen administrazioa zure kontrolpean dago oraindik.

Eta azkenik, hodeiko hornitzaileen gaitasuna alokatzeko aukera. Hemen ia edozerren kontrol automatizatua konfigura dezakezu xehetasun tekniko gehiegitan sartu gabe. Horrez gain, makina baten ordez, exekutatzen ari diren hainbat instantzia paralelo izan ditzakezu, eta horiek, adibidez, aplikazioaren atal ezberdinen arduradun izan daitezke, zerbitzari dedikatu baten jabe izatearekin kostu handirik ez duten bitartean. Eta, gainera, orkestraziorako, edukiontzietarako, hedapen automatikorako, etengabeko integraziorako eta askoz gehiagorako tresnak daude! Jarraian gauza horietako batzuk ikusiko ditugu.

Oro har, zerbitzariaren azpiegiturak honela dauka: “orkestratzailea” deritzona dugu (“orkestrazioa” hainbat zerbitzari-instantzia kudeatzeko prozesua da), zerbitzari-instantzia batean ingurumen-aldaketak kudeatzen dituena, birtualizazio edukiontzi bat (aukerakoa, baina nahikoa). sarritan erabiltzen da), eta horrek aplikazioa geruza logiko isolatuetan banatzeko aukera ematen du, eta Etengabeko Integrazio softwarea, "script-en" bidez ostatatutako kodea eguneratzeko aukera ematen duena.

Beraz, orkestrazioak zerbitzarien egoera ikusteko aukera ematen du, eguneraketak zerbitzariaren ingurunera zabaldu edo atzera bota ditzakezu, etab. Hasieran, alderdi honek nekez eragingo dizu, zeren eta ezer orkestratzeko hainbat zerbitzari behar dituzu (bat izan dezakezu, baina zergatik da beharrezkoa?), eta hainbat zerbitzari izateko, behar dituzu. Norabide horretako tresnen artean, ezagunena Kubernetes da, garatutakoa Google.

Hurrengo urratsa birtualizazioa da OS mailan. Gaur egun, “dockerization” kontzeptua hedatu egin da, tresnatik datorrena Docker, elkarrengandik isolatutako edukiontzien funtzionaltasuna eskaintzen duena, baina sistema eragile baten testuinguruan abian jarritakoa. Horrek zer esan nahi du: edukiontzi horietako bakoitzean aplikazio bat exekutatu dezakezu, edo baita aplikazio multzo bat ere, sistema eragile osoan bakarrak direla sinetsiko dutenak, makina honetan beste norbait dagoenik susmatu ere egin gabe. Funtzio hau oso erabilgarria da bertsio ezberdinetako aplikazio berdinak abiarazteko, edo, besterik gabe, gatazkatsuak diren aplikazioak, baita aplikazio baten zatiak geruzatan banatzeko ere. Geruza aniztu hori geroago irudi batean idatz daiteke, eta hori erabil daiteke, adibidez, aplikazio bat zabaltzeko. Hau da, irudi hau instalatuz eta dituen edukiontziak zabalduz, zure aplikazioa exekutatzeko prest dagoen ingurunea lortuko duzu! Lehen urratsetan, tresna hau erabil dezakezu bai informazio-helburuetarako, bai onura oso errealak lortzeko, aplikazioaren logika geruza ezberdinetan banatuz. Baina hemen esan beharra dago denek ez dutela dockerizazioa behar, eta ez beti. Dockerizazioa justifikatzen da aplikazioa “zatikatuta” dagoen kasuetan, zati txikitan banatuta, bakoitza bere zereginaz arduratzen dena, “mikrozerbitzuen arkitektura” delakoa.

Horrez gain, ingurunea eskaintzeaz gain, aplikazioaren hedapen eskudun bat bermatu behar dugu, era guztietako kode-eraldaketak, aplikazioekin lotutako liburutegiak eta paketeak instalatzea, probak egitea, eragiketa hauei buruzko jakinarazpenak eta abar barne hartzen dituena. Hemen "Etengabeko Integrazioa" bezalako kontzeptu bati erreparatu behar diogu (CI – Etengabeko Integrazioa). Une honetan arlo honetako tresna nagusiak Jenkins dira (Java-n idatzitako CI softwarea hasieran konplikatu samarra dirudi), Travis CI (Rubyz idatzia, subjektiboa, zertxobait sinpleagoa Jenkins, hala ere, hedapenaren konfigurazioaren alorrean ezagutza batzuk behar dira oraindik). Gitlab CI (idatzita Ruby eta Go).

Beraz, zure aplikazioak funtzionatuko duen inguruneari buruz hitz egin ondoren, azkenik mundu modernoak aplikazio hauek sortzeko zer tresna eskaintzen dizkigun aztertzeko garaia da.

Has gaitezen oinarrietatik: backend (backend) - zerbitzariaren zatia. Hizkuntzaren aukeraketa, oinarrizko funtzioen multzoa eta aurredefinitutako egitura (esparrua) hemen lehentasun pertsonalek zehazten dute batez ere, baina, hala ere, aipatzea komeni da (egileak hizkuntzei buruz duen iritzia nahiko subjektiboa da, nahiz eta aldarrikapena duen. deskribapen alboragarri bati):

  • Python esperientziarik gabeko erabiltzailearentzat nahiko hizkuntza atsegina da, akats batzuk barkatzen ditu, baina garatzailearekin ere nahiko zorrotza izan daiteke, ezer txarrik egin ez dezan. Dagoeneko hizkuntza nahiko heldua eta esanguratsua, 1991n agertu zena.
  • Go - Google-ren hizkuntza bat ere nahiko atsegina eta erosoa da, nahiko erraza da fitxategi exekutagarri bat konpilatu eta eskuratzea edozein plataformatan. Sinplea eta atsegina izan daiteke, edo konplexua eta serioa. Freskoak eta gazteak, duela gutxi agertu ziren, 2009an.
  • Rust bere aurreko lankidea baino apur bat zaharragoa da, 2006an kaleratua, baina oraindik nahiko gaztea da bere kideekin alderatuta. Esperientziadun garatzaileei zuzendua, nahiz eta oraindik programatzaileentzako maila baxuko zeregin asko konpontzen saiatzen den.
  • Java garapen komertzialaren beteranoa da, 1995ean aurkeztua, eta gaur egun enpresa aplikazioen garapenean gehien erabiltzen den hizkuntza bat da. Oinarrizko kontzeptuekin eta konfigurazio astunarekin, exekuzio-denbora nahiko erronka bihur daiteke hasiberrientzat.
  • ASP.net Microsoft-ek kaleratutako aplikazioak garatzeko plataforma bat da. Funtzionalitatea idazteko, 2000. urtean agertu zen C# hizkuntza (C Sharp ahoskatua) erabiltzen da batez ere. Bere konplexutasuna Java eta Rust-en arteko mailaren parekoa da.
  • PHP, jatorriz HTML aurreprozesatzeko erabiltzen zena, gaur egun, hizkuntzaren merkatuan lidergo absolutua duen arren, erabileraren beherakadarako joera dago. Sarrera atalase baxua eta kodea idazteko erraztasuna ditu, baina, aldi berean, aplikazio handi samarrak garatzean, baliteke hizkuntzaren funtzionaltasuna nahikoa ez izatea.

Beno, gure aplikazioaren azken zatia - erabiltzailearentzat ukigarriena - Frontendaren (frontend) - zure aplikazioaren aurpegia da; zati honekin erabiltzaileak zuzenean elkarreragiten du.

Xehetasunetan sartu gabe, frontend modernoa hiru zutabeetan oinarritzen da, frameworkak (eta ez hainbeste), erabiltzaile-interfazeak sortzeko. Horren arabera, hiru ezagunenak hauek dira:

  • ReactJS ez da esparru bat, liburutegi bat baizik. Egia esan, esparrua bere izenburu harrotik ezberdintzen da funtzio batzuk "kutxatik kanpo" ez direlako eta eskuz instalatzeko beharragatik. Horrela, liburutegi honen “prestaketaren” hainbat aldaera daude, esparru bereziak osatuz. Hasiberrientzako apur bat zaila izan daiteke, oinarrizko printzipio batzuengatik eta eraikuntza-ingurunearen konfigurazio nahiko oldarkorragatik. Hala ere, azkar hasteko, "create-react-app" paketea erabil dezakezu.
  • VueJS erabiltzailearen interfazeak eraikitzeko esparru bat da. Hirutasun honetatik, erabilgarriena den esparruaren izenburua hartzen du zuzenki; Vue-n garatzeko, sartzeko oztopoa aipatutako beste anaiena baino baxuagoa da. Gainera, haien artean gazteena da.
  • Angular jotzen da esparru horietako konplexuena, eskatzen duen bakarra TypeScript (Javascript hizkuntzarako gehigarria). Askotan enpresa handien aplikazioak eraikitzeko erabiltzen da.

Goian idatzitakoa laburbilduz, ondorioztatu dezakegu orain aplikazio bat zabaltzea prozesu hau lehen egiten zenaren guztiz ezberdina dela. Hala ere, inork ez zaitu eragozten "hedapena" antzinako erara egitea. Baina hasieran aurreztutako denbora apurrak balio al du bide hau aukeratzen duen garatzaile batek zapaldu beharko dituen akats ugariak? Erantzuna ezezkoa dela uste dut. Denbora pixka bat gehiago emanez tresna hauekin ezagutzen (eta ez duzu hori baino gehiago behar, zure egungo proiektuan behar dituzun ala ez ulertu behar duzulako), jolastu dezakezu, nabarmen murriztuz, adibidez. , ingurunearen araberako errore mamuen kasuak eta ekoizpen-zerbitzarian soilik agertzen direnak, gauero zerbitzariaren hutsegitea zerk eragin duen eta zergatik ez den abiaraziko aztertzea, eta askoz gehiago.

Iturria: www.habr.com

Gehitu iruzkin berria