Ljepota je u očima promatrača

Već dugo se bavim razvojem web aplikacija. Zaista dugo. Svoja prva web aplikacija u okruženju Lotus Domino 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 Infoseek— 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?

Ljepota je u očima promatrača

(na KDPV moj pogled nije moj, već ženski, ali, IMHO, ženski pogled na KDPV je prikladniji od muškog, jer je to — KDPV!)

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 TCP i IP. Na njima se osniva mnogo drugih protokola, ali za web aplikacije smatram da je najvažniji HTTP (odnosno, njegovo proširenje HTTPS na bazi TLS). 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 WebSocket, 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 mnogo toga, š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 polifili — 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 GWT i smatram lijepim kada programer može vidjeti izvorni kod u pregledniku, a ne rezultat kompilacije ili transpikacije. Stoga je korištenje webpack‘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 jezik oblikuje misli, 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 web servise. 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 UI‘e — to je prilično subjektivna stvar. No s UX je sve jednostavnije; ako korisnik ne može koristiti aplikaciju bez zlatnog RTFM — 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, netrivijalni.

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š «internet stvari«, 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 amfibijama, nego one koje u vodi - poput riba, na kopnu - poput životinja, a u zraku (SEO) - poput ptica.

Ne smatram «amfibijalnost« 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 Magento (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 specifikacijama JSR 168 i JSR 286 i takvim framework-ovima kao WordPress, Django 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 WordPress i Django. No, za biblioteke također vrijedi teza da široka rasprostranjenost biblioteke omogućava da ona bude kvalitetnija i otpornija.

Harvardska arhitektura

Harvardska arhitektura, za razliku od trenutno dominantne bal prinstonjske, 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 REST/JSON (lijepo) ili SOAP/XML (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 Crowdina. 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 DNS. Kada padnu korijenski serveri, sve zemlje se tresu.

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 „Zvijezdi smrti“ 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 VK 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., torrenti).

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

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster