Već dugo se bavim razvojem web aplikacija. Zaista dugo. Svoja prva web aplikacija u okruženju napravio sam u vreme kada reč «google» još nije bila glagol, a za pretraživanje informacija na internetu ljudi su koristili Yahoo! i Rambler. Ja sam koristio — imali su suženi pretraživač i nisu imali tako prenatrpan interfejs kao Yahoo!
Razvoj aplikacija, svih aplikacija, ne samo za web — je kreativni posao. Moguće je da se niko neće protiviti ovoj tvrdnji. A lepa stvar u kreativnosti je, baš kao praksa u naučnom saznanju — kriterijum istine. Međutim, dok je naučna praksa objektivna i zasniva se na merenjima, lepota je subjektivna stvar, zavisi od onoga ko gleda. Postavio sam sebi pitanje, šta je za mene lično lepa web aplikacija?

(na KDPV moj pogled nije moj, već ženski, ali, IMHO, ženski pogled na KDPV je prikladniji od muškog, jer je to — !)
Ispod je mojih vlastitih kriterijuma onoga što trenutno može da se smatra lepom web aplikacijom. Veoma subjektivna izjava, uslovljena mojim ličnim iskustvom. Moguće je da će nekome moji kriterijumi lepote delovati kao kriterijumi ružnoće. Ne iznenađujte se, jednostavno imate drugačije iskustvo.
I budući da ste krenuli ispod, molim vas budite oprezni u komentarima. Naime, ako možete prestati da čitate članak čim vam se ono što je izloženo učini nekrasnim ili čak ružnim, ja, kao autor, moram čitati sve komentare.
Okruženje
Protokoli
Čak ne znam ni da li vredi posebno istaknuti ovaj kriterijum. Web aplikacije žive na mreži i moraju se pridržavati Zakona mreže (protokola). Glavni protokoli na mreži su i . Na njima se osniva mnogo drugih protokola, ali za web aplikacije smatram da je najvažniji (odnosno, njegovo proširenje na bazi ). To jest, lepa web aplikacija je dostupna preko HTTPS/TLS (alternativa — preko HTTP), a ostali protokoli (LDAP, RPC, IMAP4, POP3, SMTP, FTP, NNTP, …) čine je manje lepom sa svakim dodatno podržanim protokolom. Sama aplikacija može, uz pomoć ovih dodatnih protokola, koristiti spoljne resurse.
Što se tiče , nisam imao dovoljno iskustva sa korišćenjem ovog protokola s web aplikacijama. Izgleda lepo i perspektivno, ali koliko je to stabilno i praktično — ne mogu da kažem.
Pregledači
Web aplikacija stoji na poslužiteljskoj strani s jednom nogom, dok je druga noga na klijentskoj strani. Klijentska strana je preglednik. Moderni preglednik pruža , što moderna web aplikacija može i treba iskoristiti u svoje svrhe. Prekrasna web aplikacija koristi moderne mogućnosti preglednika i ne mora raditi u preglednicima koji ne podržavaju moderne funkcionalnosti. Razumijem da su — to prisilna mjera, ali je to neuredno. Na kraju krajeva, ne samo da se programeri moraju držati korak s modernim tehnologijama, to se također odnosi na korisnike i biznis.
Jezik
Sa programskim jezicima koji se koriste za izradu web aplikacija, situacija je vrlo zbunjujuća. Postoji mnoštvo tehnologija za klijentski dio web aplikacija koje olakšavaju programerima stvaranje triade HTML/CSS/JS (to je ono što svi moderni preglednici razumiju). No, u svoje vrijeme, blisko sam se susreo s i smatram lijepim kada programer može vidjeti izvorni kod u pregledniku, a ne rezultat kompilacije ili transpikacije. Stoga je korištenje ‘a i sličnih proizvoda za generiranje klijentskog koda, IMHO, neuredno. Što više kod koji se izvršava u pregledniku nalikuje izvornoj verziji koju je programer stvorio, to bolje. Ne vjerujete? Pokušajte odraditi debagiranje u produkciji koda koji je generirao GWT.
Na poslužiteljskoj strani ima više slobode (Java, PHP, Perl, Python, C#, Ruby, ...), ali mislim da je lijepo kada se na poslužiteljskoj strani i u pregledniku koristi isti programski jezik — JavaScript. U konačnici , a timovi istomišljenika su produktivniji.
Humanost
Prekrasna web aplikacija mora biti korisna. Korisna, prije svega, za osobu kao krajnjeg korisnika. Zato ne mogu nazivati prekrasnom web aplikaciju . Običnoj osobi (ne web programeru) teško je s tim. Web servisi su lijepi na svoj način,
Prekrasna web aplikacija treba imati intuitivno razumljiv sučelje. Možemo raspravljati o ‘e — to je prilično subjektivna stvar. No s je sve jednostavnije; ako korisnik ne može koristiti aplikaciju bez zlatnog — loš UX, neuredna web aplikacija. Najljepše web aplikacije prema ovom kriteriju mogu se lako koristiti od strane djece koja još nisu naučila čitati.
Povratna Skalabilnost
Nekada su se programi mogli prenositi na diskete, danas - na usb stickove ili odmah preuzeti s mreže. Kopirati običnu aplikaciju i pokrenuti je na drugom računalu je trivijalan zadatak. Situacija s web-aplikacijama je nešto drugačija. Mreža predstavlja globalno okruženje u kojem nije potrebno imati klonove iste web-aplikacije. U mreži je dovoljan jedan Facebook, Twitter, Instagram, Mail.ru ili Yandex. Različite web-aplikacije mogu se nalaziti u istoj tematskoj niši, ali s različitim publikama (kao Facebook i Vkontakte, Mail.ru i Gmail, Google Maps i Azure Maps). Hardverski resursi potrebni za osiguranje globalne dostupnosti takvih web-aplikacija su, recimo to ovako, .
Nikada nisam radio s web-aplikacijama tog nivoa kao programer i ne mogu zamisliti kako su one strukturirane iznutra. Za osiguranje funkcionalnosti takvih web-aplikacija potrebni su timovi odgovarajućih stručnjaka i odvojeni data centri. Oduševljava me sposobnost ljudi za suradnju u takvim razmjerima i stvaranje sličnih proizvoda, ali moj ideal ljepote je web-aplikacija koja se može pokrenuti na zasebnom laptopu.
Lijepa web-aplikacija skalira se ne samo prema gore i u širinu (za korisnike), već i prema dolje i unutar (za programere).
«Amfibijalnost»
Za pristup modernim web-aplikacijama koriste se uređaji dvaju tipova:
- računala (laptopi, desktop računala);
- mobilni uređaji (pametan telefoni i tableti);
Negdje na horizontu se nazire još ««, ali za sada tako.
Računala se od mobilnih uređaja razlikuju toliko koliko se su kopneni organizmi razlikuju od vodenih. To su različita okruženja i postavljaju različite zahtjeve prema bićima (programima) koja u njima obitavaju. Lijepe web-aplikacije nisu one koje su slične , nego one koje u vodi - poput riba, na kopnu - poput životinja, a u zraku () - poput ptica.
Ne smatram «« lijepom, to je kao pokušaj sjesti na dva (s SEO - tri) stolice. Bolje kao Fiona iz Shreka - danju jedna, a noću druga. Da, skuplje. Ali bolje.
Cross-sharing
Već sam napomenuo u odlomku "Obratna skalabilnost" da globalnost mreže omogućava postojanje jedne web aplikacije na planeti. Stoga svaka web aplikacija mora biti nečim drugačija od drugih kako bi osigurala svoje preživljavanje. Ipak, moje višegodišnje iskustvo s (okvir za izgradnju e-commerce trgovina) govori da između pojedinih web aplikacija može biti više zajedničkog nego razlika. Lijepa web aplikacija ne samo da trebala bi biti modularna, već također trebala bi dijeliti svoje module s drugim web aplikacijama. Na neki način, ova ideja odražena je u JSR 168 i JSR 286 i takvim framework-ovima kao , i istom Magento. Što više modula web aplikacije koriste druge web aplikacije, to je ona po mom mišljenju ljepša. Cross-sharing omogućava izradu kvalitetnijih modula i, kao posljedicu, stabilnijih web aplikacija.
Pod modulom ne podrazumijevam biblioteke poput jQuery ili RequireJS — radije mislim na veće entitete, poput pluginova u i . No, za biblioteke također vrijedi teza da široka rasprostranjenost biblioteke omogućava da ona bude kvalitetnija i otpornija.
Harvardska arhitektura
, za razliku od trenutno dominantne bal , podrazumijeva razdvajanje koda i podataka. Arhitektura nije uspela, ali sama ideja mi se čini lijepom. Posebno za web aplikacije. Svaka statika (HTML/CSS/JS/Slike/…) — to je kod. Može se i treba keširati bilo na serveru, bilo na klijentu. A podaci — to su / (lijepo) ili / (malo manje lijepo). Ili WebSockets/JSON (možda najbolja opcija, ali nisam probao).
Lokalizacija
Postoje dvije stvari koje me posebno muče pri razvoju web aplikacija — to su višejezični sučelja i vremenske zone. Sam dolazim iz Latvije, gdje se koriste tri jezika: LV, RU, EN. Lijepa web aplikacija trebala bi omogućiti ne samo korištenje više jezika u samoj aplikaciji, već i omogućiti proširenje broja korištenih jezika putem vanjskih resursa, poput . To vrijedi i za module od kojih se sastavlja web aplikacija.
Što se tiče vremenskih zona, sve je jednostavno: sve što je na serveru, odlazi na server i dolazi sa servera — UTC, dok se sve što se prikazuje na klijentu prikazuje prema vremenskoj zoni iz korisničkog profila. To je lijepo.
Kovačnice umjesto „Zvijezda smrti“
Davno je u svakom malo većem gradu postojala vlastita kovačnica. Moguće i više njih. Neke bolje, neke lošije. Bilo je kovača poznatih širom svijeta, a bilo je i onih kod kojih se išlo iz nužde. Ratovi, epidemije, prirodne katastrofe su se događale. Neki gradovi su nestajali zajedno s populacijom. No, kovački zanat je preživio. Umjesto nestalih gradova, gradili su se novi i u njima su se ponovno otvarale kovačnice.
A sada pogledajte na uslugu kao što je . Kada padnu korijenski serveri, .
Po mom mišljenju, lijepa web-aplikacija ne može biti veličine kao što je Facebook ili Mail.ru. To je već bliže „“ i po resursima potrebnim za izgradnju i po resursima potrebnim za održavanje. Da, u slučaju uništenja Facebooka, čovječanstvo neće nestati, njegove funkcije će vrlo brzo preuzeti druge aplikacije (isti na teritoriju RF i okolnim zemljama, Instagram, Twitter, …). Ipak, zaključavanje značajnog dijela populacije Planeta na jednu aplikaciju — to nije lijepo. Tim više, uz mnogo otpornije alternative (npr., ).
Sažetak
Ako ste stigli do kraja i osjećate zbunjenost — „što je to bilo?“, izražavam vam svoje iskreno saučešće. Nisam vas tjerala na čitanje. Samo sam pokušala izraziti svoje misli riječima, kako bih pronašla one koji razmišljaju slično. Možda ću moći raspraviti s njima neke aspekte izrade lijepih web-aplikacija i saznati odgovore na svoja pitanja. A njih imam mnogo.
Hvala na čitanju.
Izvor: habr.com
