Kontrolni seznam za ustvarjanje in objavljanje spletnih aplikacij

Da bi v našem času ustvarili lastno spletno aplikacijo, ni dovolj, da jo lahko razvijete. Pomemben vidik je postavitev orodij za postavitev aplikacije, spremljanje ter upravljanje in administriranje okolja, v katerem deluje. Ker doba ročnega uvajanja bledi v pozabo, lahko orodja za avtomatizacijo prinesejo oprijemljive koristi tudi za majhne projekte. Pri uvajanju "ročno" lahko pogosto pozabimo nekaj premakniti, upoštevati to ali ono nianso, izvesti pozabljen test, ta seznam lahko nadaljujemo še dolgo.

Ta članek lahko pomaga tistim, ki se šele učijo osnov ustvarjanja spletnih aplikacij in želijo razumeti nekaj osnovnih izrazov in konvencij.

Torej lahko gradnjo aplikacij še vedno razdelimo na 2 dela: vse, kar je povezano s kodo aplikacije, in vse, kar je povezano z okoljem, v katerem se ta koda izvaja. Aplikacijsko kodo pa prav tako delimo na strežniško kodo (tisto, ki teče na strežniku, pogosto: poslovna logika, avtorizacija, shranjevanje podatkov itd.) in kodo odjemalca (tisto, ki se izvaja na uporabnikovem računalniku: pogosto vmesnik in z njim povezana logika).

Začnimo s sredo.

Osnova za delovanje katere koli kode, sistema ali programske opreme je operacijski sistem, zato si bomo v nadaljevanju ogledali najbolj priljubljene sisteme na trgu gostovanja in jih na kratko opisali:

Windows Server - isti Windows, vendar v različici strežnika. Nekatere funkcionalnosti, ki so na voljo v odjemalski (običajni) različici sistema Windows, tukaj niso prisotne, na primer nekatere storitve za zbiranje statistike in podobna programska oprema, je pa nabor pripomočkov za skrbništvo omrežja, osnovna programska oprema za postavitev strežnikov (web, ftp, ...). Na splošno je Windows Server videti kot običajni Windows, je podoben navadnemu Windowsu, vendar stane 2-krat več kot običajni primerek. Glede na to, da boste aplikacijo najverjetneje postavili na namenski/virtualni strežnik, končni strošek za vas, čeprav se lahko poveča, ni kritičen. Ker platforma Windows zavzema izjemno mesto na trgu potrošniških OS, bo večini uporabnikov najbolj znana njena strežniška izdaja.

Unix- podoben sistem. Tradicionalno delo v teh sistemih ne zahteva prisotnosti znanega grafičnega vmesnika, ampak uporabniku ponuja le konzolo kot kontrolni element. Za neizkušenega uporabnika je lahko delo v tem formatu težavno, koliko stane izhod iz urejevalnika besedil, ki je zelo priljubljen pri podatkih Vim, vprašanje v zvezi s tem je v 6 letih prejelo že več kot 1.8 milijona ogledov. Glavne distribucije (izdaje) te družine so: Debian - priljubljena distribucija, različice paketov v njej so osredotočene predvsem na LTS (Dolgoročna podpora – podpora za dolgo časa), kar se izraža v dokaj visoki zanesljivosti in stabilnosti sistema in paketov; Ubuntu – vsebuje distribucije vseh paketov v njihovih najnovejših različicah, kar lahko vpliva na stabilnost, vendar vam omogoča uporabo funkcionalnosti, ki prihaja z novimi različicami; Red Hat Enterprise Linux – OS, postavljen za komercialno uporabo, je plačan, vendar vključuje podporo prodajalcev programske opreme, nekatere lastniške pakete in pakete gonilnikov; CentOS - odprtokodni različica Red Hat Enterprise Linux, za katero je značilna odsotnost lastniških paketov in podpore.

Za tiste, ki šele začenjajo obvladovati to področje, priporočam sisteme Windows ServerAli Ubuntu. Če upoštevamo Windows, potem je to predvsem poznavanje sistema, Ubuntu – večja toleranca do posodobitev in posledično na primer manj težav pri zagonu projektov na tehnologijah, ki zahtevajo nove različice.

Torej, ko smo se odločili za OS, pojdimo na nabor orodij, ki vam omogočajo uvajanje (namestitev), posodabljanje in spremljanje stanja aplikacije ali njenih delov na strežniku.

Naslednja pomembna odločitev bo postavitev vaše aplikacije in strežnika zanjo. Trenutno so najpogostejši 3 načini:

  • Samostojno gostovanje (ohranjanje) strežnika je najbolj proračunska možnost, vendar boste morali pri svojem ponudniku naročiti statični IP, da vaš vir sčasoma ne spremeni naslova.
  • Najemite namenski strežnik (VDS) – in ga neodvisno upravljajte ter prilagajajte obremenitve
  • Plačajte (pogosto vam dajo možnost, da brezplačno preizkusite funkcionalnost platforme) za naročnino na kakšno gostovanje v oblaku, kjer je model plačila za uporabljena sredstva precej pogost. Najvidnejši predstavniki te smeri: Amazon AWS (podarijo brezplačno leto uporabe storitev, vendar z mesečno omejitvijo), Google Cloud (dajo 300 $ na račun, ki jih lahko porabite med letom za storitve gostovanja v oblaku) , Yandex.Cloud (dajo 4000 rubljev . za 2 meseca), Microsoft Azure (omogočajo brezplačen dostop do priljubljenih storitev za eno leto, + 12 rubljev za vse storitve za en mesec). Tako lahko preizkusite katerega koli od teh ponudnikov, ne da bi za to porabili niti centa, pridobili pa bi približno mnenje o kakovosti in ravni ponujenih storitev.

