Kdy je čas přepsat dotazy GraphQL na novou cache?
Samotné šroubování vypadá jednoduše, ale i tady se chybuje. Šrouby se nesmí utopit pod povrch desky, protože pak drží jen papír a spoj povolí. Hlava má být těsně pod povrchem, ale papír nesmí být protržený. Spoje se musí nejdřív vyplnit tmelem a vložit výztužná páska, teprve pak se přetírá druhá vrstva. Kdo vynechá pásku a jen zatmelí spáru, dostane prasklinu přesně v tom místě.
Další častou chybou je ignorování odvětrání. Úložný prostor pod matrací je uzavřený a bez přístupu vzduchu. Pokud zvolíte matraci s neprodyšným potahem nebo paměťovou pěnou bez ventilace, začne se pod ní tvořit kondenzát a po pár měsících se objeví plíseň. Hledejte matrace s prodyšným potahem, případně s odnímatelným a pratelným svrchním dílem. Do úložného prostoru nikdy neukládejte vlhké věci, i kdyby šlo jen o ručníky po koupeli.
Čelo postele bez vrtání do zdi se dá ukotvit několika způsoby. Rozhoduje hmotnost čela, typ podlahy a to, zda jde o zeď s omítkou, beton, sádrokarton nebo nábytek. Nejprve si změřte, jakou silou bude čelo namáháno při běžném používání. U nízkého dekorativního čela stačí lehké zajištění, u vysokého a těžkého je potřeba počítat s pákou, která tlačí na horní hranu.
Praktický detail, na který se zapomíná: kov vede teplo a chlad, takže kovové desky stolků a opěradla židlí mohou být v zimě nepříjemné. Řešením je dřevěná podložka, textilní běhoun nebo kryt z přírodního materiálu. Zároveň dbejte na údržbu. Dřevo potřebuje vlhkost v místnosti kolem 45–55 procent, jinak praská; kov zase nesnáší vlhké utěrky s agresivními prostředky, které narušují lak a zanechávají skvrny. Stačí suchý hadr a občasné přeleštění.
Začněte obecným zahřátím, které zvýší tep a prokrví svaly. Stačí dvě až tři minuty lehkého pohybu – rychlá chůze, švihadlo, výpady na místě nebo kroužení pažemi. Cílem není zadýchat se, ale nastartovat krevní oběh. Poté přejděte k mobilizaci kloubů. Krouživými pohyby uvolněte ramena, zápěstí, kyčle a hlezenní klouby. Právě zápěstí a prsty jsou při lezení extrémně zatížené a jejich zanedbání se často vrací jako bolestivé záněty.
Nakonec platí, že optimalizace nemá smysl bez zpětné vazby. Zaznamenávejte dobu trvání dotazu, počet volání databáze a velikost odpovědi. Když se tyto hodnoty zhorší, poznáte to dřív, než si toho všimnou uživatelé. GraphQL je nástroj, který dává klientovi moc, ale odpovědnost za výkon zůstává na serveru. Kdo to pochopí, ten nepotřebuje přidávat další servery.
Druhým častým problémem je příliš obecný návrh schématu. Když má jeden typ desítky volitelných polí, klienti si je začnou tahat všechna. Rozdělte schéma podle skutečných scénářů použití a přidejte varianty, které vracají jen to, co daná obrazovka potřebuje. Vyhnete se tak zbytečnému přenosu dat i práci na serveru.
Základem je omezit hloubku a šířku dotazů. GraphQL sám o sobě nebrání klientovi poslat dotaz, který rekurzivně projde celý graf. Nastavte maximální hloubku dotazu a maximální počet polí na úrovni serveru. Stejně důležité je sledovat, kolik různých resolverů se pro jeden dotaz spustí. Pokud jeden dotaz spustí stovky resolverů, je problém v návrhu schématu, ne v rychlosti databáze.
Většina týmů řeší výkon GraphQL tím, že přidá další vrstvu cachování nebo zvětší stroje. To je drahé a často zbytečné. Skutečný problém bývá jinde: dotazy posílají na server příliš mnoho polí, která klient nikdy nepoužije, a resolverů se ptají opakovaně na stejná data. Prvním krokem k optimalizaci proto není infrastruktura, ale měření. Zapněte si trasování jednotlivých resolverů a podívejte se, které dotazy spotřebovávají nejvíc času. Bez tohoto kroku ladíte naslepo.
Problém N+1 se nevyřeší sám Nejčastější chybou je N+1 dotaz, kdy pro každý záznam v seznamu zavoláte databázi zvlášť. V GraphQL to vzniká nenápadně: resolver pole vrátí seznam a resolver uvnitř se ptá znovu. Řešením je dávkování přes dataloader nebo podobný mechanismus, který sesbírá požadavky v rámci jednoho tiknutí smyčky a odešle je najednou. Pozor na to, že dataloader musí být vytvořen pro každý požadavek zvlášť, jinak si klienti navzájem promíchají data a vzniknou těžko odhalitelné chyby.