Kontrolni popis za izradu i objavljivanje web aplikacija

Da biste izradili vlastitu web aplikaciju u današnje vrijeme, nije dovoljno biti u stanju razviti je. Važan aspekt je postavljanje alata za implementaciju aplikacije, nadzor, kao i upravljanje i administriranje okruženja u kojem djeluje. Kako era ručne implementacije odlazi u zaborav, čak i za male projekte, alati za automatizaciju mogu donijeti opipljive prednosti. Prilikom postavljanja "ručno", često možemo zaboraviti nešto pomaknuti, uzeti u obzir ovu ili onu nijansu, pokrenuti zaboravljeni test, ovaj popis se može nastaviti dugo vremena.

Ovaj članak može pomoći onima koji tek uče osnove stvaranja web aplikacija i žele razumjeti nešto o osnovnim pojmovima i konvencijama.

Dakle, izrada aplikacija još uvijek se može podijeliti u 2 dijela: sve što se odnosi na kod aplikacije i sve što se odnosi na okolinu u kojoj se taj kod izvršava. Aplikacijski kod se također dijeli na poslužiteljski kod (onaj koji se izvodi na poslužitelju, često: poslovna logika, autorizacija, pohrana podataka itd.) i klijentski kod (onaj koji se izvodi na korisnikovom stroju: često sučelje i povezana logika s njim).

Počnimo od srijede.

Osnova za rad bilo kojeg koda, sustava ili softvera je operativni sustav, stoga ćemo u nastavku pogledati najpopularnije sustave na tržištu hostinga i dati im kratak opis:

Windows Server - isti Windows, ali u varijanti poslužitelja. Neke funkcionalnosti dostupne u klijentskoj (običnoj) verziji sustava Windows ovdje nisu prisutne, na primjer, neke usluge za prikupljanje statistike i sličan softver, ali postoji skup uslužnih programa za mrežnu administraciju, osnovni softver za postavljanje poslužitelja (web, ftp, ...). Općenito, Windows Server izgleda kao obični Windows, nadriliječnički kao obični Windows, međutim, košta 2 puta više od svog uobičajenog pandana. Međutim, s obzirom na to da ćete najvjerojatnije implementirati aplikaciju na namjenski/virtualni poslužitelj, konačni trošak za vas, iako se može povećati, nije kritičan. Budući da Windows platforma zauzima ogromno mjesto na potrošačkom OS tržištu, njeno poslužiteljsko izdanje bit će najpoznatije većini korisnika.

Unix- sličan sustav. Tradicionalni rad u ovim sustavima ne zahtijeva prisutnost poznatog grafičkog sučelja, nudeći korisniku samo konzolu kao kontrolni element. Za neiskusnog korisnika rad u ovom formatu može biti težak, koliko košta izlazak iz uređivača teksta koji je prilično popularan u podacima energija, pitanje vezano uz ovo već je imalo više od 6 milijuna pregleda u 1.8 godina. Glavne distribucije (izdanja) ove obitelji su: Debian - popularna distribucija, verzije paketa u njoj fokusirane su uglavnom na LTS (Dugoročna podrška – podrška dugo vremena), što se izražava u prilično visokoj pouzdanosti i stabilnosti sustava i paketa; Ubuntu – sadrži distribucije svih paketa u njihovim najnovijim verzijama, što može utjecati na stabilnost, ali vam omogućuje korištenje funkcionalnosti koje dolaze s novim verzijama; Red Hat Enterprise Linux – OS, postavljen za komercijalnu upotrebu, plaća se, međutim, uključuje podršku dobavljača softvera, neke vlasničke pakete i pakete upravljačkih programa; CentOS - otvoreni kod varijacija Red Hat Enterprise Linuxa, koju karakterizira nepostojanje vlasničkih paketa i podrške.

Za one koji tek počinju svladavati ovo područje moja bi preporuka bili sustavi Windows ServerIli Ubuntu. Ako uzmemo u obzir Windows, onda je to prvenstveno familijarnost sustava, Ubuntu – više tolerancije na ažuriranja, a zauzvrat, na primjer, manje problema pri pokretanju projekata na tehnologijama koje zahtijevaju nove verzije.

Dakle, nakon što smo se odlučili za OS, prijeđimo na skup alata koji vam omogućuju implementaciju (instalaciju), ažuriranje i praćenje stanja aplikacije ili njezinih dijelova na poslužitelju.