Glede na izbrano pot se bo v prihodnje spremenilo le to, kdo je v veliki meri odgovoren za to ali ono področje uprave. Če gostite sami, potem morate razumeti, da so kakršne koli prekinitve električne energije, interneta, samega strežnika, programske opreme, nameščene na njem - vse to v celoti na vaših ramenih. Za trening in testiranje pa je to več kot dovolj.

Če nimate dodatnega stroja, ki bi lahko igral vlogo strežnika, boste želeli uporabiti drugi ali tretji način. Drugi primer je enak prvemu, le da odgovornost za razpoložljivost strežnika in njegovo moč preložite na pleča gostitelja. Upravljanje strežnika in programske opreme je še vedno pod vašim nadzorom.

Za konec pa še možnost najema kapacitet ponudnikov v oblaku. Tukaj lahko nastavite avtomatiziran nadzor nad skoraj vsem, ne da bi se spuščali v preveč tehničnih podrobnosti. Poleg tega lahko namesto enega stroja imate več vzporedno delujočih primerkov, ki so lahko na primer odgovorni za različne dele aplikacije, medtem ko se stroški ne razlikujejo veliko od lastništva namenskega strežnika. Na voljo so tudi orodja za orkestracijo, kontejnerizacijo, samodejno uvajanje, stalno integracijo in še veliko več! Nekatere od teh stvari si bomo ogledali spodaj.

Na splošno je strežniška infrastruktura videti takole: imamo tako imenovani »orkestrator« (»orkestracija« je proces upravljanja več instanc strežnika), ki upravlja spremembe okolja na instanci strežnika, virtualizacijski vsebnik (izbirno, vendar precej pogosto uporablja), ki vam omogoča, da aplikacijo razdelite na izolirane logične plasti, in programsko opremo za stalno integracijo, ki omogoča posodobitve gostujoče kode prek »skriptov«.

Torej vam orkestracija omogoča ogled statusa strežnikov, uvajanje ali povrnitev posodobitev v strežniško okolje itd. Sprva je malo verjetno, da bo ta vidik vplival na vas, saj za orkestracijo potrebujete več strežnikov (lahko imate enega, ampak zakaj je to potrebno?), in da bi imeli več strežnikov, jih potrebujete. Med orodji v tej smeri je najbolj priljubljen Kubernetes, ki ga je razvil google.

Naslednji korak je virtualizacija na ravni OS. Dandanes se je razširil koncept »dockerizacije«, ki izhaja iz orodja Lučki delavec, ki zagotavlja funkcionalnost vsebnikov, ločenih drug od drugega, vendar zagnanih v kontekstu enega operacijskega sistema. Kaj to pomeni: v vsakem od teh vsebnikov lahko poženete aplikacijo ali celo niz aplikacij, ki bodo verjele, da so edine v celotnem OS, ne da bi sploh posumili, da na tem stroju obstaja še kdo. Ta funkcija je zelo uporabna za zagon enakih aplikacij različnih različic ali preprosto nasprotujočih si aplikacij, pa tudi za razdelitev delov aplikacije na plasti. To zasnovo plasti je mogoče pozneje zapisati v sliko, ki jo je mogoče uporabiti na primer za uvedbo aplikacije. To pomeni, da z namestitvijo te slike in razmestitvijo vsebnikov, ki jih vsebuje, dobite že pripravljeno okolje za izvajanje vaše aplikacije! V prvih korakih lahko to orodje uporabite tako v informativne namene kot za zelo resnične koristi z razdelitvijo logike aplikacije na različne plasti. Vendar je vredno povedati, da vsi ne potrebujejo dockerizacije in ne vedno. Dockerizacija je upravičena v primerih, ko je aplikacija »razdrobljena«, razdeljena na majhne dele, od katerih je vsak odgovoren za svojo nalogo, tako imenovana »mikrostoritvena arhitektura«.

Poleg tega moramo poleg zagotavljanja okolja zagotoviti kompetentno uvedbo aplikacije, ki vključuje vse vrste transformacij kode, namestitev aplikacijskih knjižnic in paketov, izvajanje testov, obveščanje o teh operacijah ipd. Tukaj moramo biti pozorni na koncept, kot je "neprekinjena integracija" (CI – Stalna integracija). Glavna orodja na tem področju trenutno so Jenkins (programska oprema CI, napisana v Javi, se na začetku morda zdi nekoliko zapletena), Travis CI (napisano v Rubyju, subjektivno, nekoliko bolj preprosto Jenkins, vendar je še vedno potrebno nekaj znanja na področju konfiguracije uvajanja), Gitlab CI (napisano na Ruby in pojdi).

