Kontrolna lista za kreiranje i objavljivanje web aplikacija

Da biste kreirali vlastitu web aplikaciju u naše vrijeme, nije dovoljno biti u mogućnosti da je razvijete. Važan aspekt je postavljanje alata za implementaciju aplikacije, praćenje, kao i upravljanje i administriranje okruženja u kojem ona radi. Kako era ručne implementacije blijedi u zaboravu, čak i za male projekte, alati za automatizaciju mogu donijeti opipljive prednosti. Prilikom postavljanja „ručno“, često možemo zaboraviti pomaknuti nešto, uzeti u obzir ovu ili onu nijansu, pokrenuti zaboravljeni test, ova lista se može nastaviti prilično dugo.

Ovaj članak može pomoći onima koji tek uče osnove kreiranja web aplikacija i žele malo razumjeti osnovne pojmove i konvencije.

Dakle, izgradnja aplikacija se još uvijek može podijeliti na 2 dijela: sve što se odnosi na kod aplikacije i sve što se odnosi na okruženje u kojem se ovaj kod izvršava. Aplikacijski kod je zauzvrat također podijeljen na serverski (onaj koji radi na serveru, često: poslovna logika, autorizacija, pohrana podataka, itd.) i klijentski kod (onaj koji se pokreće na računaru korisnika: često interfejs i povezana logika sa njim).

Počnimo od srijede.

Osnova za rad bilo kog koda, sistema ili softvera je operativni sistem, pa ćemo u nastavku pogledati najpopularnije sisteme na tržištu hostinga i dati im kratak opis:

Windows Server - isti Windows, ali u varijanti servera. Neke funkcionalnosti dostupne u klijentskoj (običnoj) verziji Windows-a ovdje nisu prisutne, na primjer, neki servisi za prikupljanje statistike i sličan softver, ali postoji skup uslužnih programa za mrežnu administraciju, osnovni softver za postavljanje servera (web, ftp, ...). Općenito, Windows Server izgleda kao običan Windows, kvači kao obični Windows, međutim, košta 2 puta više od svog običnog kolege. Međutim, s obzirom da ćete najvjerovatnije instalirati aplikaciju na namjenskom/virtuelnom serveru, konačni trošak za vas, iako može porasti, nije kritičan. Budući da Windows platforma zauzima dominantno mjesto na potrošačkom OS tržištu, njeno serversko izdanje će većini korisnika biti najpoznatije.

Unix-sličan sistem. Tradicionalni rad u ovim sistemima ne zahteva prisustvo poznatog grafičkog interfejsa, nudeći korisniku samo konzolu kao kontrolni element. Za neiskusnog korisnika rad u ovom formatu može biti težak, koliko košta samo izlazak iz uređivača teksta koji je prilično popularan u podacima energija, pitanje vezano za ovo je već dobilo više od 6 miliona pregleda u 1.8 godina. Glavne distribucije (izdanja) ove porodice su: Debian - popularna distribucija, verzije paketa u njoj su fokusirane uglavnom na LTS (Dugoročna podrška – dugotrajna podrška), što se izražava u prilično visokoj pouzdanosti i stabilnosti sistema i paketa; Ubuntu – sadrži distribucije svih paketa u njihovim najnovijim verzijama, što može uticati na stabilnost, ali vam omogućava korištenje funkcionalnosti koje dolaze s novim verzijama; Red Hat Enterprise Linux – OS, pozicioniran za komercijalnu upotrebu, plaća se, međutim, uključuje podršku dobavljača softvera, neke vlasničke pakete i pakete drajvera; CentOS - open source varijacija Red Hat Enterprise Linuxa, koju karakteriše odsustvo vlasničkih paketa i podrške.

Za one koji tek počinju da savladavaju ovu oblast, moja preporuka bi bili sistemi Windows Server, ili Ubuntu. Ako uzmemo u obzir Windows, onda je to prvenstveno poznavanje sistema, 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ćavaju postavljanje (instalaciju), ažuriranje i praćenje stanja aplikacije ili njenih dijelova na serveru.

Sljedeća važna odluka će biti postavljanje vaše aplikacije i servera za nju. Trenutno su najčešća 3 načina:

  • Sopstveno hostovanje (čuvanje) servera je najisplativija opcija, ali ćete morati da naručite statičku IP adresu od svog provajdera kako vaš resurs ne bi promenio svoju adresu tokom vremena.
  • Iznajmite namjenski server (VDS) – i samostalno upravljajte njime i skalirajte opterećenja
  • Platite (često vam daju priliku da besplatno isprobate funkcionalnost platforme) pretplatu na neki cloud hosting, gdje je model plaćanja za korištene resurse prilično uobičajen. Najistaknutiji predstavnici ovog pravca: Amazon AWS (daju besplatnu godinu dana korištenja servisa, ali sa mjesečnim limitom), Google Cloud (daju 300$ na račun koji se može potrošiti tokom godine na cloud hosting servise) , Yandex.Cloud (daju 4000 rubalja. za 2 mjeseca), Microsoft Azure (daju besplatan pristup popularnim uslugama na godinu dana, + 12 rubalja za bilo koje usluge za jedan mjesec). Dakle, možete isprobati bilo kojeg od ovih provajdera, a da pritom ne potrošite ni peni, već dobijete približno mišljenje o kvaliteti i nivou pružene usluge.

