První commit do open source, který nechcete poslat
Jak se vyhnout nejčastějším chybám při správě databází Třetí oblastí je zálohování a obnova. Mnoho týmů spoléhá na výchozí automatické zálohy, ale ty nemusí pokrývat všechny scénáře, například poškození databáze nebo nechtěné smazání tabulky. Pravidelně testujte obnovu ze zálohy, a to nejen do stejného prostředí, ale i do čisté instance. Ujistěte se, že zálohy jsou uložené na jiném místě, než je produkční server, ideálně ve více regionech, ale pozor na náklady za přenos dat. Zálohujte také konfigurační soubory a migrační skripty, jinak obnovíte data, ale ne strukturu.
Prvním krokem je správná volba algoritmu. Mnoho vývojářů sáhne po algoritmu HS256, protože je jednoduchý, ale vyžaduje sdílený tajný klíč mezi serverem a klientem. To je problém: jakmile klíč unikne, útočník může podepisovat vlastní tokeny. Bezpečnější je použít asymetrický algoritmus RS256 nebo ES256, kde máte privátní klíč pouze na serveru a veřejný klíč distribuujete klientům. Tím eliminujete riziko spojené s kompromitací tajemství. Pokud už ale používáte HS256, dbejte na to, aby klíč byl dostatečně dlouhý a náhodný – minimálně 32 bajtů, ideálně více.
Rychlost načítání webu rozhoduje o tom, zda návštěvník zůstane, nebo odejde ke konkurenci. Pomalé stránky také zhoršují pozici ve vyhledávačích. Optimalizace přitom nemusí být složitá ani drahá. Stačí se zaměřit na pět klíčových oblastí, které přinesou měřitelný výsledek během několika hodin práce.
První chybou, kterou u začínajících projektů vidím, je všechno nacpané do jednoho souboru. Express umožňuje rozdělit aplikaci na moduly, a to byste měli využít. Místo deseti route handlerů v jednom souboru si vytvořte samostatné soubory pro jednotlivé zdroje (například uživatele, produkty, objednávky). Každý soubor exportuje router, který pak připojíte k hlavní aplikaci. Tím získáte přehlednost a každý router můžete testovat samostatně. Nezapomeňte také na oddělení logiky od samotných route handlerů – validaci, práci s databází a byznys logiku držte v samostatných službách nebo middleware.
Konečně, nepodceňujte použití HTTPS. Token putuje v hlavičce Authorization a pokud běží komunikace po nezabezpečeném kanálu, může ho kdokoli odposlechnout. Vždy používejte HTTPS a nikdy token nevkládejte do URL, protože URL se loguje do serverových logů a může se dostat do rukou nepovolaným. Místo toho ho posílejte v hlavičce a vyhněte se i ukládání do localStorage, které je zranitelné vůči XSS. Bezpečnějším místem je cookie s atributem HttpOnly, ale to vyžaduje zvážit ochranu proti CSRF. Celkově platí: JWT je nástroj, ne kouzelná hůlka. Bezpečnost stojí na správné konfiguraci, důkladné validaci a neustálé ostražitosti.
Pátá oblast se týká kapacity a škálování. Kapacitu neplánujte podle současných potřeb, ale podle predikce růstu dat za dalších dvanáct měsíců. Sledujte trendy spotřeby a nastavte si automatické škálování, pokud to vaše infrastruktura umožňuje. Nezapomínejte, že škálování není jen o výkonu, ale i o úložišti – databáze, která se neustále plní, dříve narazí na limit. Typická chyba je kupovat licence nebo instance na základě odhadu, a ne na základě měření, což vede buď k plýtvání, nebo k výpadkům.
Důležité je také zvážit, jaké máš možnosti učení. Prakticky každý větší jazyk má oficiální dokumentaci, ale ta není pro začátečníka vždy stravitelná. Hledej spíše interaktivní tutoriály, kde se hned procvičuje. Dobrým znamením je, když můžeš psát kód v prohlížeči bez instalace. Ušetříš si tak první technické překážky a zaměříš se na logiku. Zároveň si zjisti, jestli existuje česká komunita nebo srazy. Když narazíš na problém, je dobré mít kde rychle získat odpověď.
Zkontrolujte si také počet přesměrování. Každé přesměrování znamená další komunikaci mezi prohlížečem a serverem, a tím i zpoždění. Ujistěte se, že odkazujete přímo na finální adresu, a nepoužívejte zbytečné řetězce, kdy se stránka přesměruje třikrát za sebou. Stejně tak se vyhněte velkému množství pluginů, které do stránky vkládají vlastní skripty. Jeden špatně napsaný doplněk dokáže zpomalit celý web.
S validací souvisí i jednotné zpracování chyb. Express má vestavěný mechanismus pro chybové middleware, který se definuje se čtyřmi argumenty (err, req, res, next). Vytvořte si centrální middleware pro chyby, který zaloguje detailní informace a vrátí klientovi pouze bezpečnou část. Nikdy nevracejte klientovi stack trace nebo interní chyby databáze. Pro produkční prostředí použijte generický formát chyby, který klientovi řekne, co se pokazilo a případně jak to opravit. Pro vývojové prostředí můžete vrátit více detailů.