Sljedeća važna odluka bit će smještaj vaše aplikacije i poslužitelja za nju. Trenutno su najčešća 3 načina:

  • Hosting (čuvanje) poslužitelja na vlastitom je proračunu najpovoljnija opcija, ali morat ćete naručiti statički IP od svog pružatelja usluga kako vaš resurs ne bi mijenjao svoju adresu tijekom vremena.
  • Unajmite namjenski poslužitelj (VDS) – i samostalno ga upravljajte i skalirajte opterećenja
  • Platite (često vam daju priliku da isprobate funkcionalnost platforme besplatno) za pretplatu na neki cloud hosting, gdje je model plaćanja za korištene resurse dosta uobičajen. Najistaknutiji predstavnici ovog smjera: Amazon AWS (daju besplatnu godinu dana korištenja usluga, ali s mjesečnim ograničenjem), Google Cloud (daju 300 dolara na račun koji se mogu potrošiti tijekom godine na cloud hosting usluge) , Yandex.Cloud (daju 4000 rubalja . za 2 mjeseca), Microsoft Azure (daju besplatan pristup popularnim uslugama godinu dana, + 12 500 rubalja za bilo koju uslugu mjesec dana). Dakle, možete isprobati bilo kojeg od ovih pružatelja bez trošenja lipe, ali dobiti približno mišljenje o kvaliteti i razini pružene usluge.

Ovisno o odabranom putu, jedino što će se u budućnosti promijeniti je tko je većinom odgovoran za ovo ili ono područje uprave. Ako sami ugošćujete, morate shvatiti da svi prekidi u električnoj energiji, internetu, samom poslužitelju, softveru postavljenom na njemu - sve to u potpunosti leži na vašim ramenima. Međutim, za obuku i testiranje, ovo je više nego dovoljno.

Ako nemate dodatni stroj koji može igrati ulogu poslužitelja, tada ćete htjeti koristiti drugi ili treći način. Drugi slučaj je identičan prvom, s tim da odgovornost za dostupnost poslužitelja i njegovu snagu prebacujete na pleća hostera. Administracija poslužitelja i softvera i dalje je pod vašom kontrolom.

I na kraju, mogućnost zakupa kapaciteta cloud providera. Ovdje možete postaviti automatiziranu kontrolu gotovo bilo čega, a da ne ulazite u previše tehničkih detalja. Osim toga, umjesto jednog stroja, možete imati nekoliko paralelno pokrenutih instanci, koje mogu, na primjer, biti odgovorne za različite dijelove aplikacije, dok se u cijeni ne razlikuju mnogo od posjedovanja namjenskog poslužitelja. Također, tu su i alati za orkestraciju, kontejnerizaciju, automatsku implementaciju, kontinuiranu integraciju i još mnogo toga! U nastavku ćemo pogledati neke od ovih stvari.

Općenito, infrastruktura poslužitelja izgleda ovako: imamo takozvani "orkestrator" ("orkestracija" je proces upravljanja nekoliko instanci poslužitelja), koji upravlja promjenama okruženja na instanci poslužitelja, virtualizacijski spremnik (neobavezno, ali prilično često se koristi), koji vam omogućuje da podijelite aplikaciju u izolirane logičke slojeve i softver za kontinuiranu integraciju—dopuštajući ažuriranje hostiranog koda putem "skripti".

Dakle, orkestracija vam omogućuje da vidite status poslužitelja, uvedete ili vratite ažuriranja na okruženje poslužitelja i tako dalje. U početku, malo je vjerojatno da će ovaj aspekt utjecati na vas, jer da biste bilo što orkestrirali, trebate nekoliko poslužitelja (možete imati jedan, ali zašto je to potrebno?), a da biste imali nekoliko poslužitelja, potrebni su vam oni. Među alatima u tom smjeru najpopularniji je Kubernetes, razvijen od strane Google.

Sljedeći korak je virtualizacija na razini OS-a. Danas je koncept "dockerizacije" postao široko rasprostranjen, koji dolazi od alata Lučki radnik, koji pruža funkcionalnost spremnika međusobno izoliranih, ali pokrenutih u kontekstu jednog operacijskog sustava. Što to znači: u svakom od ovih spremnika možete pokrenuti aplikaciju, ili čak skup aplikacija, koje će vjerovati da su jedine u cijelom OS-u, a da ni ne sumnjaju da postoji još netko na ovom stroju. Ova je funkcija vrlo korisna za pokretanje identičnih aplikacija različitih verzija ili jednostavno proturječnih aplikacija, kao i za dijeljenje dijelova aplikacije u slojeve. Taj se sloj kasnije može zapisati u sliku, koja se može koristiti, na primjer, za implementaciju aplikacije. To jest, instaliranjem ove slike i postavljanjem spremnika koje sadrži, dobivate spremno okruženje za pokretanje vaše aplikacije! U prvim koracima ovaj alat možete koristiti i u informativne svrhe i za dobivanje vrlo stvarnih prednosti dijeljenjem logike aplikacije na različite slojeve. Ali ovdje vrijedi reći da nije svima potrebna dokerizacija, i ne uvijek. Dockerizacija je opravdana u slučajevima kada je aplikacija “fragmentirana”, podijeljena na male dijelove, od kojih je svaki odgovoran za svoju zadaću, takozvana “mikroservisna arhitektura”.

Osim toga, osim pružanja okruženja, moramo osigurati kompetentnu implementaciju aplikacije, što uključuje sve vrste transformacija koda, instalaciju biblioteka i paketa povezanih s aplikacijom, izvođenje testova, obavijesti o tim operacijama i tako dalje. Ovdje moramo obratiti pozornost na takav koncept kao što je "Kontinuirana integracija" (CI – Kontinuirana integracija). Glavni alati u ovom području trenutno su Jenkins (CI softver napisan u Javi može se činiti malo kompliciranim u početku), Travis C.I. (napisano u Rubyju, subjektivno, nešto jednostavnije Jenkins, međutim, i dalje je potrebno određeno znanje u području konfiguracije postavljanja), Gitlab CI (napisano na Ruby i kreni).

