Weboldalunk cookie-kat használhat, hogy megjegyezze a belépési adatokat, egyedi beállításokat, továbbá statisztikai célokra és hogy a személyes érdeklődéshez igazítsa hirdetéseit. További információ
Kezdőoldal » Számítástechnika » Weblapkészítés » Mennyire érdemes a lehető...

Mennyire érdemes a lehető legjobban "tehermentesíteni" egy webszervert és rábízni a kliensoldalra az ott elvégezhető "munkák" nagy részét?

Figyelt kérdés

Egy egyszerű példát is írok, hogy érthetőbb legyen, hogy mire gondolok. Adott egy webshop (és annak egy kosár funkciója például). Amikor a felhasználó az oldalra látogat, akkor az adatok megjelenítéséhez nyilván szükség van legalább 1 kéréshez és adatbázis lekérdezéshez, hogy legyen mit visszaadni a kliensnek, viszont onnantól kezdve a kosárkezelést már meglehetne oldani csak kliens oldalon javascripttel. A renderelt adatok alapján lehetne számítani a kosárban lévő termékek összegét, illetve a kosárban lévő termék mennyiségének módosításával / termék törléssel a végösszeg kliens oldalon "újraszámolható" a megjelenítéshez. Aztán submit előtt kliens oldalon, submit után szerver oldalon validálhatóak az adatok (az áraknak nyilván csak tájékoztató jellege lenne kliens oldalon, a valódi végösszeg szerver oldalon számolnám egy ilyen esetben, a kosárban lévő termékek validálása után).


Szóval a kérdésem az, hogy ha az ilyen kliensre bízható megjelenítéssel kapcsolatos feladatokat ténylegesen a klienssel végeztetem el, hogy emiatt ne legyenek felesleges kérések, queryk és a szerverrel tényleg csak a legszükségesebb feladatokat végeztetem el, akkor ez jó hozzáállás?


febr. 12. 14:57
 1/7 anonim ***** válasza:
36%

Nem tul jo otlet kiadni a kezedbol a kontrollt, hogy kliensoldalon valami script kiddie nekialljon televerni a 'kosarat' szemettel, hogy azzal DOS-olja a webszerveredet, tomcat-edet, meg az adatbazist.


Alapvetes: a kliens nem megbizhato. Nem, akkor sem, ha te feltetelezed rola, barki es barmi lehet mogotte.

febr. 12. 15:10
Hasznos számodra ez a válasz?
 2/7 anonim ***** válasza:

Egyáltalán nem látom a példa alapján, hogy ez hogyan lenne extra támadási felület.


Semmi hátránya nincs ennek ha még pénztárnál ÉS rendelés leadásakor is ellenőrzöd szerver oldalon.

febr. 12. 15:23
Hasznos számodra ez a válasz?
 3/7 A kérdező kommentje:
Én sem látom, hogy ezzel kiadnám a kontrollt a kezemből. A fenti példánál nincsen szükség valami szerver oldali kosár objektumra, meg hozzá tartozó logikára, csak a kérésben küldött termékeket kell újra validálni, hogy azok valódi termékek-e (termék azonosítók), van-e készleten, stb...
febr. 12. 15:29
 4/7 tetrav ***** válasza:

A válasz szerintem függ a körülményektöl:


Ha már van egy webshop, ahol serveroldalon történik mindez és nincs probléma a server teljesítményével, szerintem nem kéne átírni.

Ha van teljesítményprobléma, még akkor is olcsóbb lehet erösebb vasra költözni, mint totál átalakítani a szoftvert.


Ha még csak a tervezési fázis elején jársz, akkor jó lehet a kliensre bízni minél több dolgot, hogy tehermentesítsd a servered.


Viszont arra érdemes figyelni, hogy itt is van egy tradeoff:

A serveroldali kódnak csak egy platformot kell supportálnia: azt a servert, amin fut. A kliensoldali kódnál számításba kell venned azt, hogy különbözö böngészök különbözö verziói különbözö OS-en futnak. Persze a mai világban ezt már megoldják helyetted mindenféle js libek, de ugye azokat is be kell húzni -> ezzel növeled a termék komplexitását.


