V posledných niekoľkých rokoch sa websockets stali viac-menej štandardnou súčasťou všetkých moderných webových aplikácií, ale prečo je to tak a ako sme sa sem dostali? Čo je však dôležitejšie, ako vám môžu websockets pomôcť efektívnejšie monitorovať vašu cloudovú infraštruktúru?
Vzhľadom na technickú povahu tejto témy je možné ponoriť sa veľmi hlboko do detailov. Pokúsim sa však udržať veci na relatívne vysokej úrovni a zamerať sa na prínosy pre používateľov našej cloudovej infraštruktúry.
Starý spôsob fungovania
V začiatkoch webu bolo všetko statické. Ak ste potrebovali komunikovať so serverom (okrem vykreslenia statickej stránky), museli ste spustiť nejaký CGI skript. Typickým príkladom toho bolo napríklad prihlásenie sa do mailing listu. Zadali ste svoju e-mailovú adresu, stlačili „odoslať“ a potom sa vám zobrazila samostatná stránka, ktorá údaje spracovala. To bol zasa skript, ktorý prijal vstup a spracoval ho na serveri.

Do 90. rokov sa skriptovanie na strane servera výrazne vyvinulo. Technológia sa posunula od vykonávania jednoduchých úloh k tvorbe plne dynamických stránok. Programovacie jazyky ako PHP, a pokročilejšie technológie na strane servera, ako napríklad mod_perl, umožnili oveľa sofistikovanejšie webové programovanie. Hoci tieto technológie boli významné, stále sa točili okolo konceptu generovania stránky pri jej načítaní. Po načítaní musel človek znova načítať celú stránku, aby sa obsah aktualizoval.
Ako sa web vyvíjal, vstúpili sme do AJAX/Web 2.0-éry rokov ’00, webové stránky sa stali oveľa dynamickejšími a responzívnejšími. Na aktualizáciu obsahu na obrazovke už nebolo potrebné znova načítavať stránku. Stačilo spustiť nejaké akcie v JavaScripte. Mnohé AJAX stránky boli stále poháňané PHP, ale so zavedením JavaScriptu na strane klienta mohli byť dynamickejšie.
Predstavenie AJAX-u
So zavedením AJAX-u bola nepretržitá komunikácia medzi serverom a klientom čoraz dôležitejšia. Zrazu ste mohli mať veľké množstvo volaní API generovaných od jedného používateľa na danej stránke. Robili sme to spôsobom „pull“ (sťahovanie), čo znamenalo, že klient požadoval aktualizácie zo servera v určitom intervale (alebo na základe nejakej akcie).
Keď sme vstúpili do rokov ’10, bolo bežné, že webové stránky boli úplne rozdelené na front-end (HTML/JavaScript/CSS) a back-end (Ruby on Rails, Django atď.), ktorý bol často hostovaný na rôznych serveroch. Spôsob, akým front-end komunikoval s back-endom, bol prostredníctvom API. Front-end bol viac-menej statický. S týmto trendom sa volania API na server stali významným úzkym hrdlom. Ak ste museli zo servera načítať desať rôznych vecí, často to znamenalo, že ste museli vykonať desať rôznych volaní API, pričom každé volanie so sebou nieslo výraznú réžiu a latenciu.
Moderný spôsob
Na vyriešenie tohto problému s latenciou a réžiou boli v rámci HTML5 predstavené websockets a implementované vo všetkých moderných prehliadačoch. Na rozdiel od tradičného prístupu „pull“ (t. j. klient žiada server o zmeny) je websocket, ako už názov napovedá, socket, kde môže server „tlačiť“ (push) zmeny klientovi. Ak teda nedôjde k žiadnym zmenám, nie je potrebná žiadna komunikácia. Keďže navyše klient môže komunikovať priamo so serverom bez dodatočnej réžie spojenej s otváraním a zatváraním spojení, aplikácia sa stáva oveľa responzívnejšou.
Presne takto je postavená aj naša vlastná webová aplikácia. Samotná aplikácia je statická stránka, ktorá otvára websocket spojenie s API. Po otvorení tohto socketu môže webová aplikácia prijímať oznámenia o zmenách zo servera. Príkazy stále odosielame do RESTful API, ale oznámenia posielame (push) zo servera klientovi pomocou websocketu.
Nielen pre webové stránky
Hoci najzrejmejším prípadom prijímania aktualizácií pomocou websocketu je cez prehliadač, existujú aj iné prípady. Možno píšete nástroj, ktorý monitoruje zmeny vo vašej architektúre a na základe toho spúšťa akcie. V takom prípade môžete svoju aplikáciu výrazne zrýchliť využitím nášho websocketu.
V našej Python knižnici, pycloudsigma, máme zabudovanú podporu pre websockety. Máme dokonca aj jednoduchý príklad toho, ako to môžete využiť na monitorovanie aktivít websocketu pomocou niekoľkých riadkov kódu. Tu je rýchla ukážka monitor_websocket_activity.py monitorujúci akcie spustené používateľským vstupom vo webovej aplikácii.
Pre viac informácií o našich službách si pozrite naše Funkcie.
Komentáre
Zatiaľ žiadne komentáre. Buďte prvý.