U zavisnosti od odabranog puta, jedino što će se promijeniti u budućnosti je ko je u velikoj mjeri odgovoran za ovu ili onu oblast administracije. Ako sami sebe ugošćujete, onda morate shvatiti da svi prekidi u struji, Internetu, samom serveru, softveru koji je na njemu postavljen - sve to u potpunosti leži na vašim ramenima. Međutim, za obuku i testiranje to je više nego dovoljno.

Ako nemate dodatnu mašinu koja može da igra ulogu servera, onda ćete želeti da koristite drugi ili treći način. Drugi slučaj je identičan prvom, s tim što odgovornost za dostupnost servera i njegovu moć prebacujete na ramena hostera. Administracija servera i softvera je i dalje pod vašom kontrolom.

I na kraju, mogućnost zakupa kapaciteta cloud provajdera. Ovdje možete podesiti automatiziranu kontrolu gotovo svega bez zalaženja u previše tehničkih detalja. Osim toga, umjesto jedne mašine, možete imati nekoliko paralelno pokrenutih instanci, koje mogu, na primjer, biti odgovorne za različite dijelove aplikacije, a da se ne razlikuju mnogo po cijeni od posjedovanja namjenskog servera. Takođe, tu su i alati za orkestraciju, kontejnerizaciju, automatsku implementaciju, kontinuiranu integraciju i još mnogo toga! U nastavku ćemo pogledati neke od ovih stvari.

Generalno, serverska infrastruktura izgleda ovako: imamo takozvani „orkestrator“ („orkestracija“ je proces upravljanja nekoliko serverskih instanci), koji upravlja promenama okruženja na instanci servera, virtuelizacioni kontejner (opciono, ali prilično često se koristi), što vam omogućava da aplikaciju podijelite na izolirane logičke slojeve i softver za kontinuiranu integraciju – omogućavajući ažuriranje hostovanog koda putem „skripti“.

Dakle, orkestracija vam omogućava da vidite status servera, uvedete ili vratite ažuriranja na okruženje servera, itd. U početku, malo je vjerovatno da će ovaj aspekt utjecati na vas, jer da biste bilo što orkestrirali, potrebno vam je nekoliko servera (možete imati jedan, ali zašto je to potrebno?), a da biste imali nekoliko servera, potrebni su vam oni. Među alatima u ovom pravcu, najpopularniji je Kubernetes, koji je razvio Google.

Sljedeći korak je virtuelizacija na nivou OS. Danas je široko rasprostranjen koncept „dokerizacije“, koji dolazi iz alata doker, koji pruža funkcionalnost kontejnera izolovanih jedan od drugog, ali pokrenutih u kontekstu jednog operativnog sistema. Šta to znači: u svakom od ovih kontejnera možete pokrenuti aplikaciju, ili čak skup aplikacija, koji će vjerovati da su jedine u cijelom OS-u, a da ne sumnjaju da postoji još netko na ovoj mašini. Ova funkcija je vrlo korisna za pokretanje identičnih aplikacija različitih verzija, ili jednostavno konfliktnih aplikacija, kao i za podjelu dijelova aplikacije na slojeve. Ovaj sloj sloja se kasnije može upisati u sliku, koja se može koristiti, na primjer, za postavljanje aplikacije. Odnosno, instaliranjem ove slike i postavljanjem kontejnera koje sadrži, dobijate spremno okruženje za pokretanje vaše aplikacije! U prvim koracima, ovaj alat možete koristiti i u informativne svrhe i da biste dobili vrlo stvarne prednosti dijeljenjem logike aplikacije na različite slojeve. Ali ovdje vrijedi reći da nije svima potrebna dokerizacija, a ne uvijek. Dokerizacija je opravdana u slučajevima kada je aplikacija „fragmentirana“, podijeljena na male dijelove, svaki odgovoran za svoj zadatak, takozvanu „mikroservisnu arhitekturu“.

Osim toga, pored obezbjeđivanja okruženja, potrebno je osigurati kompetentnu implementaciju aplikacije, koja uključuje sve vrste transformacija koda, instalaciju biblioteka i paketa vezanih za aplikaciju, pokretanje testova, obavještenja o ovim operacijama itd. Ovdje moramo obratiti pažnju na takav koncept kao što je „kontinuirana integracija“ (CI – Kontinuirana integracija). Glavni alati u ovoj oblasti trenutno su Jenkins (CI softver napisan na Javi može izgledati malo komplikovano na početku), Travis C.I. (napisano u Rubyju, subjektivno, nešto jednostavnije Jenkinsmeđutim, još uvijek je potrebno određeno znanje u području konfiguracije implementacije), Gitlab CI (napisano dalje Ruby and Go).

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

