Jak udělat rychlou webovou aplikaci
7 rad vedoucích k vytvoření skutečně
rychlého webu
Přeneste většinu práce ze serveru na klienta
Prvně co musíte udělat, by jste měli opravdu rychlou webovou aplikaci je
zvolit správnou architekturu. Změna architektury aplikace je dost zásadní rozhodnutí. V momentě, kdy Váš
uživatel klikne na tlačítko nebo odkaz, má váš server opravdu hodně práce, zatímco prohlížeč čeká a
ukazuje uživateli motací kolečko. Změňte to. Nechte server dělat jen to nejnutnější, hlavně ať je rychlá
odezva a využijte výpočetní možnosti klienta. Další zrychlení odezvy dosáhnete přirozeně tím, že server už
bude posílat na klienta jen čistá data a ne celé vygenerované stránky. Uvedené architektuře říkáme tlustý
klient a tenký server.
Zvolte dobrou technologii pro vývoj klienta
Jak bylo řečeno výše, rychlý klient je složitější než u klasického řešení,
ale je to vynahrazeno jednoduchostí serveru. V dnešní době existují dva základní směry tvorby klienta.
Javascript a webassembly. Oba mají své pro a proti. Javascriptový je pomalejší, ale zase ho umí zpracovávat
vyhledávače. Hodí se zejména pro FE aplikace jako jsou úvodní stránky služeb a eshopy. To ve webassembly si
toho můžete dovolit mnohem více, hodí se pro weby pracující v reálném čase, hry a hlavně všechny stránky za
přihlášením (které určitě nechcete indexovat vyhledávači). Webassembly je novější technologie, nehodí se pro
počítače s prohlížeči staršími více než deset let. Můžete mít i hybridní řešení, kde máte na stránce nějaký
webassembly objekt, jako je filtr, animace, atd. ale vlastní stránka je klasická HTML stránka.
Zvolte rychlou technologii pro server
I zde jsou dva hlavní směry. Jsou kompilované jazyky a interpretované. Ty
kompilované, jak už název napovídá potřebují překladač(kompilátor), který ze zdrojových textů vytvoří
spustitelný program. Ten spuštěný program pak funguje rychleji a obecně má mi menší paměťovou náročnost.
To interpretovaný jazyk je přesný opak. Interpret čte přímo zdrojové kódy a okamžitě jej vykonává. Potřebuje
zjistit z textu, co se má udělat (takové části programu říkáme parser). Dělá nějaký program, který obecně
potřebuje procesorový čas a paměť, je o něco náročnější a pomalejší. Jsou ale jednodušší na programování
a vývoj v nich je levnější. Pokud potřebujeme udělat rychlý web, musíme volit jazyk kompilovaný. Mezi takové
jazyky patří Java, C# a C++. V případě, že je tlak na cenu nebo je projekt jednoduchý, jsou zase vhodnější
jazyky interpretované jako jsou PHP, Javasript(NodeJs). Ještě jsem neuvedl řešení, které má výhody obou.
Jazyk Python, je sice interpret, ale překládá načtené zdrojové kódy do kompilovaného kódu, který se automaticky
překompiluje, pokud programátor ve zdrojovém textu něco změní. Můj osobní názor je, že se hodí pro malé a středně
velké aplikace, protože není tak přísně typový jako kompilované jazyky. Mít kvalitní server je pro rychlou
webovou aplikaci zásadní.
Používejte vícevláknový přístup
V době, kdy má každý počítač několik jader procesoru, není těžké si představit,
že dokáže dělat několik věcí současně. A co teprve paralelní čekání! Co když si stránka “objedná” 20 porcí
nějakých dat a čeká na ně třeba 100ms. Když to udělá po staru, sériově, tak čeká minimálně 2 sec. Paralelní
zpracování bylo do prohlížečů přidáno okolo roku 2019. Každý PC s Windows 10, Linuxem, Androidem, OSX i iOS
toto umí. Je potřeba mít paralelní zpracování i na serveru. Kompilované jazyky to umí všechny, interpretované
nikoli. U těch interpretovaných se často dělá, že je několik workerů (vlastně kompletních serverů), kde webový
server přiřadí jedné stránce jeden worker. Workery ale nefungují tak dobře jako vlákna. Mají větší režii.
Nenechte vaše uživatele zbytečně čekat
Řada aplikací, když dělá nějakou náročnou operaci, jednoduše udělá stránku která
se načítá půl minuty a uživatel jen kouká na motací kolečko. Udělejte to líp. Začněte operaci, okamžitě o tom
vraťte informaci uživateli, aby mohl dále pracovat a pak mu dejte najevo až bude dlouhá operace hotova.
Využijte psychotriky
, které dělají ještě rychlejší dojem, než ve skutečnosti je
U webassembly aplikací vznikají mimoděk také efekty, které lidé vnímají pozitivně.
Třeba když uživatel na něco klikne a vy si na serveru “objednáte” data, můžete uživateli zatím ukázat prázdnou
stránku bez dat. Tím uživatele na pár desítek ms zabavíte a zatím se Vám načítají data. Protože uživatel již
kouká na obrazovku a sleduje, co se na ní změnilo, příjde mu načítání rychlejší. Navíc, postupné zobrazování
combo boxů, podle toho, jak docházejí data do číselníků, je vlastně pro něj taková animace. I ta jej na malou
chvilku zabaví.
Nepodporujte historické verze prohlížečů
Výše uvedené nepojede v Internet exploreru a ani v nějaké historické verzi
webových prohlížečů, které jsou nainstalovány někde na Windows XP. Mě toto omezení nevadí. Dělám SW pro
profesionální práci a je předpoklad, že mí zákazníci mají Windows 10. Windows 7 a XP používá jen méně
než jedno procento lidí. Je na zvážení, zda kvůli této menšině dělat SW “po staru”, nebo dělat verzi jen pro ně.
Závěrem
Zvolení vhodné technologie má na aplikaci vliv naprosto zásadní. Interpretované
jazyky jsou vhodné na jednodušší aplikace. Pokud máte ale více práce na serveru, určitě volte jazyky
kompilované. Pokud možno se snažte vyhnout kompatibilitě se starými PC. Rozhodnutí ale závisí na konkrétních
potřebách Vaší aplikace.
Zdeněk
Skulínek i jeho spolupracovníci jsou zkušení profesionálové.
Ve Zdeněk
Skulínek si můžete objednat aplikaci a architekturou tlustý klient a tenký server
Ve Zdeněk
Skulínek si můžete objednat aplikace s webassembly na straně klienta.
Ve Zdeněk
Skulínek si můžete objednat aplikace v C++ na straně serveru.