Dakle, nakon što smo razgovarali o okruženju u kojem će vaša aplikacija raditi, vrijeme je da konačno pogledamo koje nam alate moderni svijet nudi za izradu upravo tih aplikacija.

Počnimo s osnovama: Backend (backend) – poslužiteljski dio. Odabir jezika, skupa osnovnih funkcija i unaprijed definirane strukture (framework) ovdje je uglavnom određen osobnim preferencijama, no unatoč tome, vrijedi ga uzeti u obzir (autorovo mišljenje o jezicima prilično je subjektivno, iako uz tvrdnju na nepristran opis):

  • Python je prilično prijateljski jezik za neiskusnog korisnika, oprašta neke greške, ali može biti i dosta strog prema developeru da ne napravi nešto loše. Već prilično zreo i smislen jezik, koji se pojavio 1991.
  • Go - jezik iz Googlea, također je vrlo prijateljski i praktičan, prilično ga je lako kompajlirati i dobiti izvršnu datoteku na bilo kojoj platformi. Može biti jednostavan i ugodan, a može biti složen i ozbiljan. Svjež i mlad, pojavio se relativno nedavno, 2009. godine.
  • Rust je malo stariji od svog prethodnog kolege, izdanog 2006., ali je još uvijek prilično mlad u odnosu na svoje vršnjake. Namijenjen je iskusnijim programerima, iako i dalje pokušava riješiti mnoge zadatke niske razine za programera.
  • Java je veteran komercijalnog razvoja, uveden 1995., i jedan je od najčešće korištenih jezika u razvoju poslovnih aplikacija danas. Sa svojim osnovnim konceptima i teškom postavom, vrijeme izvođenja može postati prilično izazovno za početnike.
  • ASP.net je platforma za razvoj aplikacija koju je izdao Microsoft. Za pisanje funkcionalnosti uglavnom se koristi jezik C# (izgovara se C Sharp), koji se pojavio 2000. godine. Njegova složenost je usporediva s razinom između Jave i Rusta.
  • PHP, izvorno korišten za pretprocesiranje HTML-a, trenutno, iako drži apsolutni lider na jezičnom tržištu, postoji trend opadanja upotrebe. Ima nizak ulazni prag i jednostavnost pisanja koda, ali u isto vrijeme, pri razvoju prilično velikih aplikacija, funkcionalnost jezika možda neće biti dovoljna.

Pa, posljednji dio naše aplikacije - najopipljiviji za korisnika - Sučelje (frontend) – lice je vaše aplikacije, s tim dijelom korisnik izravno komunicira.

Ne ulazeći u detalje, moderni frontend stoji na tri stupa, okvirima (i ne toliko), za kreiranje korisničkih sučelja. Sukladno tome, tri su najpopularnija:

  • ReactJS nije okvir, već biblioteka. Zapravo, okvir se razlikuje od svog ponosnog naslova samo u nedostatku nekih funkcija "iz kutije" i potrebi da ih ručno instalirate. Dakle, postoji nekoliko varijanti "pripreme" ove knjižnice, tvoreći jedinstvene okvire. To može biti malo teško za početnika, zbog nekih osnovnih principa i prilično agresivnog postavljanja okruženja za izgradnju. Međutim, za brzi početak možete koristiti paket "create-react-app".
  • VueJS je okvir za izgradnju korisničkih sučelja. Od tog trojstva s pravom nosi titulu najlakšeg okvira za korištenje, za razvoj u Vueu barijera za ulazak niža je nego kod ostale spomenute braće. Štoviše, on je najmlađi među njima.
  • Angular se smatra najsloženijim od ovih okvira, jedinim koji zahtijeva kucana kopija (dodatak za jezik Javascript). Često se koristi za izradu velikih poslovnih aplikacija.

Rezimirajući ono što je gore napisano, možemo zaključiti da se sada implementacija aplikacije radikalno razlikuje od načina na koji se ovaj proces odvijao prije. Međutim, nitko vas ne sprječava da "razmještanje" obavite na starinski način. No je li malo ušteđenog vremena na početku vrijedno ogromnog broja pogrešaka na koje će programer koji odabere ovaj put morati stati? Vjerujem da je odgovor ne. Provodeći malo više vremena upoznavajući se s ovim alatima (a ne treba vam više od toga, jer morate razumjeti trebaju li vam oni u vašem trenutnom projektu ili ne), možete ga isprobati, značajno smanjujući npr. , slučajevi grešaka duhova ovisno o okruženju i koje se pojavljuju samo na produkcijskom poslužitelju, noćna analiza što je dovelo do pada poslužitelja i zašto se ne pokreće, i još mnogo toga.

Izvor: www.habr.com

Dodajte komentar