Petr Burian přednáší na konferenci No BullShIT

9 doporučení pro lepší web

Skvělý web tvoří kvalitní frontend i vyladěný a často neviditelný backend. Pomůžu vám sladit a vylepšit obojí!

Každý projekt je změnou ze stavu A do vysněného stavu B. Často tápeme a bojíme se změny. Třeba proto, že nevíme, kde zrovna jsme. Nebo si neumíme představit cíl jen proto, že mu zatím nerozumíme. A už vůbec se nám nezamlouvá hromada překážek, které nás napadnou v prvních vteřinách, jen co začneme promýšlet cestu, kterou se vydáme.

Zažili jste takový pocit? Věřím, že mnohokrát. Rád vám se změnou pomohu!

Nabízím vám svou zkušenost IT experta. Rozumím IT technologiím. Znám funkční principy, jak správně měřit webové frontendy a backendy, aby bylo patrné, v jakém stavu se nachází a aby pro změnu bylo dostatek informací - k rozhodnutí i následnému vyhodnocení. Pomůžu vám s měřením a přípravou vhodné strategie pro změnu.

9 doporučení pro lepší web

  1. Zlepšujeme, co měříme.

    Kvalitní měření a metriky mohou dramaticky zvýšit šanci na úspěch a to až 7x. Přesto jen 37% projektů má nějaké měření (citace Lenky Pincot ze studie PMI na Project, Agile & Leadership Konferenci 2024).

    Každá změna je posunem ze stavu "A" do vysněného stavu "B". Než se vydáme na cestu změny, potřebujeme vědět, kde se nacházíme (stav "A"). A k tomu nám pomůže měření. Stejně tak na cestě potřebujeme vědět, jestli se blížíme k cíli (stav "B"). A k tomu nám opět pomůže (stejné) měření. Nemáte ještě kvalitní měřící systém? Nevadí, ve 2. a 3. tipu najdete inspiraci.

  2. Měříme zvenčí.

    Externí měření (zvenčí) pomáhá na web koukat jako na celek - tak jak ho vnímá uživatel. Z různých míst světa (internetu) můžete sledovat, jak si váš web stojí a reagovat na případné problémy. Měříme opakovaně v čase a výsledky vizualizujeme v grafech.

    Nejčastější metriky jsou: dostupnost, latence, velikost (dat) a kontrola vlastního obsahu (např. ověření hashe/secretu na stránce).
    Tooling je např.: BetterStack, PageSpeed, SpeedCurve nebo CrUX Vis.

  3. Měříme zevnitř.

    Měření zevnitř sleduje části webu, které jsou pro jeho běh důležité - počínaje architekturou (servery, VMS, cloud) přes technologie (databáze, aplikační vrstva, atd.) až po aplikační část (microservisy, komponenty, API, atd.). Měříme opakovaně v čase a výsledky vizualizujeme v grafech.

    Metrik bývá násobně - řádově víc než u externího měření. Volíme si metriky, které jsou důležité pro naši aplikaci - může to být vytížení CPU, počty req. na databázi, počet volání microservisy, atd. Vedle velkého množství metrik máme hlavní dashboard, kde vidíme celkový pohled - zdraví naší aplikace (vyhneme se tím problému přehlcení - tzv. metrics hell).
    Tooling je např.: Grafana, Kibana a k nim odpovídající data kolektory pro sběr dat.

  4. Chápeme backend jako správce dat.

    Backend může být jednoduchý i velmi složitý. Plný mikro-servis či velký monolit. Každý backend dělá ale jen jednu věc - spravuje data. Data přijímá od frontendu, zpracovává je a uchovává. Na druhou stranu backend data vydává frontendu.

    Request - zpracování - Response. Fungování backendu můžeme rozdělit na typy požadavků (např. login, data feed, homepage, item detail, košík, ...) a pro každý typ sledovat počet volání, dobu zpracování a datovou velikost. A každý datový typ bude mít 2 grafy - první: počet volání x doba zpracování a druhý: počet volání x datová velikost. Snadno pak poznáme, kde náš backend "drhne" a budeme schopni zajistit nápravu.

  5. Optimalizujeme výkon.

    Víme, která část našeho webu způsobuje problémy? Vsadím se, že to bude část, která se volá až příliš často. Nebo je daná část výpočetně až moc náročná? Ještě mě napadá, že přenášíme až moc dat. Než se rozhodneme aplikaci optimalizovat, měli bychom znát její slabá místa.

    Tooling: Pokud máme měření z bodu 4, měli bychom snadno vidět, které části našeho systému nepracují optimálně a na ty se zaměřit. Bez měření nemá smysl, abychom systém měnili - nebudeme vědět, jestli řešíme správné místo, ani o kolik jsme systém zlepšili.

  6. Kešujeme.

    Každý systém, který je pod zátěží, jde optimalizovat tím, že zátěž snížíme. Technika kešování pomáhá řešit všechny 3 příčiny zátěže (počet requestů, výpočetní i datovou náročnost). Kešování zavádíme na té vrstvě, kde dochází k přetížení.

    Tooling: Strategie kešování lze použít směrem od uživatele ke zdroji (např. serveru): keš v prohlížeči, CDN (např. CDN77), reverzní proxy (např. Varnish Cache), aplikační keš (např. Redis), databázová keš.

  7. Reagujeme na chyby.

    Většinou se nedějí katastrofické scénáře. Pokud máme rozumně navrhnutý web, budeme dosahovat běžně dostupnosti alespoň 99.5% (to odpovídá degradaci či výpadku max 7 min denně). Měli bychom se vyhnout overengineeringu, který se snaží podchytit všechny krajní stavy a zaměřit se na reálné a důležité scénáře. Např. pro e-shop je důležité vědět, jestli funguje správně nákupní košík.

    Tooling: Základní externí a interní monitoring a feedback od uživatelů nám poskytne dobrý přehled, jestli si náš web stojí dobře. Z každé nové chyby se pak snažíme poučit - zlepšíme web i monitoring.

  8. Ošetřujeme chyby.

    Chyby se stávají a nedá se jim vyhnout, nikdy. Důležité je, abychom se z každé chyby poučili a našli v ní inspiraci pro zlepšení našeho webu i monitoringu.

    Tooling: Logujeme vzniklé chyby a řešíme je. Můžeme použít nástroje jako je Elastic, BetterStack nebo Icinga. Vzniklou chybu směrem k uživateli dobře komunikujeme - co se stalo a hlavně, co má uživatel dělat.

  9. Komunikujeme.

    Ať už stavíme krásné frontendy nebo komplexní backendy, potřebujeme umět popsat stav, ve kterém se nacházíme a kam se snažíme dostat. Měření a metriky nám zásadně pomáhají. Získaná data (hodnoty, grafy, logy, ...) jsou kvalitní základ pro komunikaci - co se stalo, co chceme změnit, kam se chceme posunout. Pomohou nám, abychom si rozuměli nejen s kolegy vývojáři, ale i s managementem nebo zákazníky.

    Tooling: Nejlíp fungujeme díky komunikaci a spolupráci - když si rozumíme a táhneme za jeden provaz.

