Důležité je také zvážit, jak se vaše API bude vyvíjet. REST vyžaduje při změně datového modelu často nový endpoint nebo verzi API, což přináší údržbu a zpětnou kompatibilitu. GraphQL vám umožňuje přidávat nová pole do existujícího schématu bez narušení starších klientů. Pokud ale vaše API poskytuje čistě jednoduché CRUD operace, je GraphQL zbytečně složité — jeho schéma a resolvery přidávají vrstvu abstrakce, která se nevyplatí.
Dalším kritickým bodem je ukládání tokenů na straně klienta. Nejbezpečnější je uchovávat je v paměti aplikace, ale to není vždy praktické. Pokud je nutné token uložit na disku, použijte zabezpečené úložiště, které poskytuje operační systém, a nikoli běžné cookies s dlouhou životností. Pro webové aplikace zvažte použití patternu, kdy je přístupový token krátkodobý a refresh token je uložen v HttpOnly cookie s omezeným rozsahem. Tím minimalizujete riziko krádeže tokenu přes XSS útok.
Komunikace odhadů času patří k nejcitlivějším momentům spolupráce. Zákazník chce jasný termín, vy ale víte, že se může cokoliv změnit. Základem je rozlišovat mezi pojmy „odhad” a „závazek”. Odhad je pracovní hypotéza, závazek je pevný slib. Pokud obojí smícháte, dříve nebo později narazíte. Místo slov „bude hotovo” používejte „předpokládám” nebo „odhaduji”. Tím dáváte najevo, že časový údaj není věštěním z křišťálové koule, ale výsledkem analýzy.
Mezi typické chyby patří také logování tokenů v serverových logách, což může vést k jejich úniku. Nikdy tokeny nezapisujte do výpisů chyb ani do monitorovacích nástrojů. Dále si dejte pozor na to, aby token nebyl součástí URL, protože se může dostat do historie prohlížeče nebo do referrer hlavičky. Vždy jej přenášejte v hlavičce Authorization. Pokud používáte veřejné API, nezapomeňte na řádné omezení rychlosti požadavků a na to, aby tokeny měly minimální oprávnění podle principu nejnižších privilegií.
Jak správně psát JOIN a subdotazy Při spojování tabulek se vyhněte křížovým spojením a dbejte na to, aby každý JOIN měl jasnou podmínku. Vždy spojujte přes indexované klíče. U subdotazů zkuste nejprve myslet na to, jestli je nelze přepsat pomocí JOIN. Například dotaz s IN (SELECT …) může být po přepsání na JOIN rychlejší, ale ne vždy – záleží na databázi a distribuaci dat. Měřte obě verze a porovnejte.
Při výběru se také zamyslete nad bezpečností a výkonem. REST má jednodušší ochranu proti SQL injection a snadněji se loguje — každý endpoint je jasně definovaný. GraphQL má tuto výhodu v tom, že umožňuje granulární autorizaci na úrovni polí, ale zároveň riskujete, že klient pošle dotaz, který vedlejším efektem přetíží server (např. vnořené pole, které cyklicky volá databázi). Musíte proto zavést limity na hloubku dotazu a počet vrácených záznamů — to je častý zdroj chyb u začínajících týmů.
Jak sdělit odhad, aby vzbuzoval důvěru Při sdělování odhadu vždy uveďte, z čeho vycházíte. Klient ocení, když mu řeknete: „Na základě podobných projektů předpokládám, že to zvládneme do tří týdnů.” Tím dáváte najevo, že nejde o náhodné číslo. Zároveň si ověřte, zda klient rozumí tomu, že odhad může kolísat. Navrhněte si společný postup pro případ, že se práce protáhne – klienta informujte předem, ne až ve chvíli, kdy je problém na světě. Pokud cítíte, že klient tlačí na nereálně krátký termín, nebojte se říct, že to nejde, a vysvětlit proč.
Častou chybou je přizpůsobovat odhad představám klienta jen proto, aby se zalíbil. Takový odhad nemá žádnou hodnotu a vede ke ztrátě důvěry. Držte se svých zkušeností, i když se to na první pohled nezdá jako cesta nejmenšího odporu. Vysvětlete, co všechno ovlivňuje délku práce – od dostupnosti podkladů přes technologická omezení až po nutnost koordinace s dalšími lidmi. Tím klient získá lepší představu o tom, proč je odhad takový, jaký je, a nebude ho vnímat jako svévoli.
Na co si dát pozor při výběru Typická chyba začátečníka je skákat mezi jazyky. Dnes zkusíš Python, za týden JavaScript a za měsíc zase Kotlin. Tím se nikam nedostaneš. Vyber si jeden jazyk a drž se ho minimálně tři měsíce, dokud nepochopíš základní pojmy jako proměnné, cykly, podmínky a funkce. Principy jsou ve všech moderních jazycích podobné, takže přechod na další jazyk pak bude hračka. Další pastí je honba za „ideálním” nástrojem. Místo abys programoval, zkoušíš editory, ladicí nástroje a frameworky. To je ztráta času. Pro začátek stačí obyčejný textový editor a příkazová řádka.
Optimalizace SQL dotazů není jen otázkou rychlejší odezvy, ale také stability celé aplikace. Pomalý dotaz totiž blokuje zdroje, které potřebují ostatní operace. Nejčastější chybou bývá vybírání zbytečných sloupců pomocí hvězdičky a absence indexů na sloupcích používaných v podmínkách WHERE. Než začnete cokoli měnit, zapněte si logování pomalých dotazů a změřte si výchozí stav. K tomu se hodí příkaz EXPLAIN, který ukáže, jak databáze plánuje dotaz provést.
For more information about zdroj take a look at our webpage.
