Natrag na blog

Evolucija weba: od CGI-ja do Websocketa (i kako će vam pomoći da bolje nadzirete svoju cloud infrastrukturu)

Evolucija weba: od CGI-ja do Websocketa (i kako će vam pomoći da bolje nadzirete svoju cloud infrastrukturu)

U posljednjih nekoliko godina, websockets su postali manje-više standardna komponenta u svim modernim web aplikacijama, ali zašto je to tako i kako smo došli do ovdje? Što je još važnije, kako vam websockets mogu pomoći da učinkovitije nadzirete svoju infrastrukturu u oblaku?

Zbog tehničke prirode ove teme, moguće je zaroniti vrlo duboko u detalje. No, pokušat ću zadržati stvari na relativno visokoj razini i usredotočiti se na prednosti za korisnike naše infrastrukture u oblaku.

Stari način rada

U ranim danima weba, sve je bilo statično. Ako ste trebali komunicirati s poslužiteljem (osim renderiranja statične stranice), morali biste izvršiti neku vrstu CGI-skripte. Tipičan primjer toga bio je nešto poput prijave na mailing listu. Unesete svoju e-mail adresu i pritisnete ‘submit’, a zatim vidite zasebnu stranicu koja je obradila podatke. To je pak bila skripta koja je preuzela unos i obradila ga na poslužitelju.

PHP Logo
Do 90-ih, skriptiranje na strani poslužitelja značajno je napredovalo. Tehnologija se razvila od izvršavanja jednostavnih zadataka do izgradnje potpuno dinamičnih stranica. Programski jezici poput PHP, i naprednije tehnologije na strani poslužitelja, poput mod_perl, omogućili su mnogo sofisticiranije web programiranje. Iako su ove tehnologije bile značajne, i dalje su se razvijale oko koncepta generiranja stranice pri učitavanju. Nakon što se učita, morala se ponovno učitati cijela stranica kako bi se osvježio sadržaj.

Kako se web razvijao, ušli smo u AJAX/Web 2.0-eru ’00-ih, web stranice su postale puno dinamičnije i responzivnije. Više niste morali ponovno učitavati stranicu da biste ažurirali sadržaj na zaslonu. Sve što ste trebali učiniti bilo je pokrenuti neke JavaScript akcije. Mnoge AJAX stranice i dalje su bile pokretane PHP-om, ali su se uvođenjem JavaScripta na strani klijenta mogle učiniti dinamičnijima.

Predstavljamo AJAX

S uvođenjem AJAX-a, stalna komunikacija između poslužitelja i klijenta postala je sve važnija. Odjednom ste mogli imati značajnu količinu API poziva generiranih od pojedinačnog korisnika na određenoj stranici. To radimo na 'pull' način, što znači da je klijent tražio ažuriranja od poslužitelja u određenom intervalu (ili na temelju neke radnje).

Kako smo ušli u ’10-e, bilo je uobičajeno da web stranice budu potpuno podijeljene između front-enda (HTML/JavaScript/CSS) i back-enda (Ruby on Rails, Django itd.), koji se često nalazio na različitim poslužiteljima. Način na koji je front-end komunicirao s back-endom bio je putem API-ja. Front-end je bio manje-više statičan. S ovim trendom, upućivanje API poziva poslužitelju postalo je značajno usko grlo. Ako ste morali dohvatiti deset različitih stvari s poslužitelja, to je često značilo da trebate napraviti deset različitih API poziva, pri čemu je svaki poziv nosio značajno opterećenje i latenciju.

Moderni način

HTML5 LogoKako bi se riješio ovaj problem latencije i opterećenja, websockets su uvedeni kao dio HTML5 i implementirani u sve moderne preglednike. Suprotno tradicionalnom 'pull' pristupu (tj. klijent traži promjene od poslužitelja), websocket je, kao što i samo ime kaže, utičnica (socket) putem koje poslužitelj može 'gurnuti' (push) promjene klijentu. Stoga, ako nema promjena, nema potrebe za komunikacijom. Također, budući da klijent može komunicirati izravno s poslužiteljem bez dodatnog opterećenja otvaranja i zatvaranja veza, aplikacija postaje puno responzivnija.

Upravo je tako izgrađena i naša vlastita web aplikacija. Sama aplikacija je statična stranica koja otvara websocket vezu s API-jem. Nakon što je ova utičnica otvorena, web aplikacija može primati obavijesti o promjenama s poslužitelja. I dalje šaljemo naredbe RESTful API-ju, ali šaljemo obavijesti s poslužitelja klijentu pomoću websocketa.

Nije samo za web stranice

Iako je najočitiji slučaj primanja ažuriranja pomoću websocketa putem preglednika, postoje i drugi slučajevi. Možda pišete alat koji prati promjene u vašoj arhitekturi i pokreće akciju na temelju toga. U tom slučaju možete značajno ubrzati svoju aplikaciju korištenjem našeg websocketa.

U našoj Python biblioteci, pycloudsigma, imamo ugrađenu podršku za websockete. Imamo čak i jednostavan primjer kako to možete iskoristiti za praćenje aktivnosti websocketa sa samo nekoliko redaka koda. Evo brze demonstracije za monitor_websocket_activity.py koji prati radnje pokrenute korisničkim unosom u web-aplikaciji.
Za više informacija o našim uslugama, pogledajte naše Značajke.

author

Viktor Petersson

Autor · CloudSigma

Preslav Dobrev je kreativni dizajner u CloudSigma, usredotočen na dosljedan poslovni identitet korištenjem tradicionalnih i inovativnih marketinških kanala. Vješt je u spajanju umjetničke vizije sa strateškim marketingom kako bi stvorio dojmljive brendirane priče.

Komentari

Još nema komentara. Budite prvi.