Torej, ko smo govorili o okolju, v katerem bo vaša aplikacija delovala, je čas, da končno pogledamo, katera orodja nam sodobni svet ponuja za ustvarjanje teh aplikacij.

Začnimo z osnovami: Backend (backend) – strežniški del. Izbira jezika, nabora osnovnih funkcij in vnaprej določene strukture (ogrodja) je tukaj določena predvsem z osebnimi preferencami, vendar je kljub temu vredno omeniti v razmislek (avtorjevo mnenje o jezikih je precej subjektivno, čeprav s trditvijo na nepristranski opis):

  • Python je dokaj prijazen jezik za neizkušenega uporabnika, odpusti nekaj napak, zna pa biti tudi precej strog do razvijalca, da ne naredi česa slabega. Že dokaj zrel in smiseln jezik, ki se je pojavil leta 1991.
  • Go - jezik iz Googla, je prav tako precej prijazen in priročen, precej enostavno ga je prevesti in dobiti izvedljivo datoteko na kateri koli platformi. Lahko je preprosto in prijetno ali pa zapleteno in resno. Svež in mlad se je pojavil razmeroma nedavno, leta 2009.
  • Rust je nekoliko starejši od prejšnjega kolega, ki je izšel leta 2006, vendar je v primerjavi s svojimi vrstniki še precej mlad. Namenjen bolj izkušenim razvijalcem, čeprav še vedno poskuša rešiti številne nizkonivojske naloge za programerja.
  • Java je veteran komercialnega razvoja, predstavljen leta 1995, in je danes eden najpogosteje uporabljenih jezikov pri razvoju poslovnih aplikacij. S svojimi osnovnimi koncepti in težko nastavitvijo lahko postane čas izvajanja za začetnika precejšen izziv.
  • ASP.net je platforma za razvoj aplikacij, ki jo je izdal Microsoft. Za pisanje funkcionalnosti se uporablja predvsem jezik C# (izgovorjava C Sharp), ki se je pojavil leta 2000. Njegova kompleksnost je primerljiva z nivojem med Javo in Rustom.
  • PHP, ki se je prvotno uporabljal za predprocesiranje HTML, trenutno, čeprav ima absolutno vodstvo na jezikovnem trgu, obstaja trend upadanja uporabe. Ima nizek vstopni prag in enostavnost pisanja kode, hkrati pa pri razvoju dokaj velikih aplikacij funkcionalnost jezika morda ne bo zadostovala.

No, zadnji del naše aplikacije - najbolj oprijemljiv za uporabnika - začelje (frontend) – je obraz vaše aplikacije, s tem delom uporabnik neposredno komunicira.

Ne da bi se spuščali v podrobnosti, sodobni frontend stoji na treh stebrih, ogrodjih (in ne toliko), za ustvarjanje uporabniških vmesnikov. V skladu s tem so trije najbolj priljubljeni:

  • ReactJS ni ogrodje, ampak knjižnica. Pravzaprav se ogrodje od svojega ponosnega naslova razlikuje le po odsotnosti nekaterih funkcij "izven škatle" in potrebi po njihovi ročni namestitvi. Tako obstaja več različic "priprave" te knjižnice, ki tvorijo edinstvene okvire. Za začetnika je lahko nekoliko težavno zaradi nekaterih osnovnih načel in precej agresivne nastavitve gradbenega okolja. Za hiter začetek pa lahko uporabite paket »create-react-app«.
  • VueJS je ogrodje za gradnjo uporabniških vmesnikov. Od te trojice upravičeno nosi naziv uporabniku najbolj prijaznega ogrodja, za razvoj v Vue je vstopna ovira nižja kot pri ostalih omenjenih bratih. Poleg tega je najmlajši med njimi.
  • Angular velja za najbolj zapleteno od teh ogrodij, edino, ki zahteva TypeScript (dodatek za jezik Javascript). Pogosto se uporablja za izdelavo velikih poslovnih aplikacij.

Če povzamemo zgoraj napisano, lahko sklepamo, da je zdaj uvajanje aplikacije radikalno drugačno od tega, kako je ta postopek potekal prej. Vendar vam nihče ne preprečuje, da bi "razmestitev" naredili na staromoden način. Pa je malo prihranjenega časa na začetku vredno ogromnega števila napak, na katere bo moral stopiti razvijalec, ki se bo odločil za to pot? Mislim, da je odgovor ne. Če porabite nekaj več časa, da se seznanite s temi orodji (in ne potrebujete več kot to, ker morate razumeti, ali jih potrebujete v svojem trenutnem projektu ali ne), jih lahko igrate in znatno zmanjšate, npr. , primeri napak duhov, ki so odvisni od okolja in se pojavijo samo na produkcijskem strežniku, nočna analiza, kaj je privedlo do zrušitve strežnika in zakaj se ne zažene, in še veliko več.

Vir: www.habr.com

Dodaj komentar