Jak začít s DevOps a neztratit se v pojmech

From Rikkiepedia
Revision as of 17:36, 21 August 2026 by MindaHutcheson6 (talk | contribs) (Created page with "Než napíšete první unit test, zapomeňte na představu, že testy jsou něco navíc. Jsou to spustitelné dokumentace vašeho kódu. Začněte u malé, izolované funkce, která nemá vedlejší účinky. Ideální je čistá funkce, která přijímá vstup a vrací výstup. Vyhněte se psaní testů pro třídy s databází, souborovým systémem nebo síťovými voláními. To je integrační testování a na to budete potřebovat jiné nástroje.<br><br>Pro každo...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Než napíšete první unit test, zapomeňte na představu, že testy jsou něco navíc. Jsou to spustitelné dokumentace vašeho kódu. Začněte u malé, izolované funkce, která nemá vedlejší účinky. Ideální je čistá funkce, která přijímá vstup a vrací výstup. Vyhněte se psaní testů pro třídy s databází, souborovým systémem nebo síťovými voláními. To je integrační testování a na to budete potřebovat jiné nástroje.

Pro každou feature větev platí zásada: měla by být krátkodobá a zaměřená na jednu konkrétní funkcionalitu. Pokud potřebujete pracovat na více nezávislých úpravách, které spolu nesouvisí, rozdělte je do samostatných větví. Vyhnete se tak situaci, kdy jedna větev obsahuje směs nesouvisejících změn a je obtížné ji reviewovat i případně vrátit zpět. Pravidelně provádějte merge z hlavní větve do své feature větve, abyste minimalizovali rozdíly a usnadnili si finální merge. Tím také včas odhalíte případné konflikty.

Začněte tím, že si definujete tři oblasti, na které se budete ptát: co funguje, co nefunguje a co bychom chtěli zkusit. Tyto oblasti napište na tabuli nebo do sdíleného dokumentu a dejte každému 5–10 minut na tiché zapsání svých postřehů. Teprve poté otevřete diskusi. Tento postup zabrání tomu, aby se první řečník stal hlavním tématem a ostatní se k němu jen přidávali. Každý bod pak procházejte jednotlivě a ptejte se: „Co konkrétně jsi tím myslel?" nebo „Jak to vidíš, že bychom to mohli změnit?"

Nakonec si osvojte techniku re-estimace – přehodnocení odhadů během sprintu. Agilní týmy často dělají chybu, že odhad berou jako neměnný rozsudek. Ale pokud zjistíte, že analýza trvá déle, než se čekalo, okamžitě to komunikujte a upravte plán. Stejně tak po dokončení sprintu porovnejte odhad se skutečností a kalibrujte budoucí odhady. Tento zpětnovazební cyklus je důležitější než samotný odhad – jinak budete stále dokola opakovat stejné chyby.

Až budete mít stabilní základ, rozšiřte automatizaci na monitorování a sběr logů. Ale ani tady nehledejte nástroj, který umí všechno. Vezměte to, co už máte, a pořádně to propojte. Vytvořte jednoduchý dashboard, na který se tým dívá ráno a večer. Pokud vás něco napadne a chcete to vyzkoušet, udělejte to na malém nezávislém projektu. To je nejlepší způsob, jak se učit, protože případná chyba nepoškodí produkci. A hlavně – DevOps není cíl, ale neustálé zlepšování. Nebojte se experimentovat a měnit procesy podle toho, co tým skutečně potřebuje.

Verzování kódu při paralelním vývoji více feature větví je častým zdrojem konfliktů a ztráty času. Klíčem k efektivní práci je disciplína a jasná pravidla, která platí pro celý tým. Než začnete s jakoukoli větví, ujistěte se, že máte aktuální stav hlavní větve a že vaše lokální změny jsou založeny na stabilním bodu. Ideálně si před vytvořením nové větve stáhněte nejnovější změny z remote a vytvořte větev až z aktuálního stavu. Tím se vyhnete zbytečným konfliktům, které vznikají při mergování starých větví.

Pytest také umožňuje parametrizaci testů, což je skvělý způsob, jak otestovat mnoho kombinací vstupů bez psaní duplicitního kódu. Pomocí @pytest.mark.parametrize nadefinujete seznam hodnot a funkcí, která je postupně projde. To se hodí pro hraniční případy, jako je prázdný řetězec, nula, záporná čísla nebo prázdný seznam. Díky parametrizaci získáte lepší pokrytí a při selhání hned víte, která konkrétní kombinace nefunguje.

Odhad času v agilním vývoji je vždy kompromisem mezi přesností a rychlostí. Než začnete plánovat, rozdělte si práci na dvě základní kategorie: analytické fáze (průzkum, návrh, specifikace) a implementaci (kódění, testování, nasazení). Každá z nich má jiné riziko a nejistotu, a proto je nelze odhadovat stejným metrem. Analytika obvykle zabere méně času, ale chyba v ní se promítne do celé implementace – pokud podceníte návrh, v kódu to doženete dvojnásobně.

Praktický postup: naplánujte analytiku jako samostatný sprint před implementací, nebo jako první část sprintu. Pokud máte dvoutýdenní sprint, vyhraňte první dva až tři dny na analýzu a zbytek na kódění. Ale pozor – nikdy nenechávejte analytiku „plavat" bez časového limitu. Analytik by měl mít jasný deadline, jinak se fáze nekonečně protahuje. Deadliny ale nesmí být příliš těsné – typická chyba je, že analytik stihne návrh na poslední chvíli a vývojář nestihne zpětnou vazbu.

Pokud chcete jít hlouběji, vyzkoušejte tzv. „5 Whys" – na každý problém se ptejte pětkrát „proč", dokud nedojdete k příčině. Například: „Proč jsme nestihli deadline?" – „Protože jsme museli opravovat chyby z minula." – „Proč vznikly ty chyby?" – „Protože jsme neměli dost času na testování." – „Proč jsme neměli čas?" Takto se dostanete k systémovému problému, který se dá řešit. Typická chyba je, že se zastavíte u první odpovědi a hned skočíte k řešení.