Attól is függ a válasz, hogy az emberek, akik fejlesztik, milyen skillekkel rendelkeznek: Ha van pl 3 backendesed meg egy frontendesed, akkor lehet, hogy jobban jársz, ha nem tolsz ki túl sok mindent a kliensoldalra.


Ha a körülményektöl eltekintünk, feltételezzük, hogy végtelen eröforrásod van, szerintem mindkét megközelítés egyformán jó.

febr. 12. 15:38
Hasznos számodra ez a válasz?
 5/7 anonim ***** válasza:
100%

Alapelv, hogy csak olyan feladatot bízunk a kliensre, aminek a hibás elvégzése nem okoz instabilitást. Mondjuk bejelentkezéskor egy kliens oldali szkript ellenőrizheti, hogy a beírt e-mail cím formailag helyes-e, vagy egy jelszóváltoztató lapon azt, hogy a két beírt jelszó egyezik-e. Nagyjából ennyi az, amit a kliensre illik rábízni. A kosár kezelését és nyilvántartását nem véletlen, hogy egyre több helyen szerver oldalon végzik. Véletlenül bezárja a böngészőt, lefagy a gép, vagy egyszerűen csak elindul munkába, a vásárlást még nem fejezte be, mennyire kényelmes, ha út közben telefonról ott folytathatja, ahol abbahagyta.

A szerver terheltésge pedig erősen túl van gondolva. Ha ez egy kis webáruház, akkor nem fog a szerver összerogyni az óránként kb. 9 adatbázisművelet miatt. Ha meg egy kifejezetten forgalmas webáruházról van szó, ahol ez tényleg számottevő többletterhet jelentene, akkor meg kell, hogy legyen pénz erősebb szerverre.

febr. 12. 17:03
Hasznos számodra ez a válasz?
 6/7 A kérdező kommentje:
#5-ös, a webshop csak egy példa volt. Amit nem említettem az az, hogy nem "dedikált" szerver gépen üzemeltetném ezt a webszervert, hanem mondjuk egy raspberry pi-n és ehhez mérten akarnám a maximumot kipréselni belőle.
febr. 12. 17:49
 7/7 anonim ***** válasza:

A szerver terheltsége nem kell témának lennie manapság. Sőt, ezt előre nem is fogod tudni megmondani. Lehet, hogy elegendő 2 magos, 4 GB-os rendszer is, és flottúl fog menni. Vagy lehal, mint a Signal szerver parkja, mikor mondja Elon Musk, hogy használj Signal-t. Azért mindkét véglet van! Erre azt szokták mondani, hogy "Jósold meg a használatot.", "Kezd kicsivel, és majd skálázd." és "Monitorozd az alkalmazásod terheltségét".


A kliens oldallal kapcsoaltban, szerintem nyugodtan rábízgatsz olyan dolgokat. Én azt szoktam mondani, hogy ami user/browser specifikus, akkor az kiszervezhető. Én preferálom a STATELESS megközelítést, mikor nincs szerver oldali SESSION, lásd API-k. Tehát minden kérés független egymástól, de tartalmazhat olyan adatot, ami azonosítja a felhasználót. Pl.: JWT ( [link] ), és ezt feldolgozva már tudom kiről van szó, így egy User<=>Server<=>Server (azaz microservice-ek) folyamon is tovább tudom dobni a JWT-t és a másik szerver is tudni fogja, milyen jogosultságaid vannak, amit a JWT tárol.


Igen.. a JWT felhasználónál van, és tartalmazza a jogosultságait is, ami digitálisan alá is van írva, tehát a JWT érvénytelen lesz, ha kézzel belemókol. ;) Amúgy az ilyen aláírásos dolgokat, amit a szerver oldalon tudsz ellenőrözni, és onnan is adod ki, azt bátran kliens oldalra kiadhatod, ha nem tartalmaz érzékeny adatot.

febr. 13. 08:50
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2021, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | WebMinute Kft. | Facebook | Kapcsolat: info@gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!