Redux v Reactu: praktický průvodce pro čistší stav aplikace
Nejčastější chyby v praxi a jak se jim vyhnout První chybou je psát jednotkové testy, které testují implementaci, ne chování. Když pak změníte vnitřní strukturu metody, testy se zbytečně rozpadnou. Zaměřte se na vstupy a výstupy, ne na to, jak je funkce napsaná. Druhým problémem je přehnané používání mocků – pokud mockujete vše, test pak neověřuje skutečnou spolupráci, ale jen vaše předpoklady. Používejte mocky jen pro hranice systému, jako je databáze nebo externí API.
Docker Compose je další krok, který výrazně zjednodušuje život. Místo dlouhých příkazů s mnoha parametry napíšete soubor docker-compose.yml, ve kterém definujete služby, sítě a svazky. Typickou chybou je definovat databázi a webovou aplikaci jako dva samostatné kontejnery, ale připojit je k sobě přes síť až po spuštění. Compose to zvládne automaticky, pokud obě služby umístíte do stejného souboru. Pozor ale na to, že každý kontejner má vlastní souborový systém. Jakmile v něm smažete data, jsou pryč. Proto vždy používejte takzvané svazky (volumes) pro data, která chcete uchovat, jinak o ně přijdete při každém restartu.
Verzování je disciplína, kterou řada webových vývojářů zpočátku podceňuje. Často začínají ukládat soubory do složek jako „final_v2" nebo „opraveno_final3". Tento přístup ale rychle vede k chaosu, ztrátě práce a neschopnosti vrátit se k funkční verzi. Místo toho se vyplatí osvojit si systém, který sleduje změny v kódu, umožňuje návrat a usnadňuje týmovou spolupráci. Tento článek vás provede základy verzování s důrazem na praktické kroky a časté chyby.
DevOps není nástroj ani konkrétní technologie, ale způsob myšlení a spolupráce. Nejde o to, abyste se naučili pár příkazů, ale o to, abyste propojili vývoj, provoz a testování do jednoho plynulého toku. Jestli s DevOps začínáte, zapomeňte na velké projekty a začněte u malého týmu a jednoho konkrétního problému. Typická chyba je skočit rovnou na automatizaci všeho, aniž byste rozuměli, co vlastně má běžet a kdo za co odpovídá.
S jakými nedostatky se smíříte Než se rozhodnete, věnujte pozornost transakcím a konzistenci. Tradiční SQL poskytuje ACID – atomičnost, konzistenci, izolaci a trvanlivost. V NoSQL toto není vždy zaručeno na úrovni více dokumentů. Většina dokumentových databází podporuje transakce, ale obvykle jen v rámci jednoho dokumentu nebo malého rozsahu. Pokud potřebujete složité operace napříč mnoha záznamy s přísnými zárukami, NoSQL vás může nemile překvapit. Zkuste si před implementací napsat test, který ověří chování v kritických situacích – třeba souběžné zápisy a čtení.
V praxi pomáhá kombinace: použijte SQL pro části aplikace, které vyžadují komplexní vztahy a transakce, a NoSQL pro objemová a flexibilní data. Například e-shop může mít objednávky v SQL, ale katalog produktů s mnoha atributy v dokumentové databázi. Takové oddělení usnadní škálování i údržbu. Před nasazením si ale vždy připravte vývojové prostředí s ostrými daty a otestujte si chování při výpadku uzlu – to je okamžik, kdy se projeví rozdíly mezi konzistencí a dostupností. Vyberte si nástroj, který odpovídá vašim požadavkům na správu, monitorování a podporu v týmu, protože kvalitní technologie bez schopného týmu je jen složitý systém.
Co se týče praktických rad, vždy si ověřte, že obraz, který stahujete, je oficiální a aktualizovaný. Na veřejných registrech najdete tisíce obrazů, ale ne všechny jsou udržované. Spolehněte se na ty, které mají jasný popis a jsou spravované přímo dodavatelem technologie. Dále se vyhněte používání tagu latest pro produkci. I když se to zdá pohodlné, takový obraz se může ze dne na den změnit a vaše aplikace pak přestane fungovat z ničeho nic. Raději používejte konkrétní verze, i když to znamená občasné manuální aktualizace.
Nejdřív si ujasněte, co vlastně verzování řeší. Jde o nástroj, který uchovává historii všech změn v projektu. Díky němu vidíte, kdo, kdy a co upravil, a můžete se kdykoli vrátit k libovolnému stavu. Pro webového vývojáře to znamená hlavně jistotu: experimentovat bez obav, že rozbijete fungující kód. Než začnete, zvolte si systém. Mezi nejpoužívanější patří distribuované systémy, kde má každý vývojář kompletní historii projektu lokálně. To je výhodné pro práci offline i pro rychlé větvení.
Relace a tabulky jsou pro spoustu aplikací pohodlné, ale ne vždy představují optimální řešení. Když narazíte na objemy dat, které přesahují možnosti jednoho serveru, nebo na datový model, který se do tabulek nevejde bez krkolomných konstrukcí, je na místě se porozhlédnout po NoSQL. Nemusí jít hned o kompletní přepis systému; stačí pochopit, kde jsou hranice klasického SQL a co nabízí alternativní přístupy.