Když novostavba čeká první zimu, vlhkost rozhodne o všem
Teplé dřevo žádá teplé, nebo neutrální stě
Kam je položit a co si přitom hlíd
Nejčastější chyba je N+1 problém. GraphQL umožňuje vnořené dotazy a naivní implementace resolverů zavolá databázi pro každý záznam zvlášť. U seznamu stovek položek to znamená stovky dotazů místo jednoho. Řešením je dávkování a odložené načítání — sesbírejte klíče z jednoho cyklu vyhodnocování a načtěte je jedním dotazem. Když to uděláte správně, rozdíl bývá řádový. Pozor Rekonstrukce Bytu ale na to, že dávkování musí respektovat kontext requestu, jinak si data mezi požadavky promícháte.
První zima v novostavbě je zkouška. Ne pro dům, ale pro vás. Vlhkost, kterou do konstrukce vložila stavební chemie, omítky, beton a maltové směsi, se musí dostat ven. Zdivo z pórobetonu dokáže po dokončení obsahovat i několik desítek litrů vody na metr krychlový. Dokud tato voda zůstává uvnitř, izolace vlhne, dřevo bobtná a omítka se loupe. Zima tomu nepomůže, naopak: studený povrch nutí vlhkost kondenzovat na nejchladnějších místech, což jsou obvykle rohy, ostění oken a stropy v podkroví.
Hloubka dotazu a limity, které se nesmí přeskočit Bez omezení hloubky a složitosti dotazu si kdokoli může vyžádat data, která položí server. Zaveďte maximální hloubku vnoření a váhu dotazu. Váhu spočítejte tak, že každému poli přiřadíte cenu a násobíte ji počtem očekávaných položek v seznamu. Dotaz, který překročí limit, odmítněte ještě před spuštěním resolverů. Tím zabráníte tomu, aby drahý dotaz zaměstnal databázi na desítky sekund. Zároveň logujte, které dotazy limity překračují — často tak odhalíte chybu v klientovi, ne útok.
U vícevrstvých systémů, jako jsou základ, mezivrstva a vrchní lak, platí, že každá další vrstva musí být nanesena na dokonale vytvrdlý podklad. V chladu se snažte plánovat práce tak, If you liked this article and you would certainly like to get more information regarding https://Links.Gtanet.Com.br/ kindly check out our webpage. abyste stihli maximálně dvě vrstvy denně, a to jen pokud teploty neklesnou pod 10 °C. Pokud teplota v noci klesá k nule, raději s nanášením přestaňte a počkejte na stabilnější počasí. Nedokončený nátěr je lepší než nátěr, který bude nutné celý odstranit.
Poslední věc, kterou většina týmů podcení, je sledování v produkci. Metriky typu průměrná latence nestačí. Sledujte percentily, počty odmítnutých dotazů kvůli limitům a poměr mezi časem stráveným v resolverech a v databázi. Když se poměr vychýlí, víte, kde hledat. Optimalizace není jednorázový úkol, ale pravidelná údržba schématu i dotazů. Jakmile přestanete měřit, výkon se vrátí tam, kde byl.
Mnoho lidí udělá tu chybu, že nanese tři vrstvy světlé barvy přímo na tmavý podklad a diví se, že finální odstín je zakalený. Řešením není přidávat další vrstvy, ale vložit mezi původní a cílovou barvu jednu mezivrstvu v neutrálním odstínu – ideálně ve světle šedé nebo v tónu, který je blíž cílové barvě než původní. Tato mezivrstva srazí rozdíl a výrazně sníží počet finálních vrstev. Bez ní se často stává, že i po čtyřech vrstvách prosvítá původní odstín.
Další páka je fragmentace a cachování na úrovni polí. Pokud klient posílá stále stejné fragmenty, můžete odpovědi ukládat podle normalizovaných klíčů a invalidovat je cíleně, ne plošně. Vyhněte se ale slepé důvěře v cache podle identifikátoru objektu. Jakmile se změní vnořená data, musí se invalidovat i nadřazené záznamy. Špatně nastavená invalidace vede k tomu, že uživatel vidí stará data a nikdo neví proč. Testujte invalidaci scénáři, ne dojmem.
Většina týmů řeší výkon GraphQL tak, že přidá cache na HTTP vrstvu a doufá, že to stačí. Jenže GraphQL má jednu zásadní vlastnost: jeden endpoint, ale nekonečně mnoho tvarů dotazu. Cache podle URL tedy nefunguje, protože stejná adresa vrací pokaždé jiná data. První krok k optimalizaci proto není nástroj, ale měření. Zapněte si trasování resolverů a podívejte se, které pole spotřebovává nejvíc času. Bez tohoto kroku ladíte náhodně a většinou špatné místo.
Nezapomínejte ani na to, co posíláte zpět. GraphQL vrací jen to, co klient vyžádal, ale to neznamená, že jsou data malá. Velké řetězce, base64 obrázky nebo zbytečné vnořené objekty nafouknou odpověď a zpomalí přenos. Omezte velikost vracených polí, používejte stránkování už na úrovni schématu a nikdy nevracejte celé kolekce bez limitu. Stránkování založené na kurzoru je odolnější proti změnám dat než offset, protože při vkládání nových záznamů neposouvá stránky.