Největší chyba vzniká hned na začátku: tým si vybere NoSQL podle popularity a pak se snaží dotazovat stejně jako v relační databázi. Jenže bez schématu se data snadno rozutečou do mnoha podob a každý dotaz začne skenovat celé kolekce. U dokumentových databází to znamená, že dokumenty rostou do obrovských struktur, které se špatně aktualizují, a u key-value úložišť se zase zvětšuje počet požadavků, protože chybí vhodné seskupení. Výsledkem je vyšší latence a složitější provoz, ne rychlejší aplikace.
Ruční přepisování kódu je nejpomalejší a nejchybovější způsob refaktorování. Přitom většina editorů a vývojových prostředí už obsahuje nástroje, které stejnou práci zvládnou za zlomek času a bez překlepů. Klíčem je vědět, které to jsou a kdy je použít. Nejde o žádné pluginy ani rozšíření — stačí to, co je součástí prostředí od instalace.
Kdy NoSQL dává smysl a kdy ne NoSQL použijte tam, kde je přirozeně hierarchický nebo nepravidelný obsah, kde se mění podoba záznamů a kde potřebujete horizontální škálování zápisu. Typicky jde o katalogy s různými atributy, telemetrii, uživatelské profily, události nebo vztahy v grafech. Naopak pro silně transakční agendu s mnoha vzájemně provázanými tabulkami, složitými joiny a požadavkem na okamžitou konzistenci je relační databáze stále bezpečnější volba. Není to ideologie, ale otázka přístupového vzoru.
Pull request jako kontrola, ne jako formali
Pozor na asynchronní kód. Pokud v handleru použijete await a nastane výjimka, Express ji v některých verzích nezachytí. Řešením je obalovací funkce, která každý async handler obalí do Promise.resolve().catch(next), nebo použijte novější verzi Expressu s nativní podporou. Tento detail patří k nejčastějším zdrojům pádů aplikace.
Třetím krokem je zvážit, jak chcete řešit pozdější změnu podmínek. Některé projekty používají dvojí licencování nebo přechod na novější verzi licence. Pozor na formulace typu „a pozdější verze" – dávají budoucím příjemcům možnost řídit se i verzí, kterou jste při zveřejnění neznali. Pokud chcete mít jistotu, uveďte konkrétní číslo verze licence.
Největší chyba při zavádění NUnit do C# projektu není špatná knihovna, ale představa, že testy jednotek jsou jen formalita. Vývojáři často napíšou pár testů, které ověřují, že metoda vrátí true, a pak jsou překvapeni, že jim testy neodhalí žádnou regresi. NUnit je přitom nástroj, který umí mnohem víc – od parametrizovaných testů přes fixture až po vlastní assertiony. Jen je potřeba vědět, kde se šlápne vedle.
Nakonec myslete na bezpečnost a výkon. Omezte velikost těla požadavku přes express.json( limit: '1mb' ), jinak vám stačí jeden velký požadavek a server spadne. Přidejte helmet pro základní hlavičky a rate limiting proti zahlcení. Statické soubory nechte na reverzní proxy, ne na Expressu. A logujte požadavky včetně doby zpracování – bez toho budete při problému hádat, kde se co zaseklo.
Při větším refaktorování se hodí náhled změn. Většina prostředí umí zobrazit diff ještě před potvrzením — tedy seznam souborů a konkrétní řádky, které se změní. Tento krok nepodceňujte. Právě tady odhalíte, že přejmenování zasáhlo i místo, kde šlo o jiný symbol se stejným názvem. Bez náhledu zjistíte chybu až při kompilaci nebo až v produkci. Náhled je rychlejší než zpětné hledání.
NoSQL není jedna databáze ani univerzální náhrada relačního modelu. Je to soubor přístupů, které se vzdávají pevného schématu a často i části transakčních záruk výměnou za jiný způsob ukládání a dotazování. Mezi hlavní skupiny patří dokumentové databáze, key-value úložiště, širokosloupcové systémy a grafové databáze. Každá z nich řeší jiný typ problému a jinak se v ní navrhují data.
Express je minimální framework nad Node.js, který řeší routing, middleware a parsování požadavků. Většina začátečníků ale skončí u jednoho velkého souboru index.js, kde se míchá vše dohromady. Aby API přežilo první produkční nasazení, vyplatí se držet se několika osvědčených postupů.
U složitějších scénářů se vyplatí [TestCaseSource] nebo [TestCase] s více parametry. Pozor na to, že NUnit spouští testy v nedefinovaném pořadí. Nikdy nespoléhejte na to, že test A proběhne před testem B. Pokud spolu testy potřebují komunikovat, je to znamení, že by měly být jedním testem, nebo že testujete něco, co by mělo být oddělené.
Nejčastější chyba je kombinace ručních a automatických kroků bez kontroly. Když část změníte sami a část necháte na nástroji, vznikne nekonzistentní stav, který se špatně dohledává. Proto refaktorujte po malých celcích, po každém kroku spusťte testy a používejte verzovací systém k tomu, abyste se mohli vrátit. Nástroje nejsou neomylné, ale při dodržení tohoto postupu je ruční přepisování pomalejší a riskantnější ve srovnání s tím, co máte k dispozici přímo v editoru.
Add new comment