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.