Cíl a změna

Ahoj, jsem Petr Burian a ve své práci jsem vždycky pracoval s kvalitními daty z produkce, která jsme získávali pomocí měření. Byl jsem tím tak posedlý, že mi kolegové často říkali "grafíčkofil". Díky datům jsme uměli odhadovat trendy a proaktivně se připravit na špičkový provoz komplexních architektur, které dodávaly data globálnímu produktu v intenzitě až 2.5 milionu req/s. Mým cílem bylo nejen rozumět svěřenému systému, ale díky datům být také schopen rozhodovat časté změny, které jsme v rámci optimalizací realizovali.

Zkušenost z praxe

Mou expertizou je IT svět - jsem technik tělem i duší. Pomohl jsem vybudovat globální digitální produkt Flashscore, který po celém světě používá víc než 100 milionů sportovních fanoušků. Začínal jsem jako full-stack vývojář a technický nadšenec, až jsem se stal technickým ředitelem (CTO) ve společnosti Livesport, kde jsem krásných 16 let vedl 25 týmů a 170 lidí, převážně vývojářů.

Inspirace leadershipu

Vedení a inspirování lidí je trochu jiná disciplína, než technický svět počítačů. Tam je vše logické a často dobře zdokumentované. Pustil jsem se do velkého studia softu a inspiroval jsem se zejména z knih expertů jako jsou Adam Grant, Simon Sinek, Daniel Kahneman, Carol Dweck a mnoha dalších. Všechny tipy leadershipu jsem mnohokrát vyzkoušel v praxi a vyladil si je. Pomohly mi jak v kariéře IT experta, při běhání, tak i jako otci při výchově dvou dcer.

Důvěra

Vím, že mých 9 tipů pro lepší web funguje a věřím, že stojí minimálně za vyzkoušení. Třeba vás jen inspirují, nebo pomohou zásadně zlepšit váš současný nebo příští web. Tak je zkuste.

Ozvěte se mi

První krok je jednoduchý a zvládne ho skoro každý - stačí se mi ozvat.