Počnimo s osnovama: backend (backend) – serverski dio. Izbor jezika, skupa osnovnih funkcija i unaprijed definirane strukture (okvira) ovdje je određen uglavnom ličnim preferencijama, ali je ipak vrijedno spomenuti za razmatranje (autorsko mišljenje o jezicima je prilično subjektivno, iako s tvrdnjom na nepristrasan opis):

  • Python je prilično prijateljski jezik za neiskusnog korisnika, oprašta neke greške, ali može biti i prilično strog prema programeru da ne učini ništa loše. Već prilično zreo i smislen jezik, koji se pojavio 1991. godine.
  • Go - jezik iz Google-a, takođe je prilično prijateljski i zgodan, prilično ga je lako sastaviti i dobiti izvršni fajl na bilo kojoj platformi. Može biti jednostavno i ugodno, ili može biti složeno i ozbiljno. Svjež i mlad, pojavio se relativno nedavno, 2009. godine.
  • Rust je malo stariji od svog prethodnog kolege, objavljenog 2006. godine, ali je još uvijek prilično mlad u odnosu na svoje vršnjake. Namijenjen iskusnijim programerima, iako i dalje pokušava riješiti mnoge zadatke niskog nivoa za programera.
  • Java je veteran komercijalnog razvoja, predstavljen 1995. godine, i jedan je od najčešće korištenih jezika u razvoju poslovnih aplikacija danas. Sa svojim osnovnim konceptima i teškim podešavanjem, vrijeme izvođenja može postati prilično izazovno za početnika.
  • ASP.net je platforma za razvoj aplikacija koju je objavio Microsoft. Za pisanje funkcionalnosti uglavnom se koristi jezik C# (izgovara se C Sharp), koji se pojavio 2000. godine. Njegova složenost je uporediva sa nivoom između Jave i Rusta.
  • PHP, koji se prvobitno koristio za prethodnu obradu HTML-a, trenutno, iako drži apsolutno liderstvo na tržištu jezika, postoji trend opadanja upotrebe. Ima nizak ulazni prag i lakoću pisanja koda, ali u isto vrijeme, pri razvoju prilično velikih aplikacija, funkcionalnost jezika možda neće biti dovoljna.

Pa, završni dio naše aplikacije - najopipljiviji za korisnika - frontend (frontend) – lice je vaše aplikacije, s tim dijelom korisnik direktno stupa u interakciju.

Ne ulazeći u detalje, moderni frontend stoji na tri stuba, okvirima (i ne toliko), za kreiranje korisničkih interfejsa. Shodno tome, tri najpopularnije su:

  • ReactJS nije okvir, već biblioteka. Zapravo, okvir se razlikuje od svog ponosnog naziva samo po nedostatku nekih funkcija „iz kutije“ i potrebe da ih se instalira ručno. Dakle, postoji nekoliko varijanti „pripreme“ ove biblioteke, formirajući jedinstvene okvire. To može biti malo teško za početnika, zbog nekih osnovnih principa i prilično agresivnog podešavanja okruženja za izgradnju. Međutim, za brzi početak, možete koristiti paket “create-react-app”.
  • VueJS je okvir za izgradnju korisničkih interfejsa. Od ovog trojstva, on s pravom preuzima titulu okvira koji je najprikladniji za korištenje; za razvoj u Vueu, barijera za ulazak je niža nego kod druge spomenute braće. Štaviše, on je najmlađi među njima.
  • Angular se smatra najkompleksnijim od ovih okvira, jedinim koji je potreban TypeScript (dodatak za Javascript jezik). Često se koristi za izgradnju velikih poslovnih aplikacija.

Sumirajući gore napisano, možemo zaključiti da je sada implementacija aplikacije radikalno drugačija od načina na koji se ovaj proces odvijao ranije. Međutim, niko vas ne brani da izvršite "raspoređivanje" na starinski način. Ali da li je malo ušteđenog vremena na početku vredno ogromnog broja grešaka na koje će programer koji odabere ovaj put morati da zakorači? Vjerujem da je odgovor ne. Provodeći malo više vremena upoznajući se s ovim alatima (a ne treba vam više od toga, jer morate razumjeti da li su vam potrebni u vašem trenutnom projektu ili ne), možete ga odigrati, značajno smanjujući npr. , slučajevi ghost grešaka u zavisnosti od okruženja i koje se pojavljuju samo na produkcijskom serveru, noćna analiza šta je dovelo do pada servera i zašto se ne pokreće i još mnogo toga.

izvor: www.habr.com

Dodajte komentar