IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Lekce 1 - Úvod do optimalizace výkonu webových aplikací

Vítejte v e-learning kurzu optimalizace výkonu webových aplikací. Kurz je určen pro pokročilejší publikum a naučíme se v něm podstatně zrychlit webovou aplikaci, která nestíhá nápor uživatelů nebo např. obsahuje složité databázové dotazy. Optimalizovat budeme na několika úrovních a podrobně si ukážeme jak výkonnostní problémy vyřešit co možná nejjednodušeji a nejlevněji. Ukážeme si např. i jak zajistit, aby váš web nespadl, když vás zasdílí youtuber a během sekundy k vám přijde tisíce lidí. Nebo také když váš web bude pod DDOS útokem. A nebojte, hosting vás nebude stát milion korun :)

Start raketoplánu - Optimalizace webových aplikací

Kurz je psán na základě zkušeností z provozu populárního webu ITnetwork.cz (milion zobrazení měsíčně) a také provozu několika virálních webových stránek (ve špičce tisíce zobrazení/vteřina).

Informace, které zde získáte, nejsou vázané na konkrétní technologii a teoreticky ani na webovou platformu. Např. cachování můžeme uplatnit i u desktopové aplikace s nějakou databázi. Pokud ta přestane stíhat, budeme postupovat úplně stejně, jako bychom byli na webu. Získáte tedy obecné znalosti jak optimalizovat své aplikace.

Začínáme optimalizovat

Kurz začneme tím, že jsme zjistili, že máme nějaký problém s výkonem a postupně budeme pokračovat s různými optimalizacemi. Začneme samozřejmě u databáze a přes cachování se dostaneme až na fyzickou architekturu s loadbalancery a několika servery a následně představením možností cloudových platforem.

Proč optimalizujeme?

Optimalizaci můžeme potřebovat např. z následujících důvodů:

  • Nárazová návštěvnost (např. aktualizace) - Najednou všech 100 tisíc lidí, co používá náš program, přijde na naše stránky během několika málo hodin. S touto situací se musíme nějak vypořádat, např. web předgenerovat do statických HTML souborů.
  • Virální návštěvnost - Tisíce lidí z Facebooku nám v jednu vteřinu přijde na jednu stránku.
  • Obecně mnoho uživatelů - I při rovnoměrně rozprostřené návštěvnosti nám od určitého počtu uživatelů začne výkon klesat a odezva serveru může trvat dlouhé vteřiny. Nejen, že uživatelé začnou stránky netrpělivostí zavírat, ale za dlouhou dobu načítání penalizuje i Google a náš web se tak může propadnout na SERP (stránka s výsledky vyhledávače).
  • Velká data - Mějme např. účetní aplikaci, která počítá ekonomické ukazatele nebo nějakou vizualizaci pomocí grafů. Takovéto věci určitě nebudeme počítat pokaždé, když aplikaci uživatel spustí, ale budou již někde předpočítané.
  • Složité dotazy - I když máme rychlou databázi s relativně málo daty, složité dotazy mohou trvat výrazně delší dobu.
  • DDOS útok - Konkurence nás nemá ráda a posílá na nás DDOS útoky, náš web je přetížený a nepoužitelný. Řešení je jednodušší, než by se dalo čekat, uvidíte sami.

Úzká hrdla

Pojem úzká hrdla (bottleneck) označuje místa v aplikaci, která způsobují, že aplikace nestíhá obsluhovat své uživatele. Jedná se o jeden bod, přes který teče např. velké množství dat nebo zde probíhá nějaký náročný výpočet. Zbytek požadavku uživatele již může být hotový, ale vše stojí a čeká se, až se akce v tomto jednom bodě dokončí. Neoptimalizujeme tedy celou aplikaci, ale pouze tato zúžení. Ta samozřejmě musíme prvně lokalizovat a poté se s nimi vypořádat.

Nejčastější úzká hrdla

Mezi nejčastější úzká hrdla patří:

  • Databáze - Asi nejčastější zúžení
  • Serverový jazyk - Již jen spuštění programovacího jazyka při požadavku na webovou stránku způsobí přetížení serveru
  • Příliš mnoho resources - Pokud nepoužíváme protokol HTTP/2, již jen požadavek na soubory serveru způsobuje jeho přetížení (např. nemáme styly v jednom souboru, ale máme takovýchto souborů 20)
  • Webserver - Úzké hrdlo může představovat i samotný webserver, který klienty obsluhuje
  • Webhosting - V poslední řadě nám nezbude nic jiného, než koupit "nové železo" :) Toto je ale opravdu poslední bod a než do něj dojdeme, máme poměrně dost možností jak aplikaci zrychlit, než opravdu přikoupíme výpočetní výkon 

Kdy optimalizujeme

Co by to bylo za úvodní lekci do optimalizačního kurzu, když bychom si zde neuvedli jednu z nejdůležitějších programátorských manter:

Premature Optimization Is the Root of All Evil

Programátorská best practice

Větu výše bychom mohli volně přeložit jako "Předčasná optimalizace je kořenem všeho zla", tedy:

OPTIMALIZUJEME, AŽ KDYŽ JE TŘEBA!

Např. dokud nemáme příliš mnoho uživatelů, nebudeme plýtvat penězi na optimalizaci naší aplikace. Bez zátěže bychom navíc nemuseli ani správně odhadnout, kde jsou úzká hrdla a optimalizovali bychom něco, co ani není třeba. Vyčerpáním rozpočtu projektu v jeho prvních fázích může snadno dojít i k jeho selhání.

Bylo by dobré zmínit, že dnešní ceny hardwaru jsou poměrně nízko a tak často první, co uděláme při přetížení aplikace, je dokoupení výkonu serveru. Např. zprvu platíme 100 Kč, poté 500 Kč, poté 1000 Kč/měsíčně. Platit programátory na optimalizace je určitě na začátku dražší. Cena hardwaru ale exponenciálně roste a dříve či později se dostaneme do bodu, kdy je optimalizace levnější, než výkonnější stroj. Toto je důležitý moment, ve kterém teprve začínáme optimalizovat! Tehdy bychom např. za provoz neoptimalizované aplikace jinak platili 20.000 Kč/měsíc.

Jen pro představu, hodina času seniorního programátora stojí asi 500 Kč a každá optimalizace bude trvat minimálně několik dní. Optimalizaci také chápejme určitě jako investici do budoucna.

Myslím, že jsme se do dané problematiky slušně uvedli a namotivovali se k dalšímu pokračování.

V příští lekci, Optimalizace výkonu webu - Databázové indexy, to vezmeme hned od databáze a povíme si, co vše zde můžeme optimalizovat a jak.


 

Všechny články v sekci
Optimalizace webových aplikací
Přeskočit článek
(nedoporučujeme)
Optimalizace výkonu webu - Databázové indexy
Článek pro vás napsal David Hartinger
Avatar
Uživatelské hodnocení:
21 hlasů
David je zakladatelem ITnetwork a programování se profesionálně věnuje 15 let. Má rád Nirvanu, nemovitosti a svobodu podnikání.
Unicorn university David se informační technologie naučil na Unicorn University - prestižní soukromé vysoké škole IT a ekonomie.
Aktivity