Jump to content

DevOps pro začátečníky: praktický průvodce prvními kroky: Difference between revisions

From Babylon SIGNALIS Wiki
Created page with "<br>Nejčastější chybou, kterou vidím, je příliš složitý workflow s mnoha kroky, které se opakují. Řešením je rozdělit workflow na více samostatných souborů, nebo použít znovupoužitelné workflow, které se dají volat z jiných workflow. Druhou [https://Pixabay.com/images/search/%C4%8Dastou%20chybou/ častou chybou] je ignorování mezipaměti (cache). Bez cache se každý běh stahuje znovu závislosti, což zpomaluje celý proces. Použijte akci p..."
 
mNo edit summary
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
<br>Nejčastější chybou, kterou vidím, je příliš složitý workflow s mnoha kroky, které se opakují. Řešením je rozdělit workflow na více samostatných souborů, nebo použít znovupoužitelné workflow, které se dají volat z jiných workflow. Druhou [https://Pixabay.com/images/search/%C4%8Dastou%20chybou/ častou chybou] je ignorování mezipaměti (cache). Bez cache se každý běh stahuje znovu závislosti, což zpomaluje celý proces. Použijte akci pro ukládání do mezipaměti podle názvu balíčkového souboru – výrazně to zrychlí instalaci. Také nezapomínejte na časové limity, jinak se běh může zaseknout a spotřebovávat minuty.<br><br>Prvním praktickým krokem je zmapovat si, jak dnes probíhá nasazení kódu do produkce. Sedni si s týmem a projdi si celý proces od commitu až po běžící službu. Zapiš si každý ruční krok, každou čekací dobu a každé místo, kde se něco může rozbít. Typická chyba začátečníků je, že hned začnou automatizovat vše najednou, ale bez jasného obrazu současného stavu jen přesouvají problémy jinam. Začni s jedním malým úsekem třeba s automatickým sestavením aplikace po každé změně kódu. To ti dá rychlou zpětnou vazbu a ukáže, kde jsou úzká hrdla.<br><br>Na závěr: dokumentaci pravidelně testujte. Není nic horšího než dokumentace, která neodpovídá skutečnosti. Pokud máte nástroj na testování API, použijte ho na ověření příkladů z dokumentace. Až frontend narazí na nesoulad, je to signál, že je čas dokumentaci opravit – ne jen pro tento případ, ale preventivně. Dobrá dokumentace není luxus, ale základ, který šetří čas oběma stranám. A když už ji budete psát, pište ji pro čtenáře, ne pro sebe.<br><br>Na závěr si osvojte pravidlo, že workflow by mělo být čitelné a jednoduché. Nešetřete komentáři v YAML, ale vyhněte se dlouhým příkazům v jednom řádku. Pokud workflow selže, vždy si prohlédněte logy a hledejte první chybu – často to bývá špatně zadaná cesta nebo chybějící oprávnění. Postupně si vytvořte šablonu, kterou budete používat napříč projekty, a upravujte jen specifické části. GitHub Actions se tak stane spolehlivým pomocníkem, který vám uvolní ruce pro důležitější práci.<br><br>Na co si dát pozor při prvních pokusech Častou chybou začátečníků je zapomenutí středníku na konci příkazu. Dalším problémem je case sensitivity – v C# záleží na velikosti písmen, takže Console a console jsou rozdílné. Pokud používáte Visual Studio, dbejte na to, aby váš soubor měl příponu .cs. Často dochází k záměně s jinými jazyky jako Java, kde je syntaxe podobná, ale ne stejná. Také si zvykněte na to, že metoda Main musí být statická – pokud ji omylem uděláte instanční, program se nespustí.<br><br>Dalším běžným omylem je používání pokrytí jako jediného kritéria pro přijetí změny do produkce. Mnoho týmů nastaví pevnou hranici, například že každý nový kód musí mít alespoň 90% pokrytí, ale to vede k tomu, že vývojáři píší testy dodatečně, jen aby splnili metriku. Mnohem efektivnější je používat pokrytí jako vodítko pro revize kódu – když vidíte, že nová funkce má nízké pokrytí,  [https://citiesofthedead.net/index.php/Rovnov%C3%A1ha_mezi_jednotkov%C3%BDmi_a_integra%C4%8Dn%C3%ADmi_testy_p%C5%99i_r%C5%AFstu_projektu Rady Pro Rekonstrukci] je to signál pro diskuzi, zda jsou testy dostatečné, místo abyste automaticky blokovali merge. Pokrytí by mělo být nástrojem pro zlepšování, ne bičem.<br><br>Pokud pracujete s vzdáleným úložištěm (např. na serveru), naučte se synchronizovat. To znamená odesílat své commity nahoru a stahovat změny od ostatních. Před odesláním si vždy nejdřív stáhněte aktuální stav a slučte ho s vašimi změnami lokálně. Ignorování tohoto pořadí vede ke zbytečným konfliktům a někdy i ke ztrátě práce. Dobrým zvykem je také dělat menší a časté commity, ne čekat týden a pak odeslat obrovskou dávku změn.<br><br>DevOps není nástroj ani pozice, ale způsob myšlení a spolupráce. Spojuje vývoj aplikací s jejich provozem, aby tým dodával software rychleji a spolehlivěji. Pro začátek si nepotřebuješ pořizovat žádný speciální software – stačí změnit přístup a zavést pár konkrétních postupů. Klíčové je přestat vnímat vývoj a provoz jako dvě oddělené skupiny, které si předávají práci přes zeď. Místo toho se učíš myslet [https://politiballwiki.net/wiki/Prvn%c3%ad_kroky_k_vlastn%c3%ad_android%c3%ad_aplikaci úložné prostory v malém bytě] malých krocích, automatizovat opakující se činnosti a měřit výsledky.<br><br>Základní struktura a spouštěcí události Workflow začíná definicí názvu a spouštěcích událostí. Nejčastěji používáte událost push na konkrétní větev, ale můžete ji kombinovat s pull_request, schedule nebo ručním spuštěním. Důležité je uvědomit si, že každá událost vytváří nový běh, který má vlastní číslo a historii. Pokud chcete omezit počet paralelních běhů, použijte concurrency. Tím zabráníte situaci, kdy více commitů spustí konfliktní nasazení. Pro práci s více verzemi aplikace je vhodné definovat matici (matrix) s různými verzemi Node. For more information regarding [https://Politiballwiki.net/wiki/Vstup_do_testov%c3%a1n%c3%ad_bez_p%c5%99edchoz%c3%ad_praxe:_n%c3%a1vod více informací najdete zde] stop by our internet site. js, Pythonu nebo jiných runtime prostředí.<br>
Při psaní kódu se vyhnete častému problému, pokud budete dbát na správné použití volitelných typů. Swift je striktní na nil hodnoty, a pokud se pokusíte pracovat s volitelnou proměnnou bez rozbalení, kompilátor vám to nedovolí. Mnozí začátečníci používají k vynucenému rozbalení vykřičník (!), což je riskantní. Pokud hodnota není přítomná, aplikace spadne. Místo toho používejte if let nebo guard let pro bezpečné rozbalení. Tento návyk vám ušetří hodiny ladění.<br><br>Pozor na používání DISTINCT, které často maskuje chybu v JOINu, kdy se řádky zbytečně násobí. Pokud vidíte DISTINCT, zeptejte se, proč tam je. Obvykle je lepší spojení upravit tak, aby nebylo potřeba. Také se vyhněte používání funkcí na agregovaných sloupcích v WHERE, protože to nutí databázi zpracovat všechna data. Místo toho použijte HAVING, ale pamatujte, že HAVING se aplikuje až po agregaci, takže je pomalejší než WHERE.<br><br>Při používání Reduxu v Reactu je také důležité správně používat hooky useDispatch a useSelector. Vyhněte se volání useDispatch v každé komponentě, pokud to není nutné – místo toho můžete předávat dispatch přes props, ale to vede k prop-drilling. V praxi je lepší použít useDispatch přímo v komponentě, ale mějte na paměti, že dispatch funkce je stabilní a nemění se. Pro výběr dat používejte useSelector s co nejmenším výběrem nevybírejte celý state, ale pouze konkrétní část. To minimalizuje počet rerenderů.<br><br>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.<br><br>Nakonec si zvykněte na limitování výsledků. Pokud potřebujete jen prvních sto řádků, použijte LIMIT. Databáze pak může ukončit zpracování dřív, než projde celou tabulku. Stejně tak se vyhněte přenosu obrovských datasetů do aplikace – zpracujte agregace na straně databáze. Pravidelně čistěte staré záznamy, ale pokud to není nutné, nearchivujte do stejné tabulky. Udržování tabulek v dobré kondici – bez fragmentace – také pomůže.<br><br>DevOps není nástroj ani pozice, ale způsob myšlení a spolupráce. Spojuje vývoj (Development) a provoz (Operations) do jednoho procesu, kde se automatizace, měření a sdílení odpovědnosti stávají standardem. Pokud s DevOps začínáte, klíčové je nejprve pochopit, že cílem není „koupit DevOps", ale změnit kulturu týmu. Začněte malými krůčky: vyberte si jeden projekt, kde můžete automatizovat nasazení, a postupně přidávejte další prvky.<br><br>Dalším krokem je kontinuální integrace a doručování (CI/CD). Vytvořte pipeline, která automaticky sestaví aplikaci, spustí testy a nasadí ji do testovacího prostředí. Nejdřív nasazujte jen do stagingu, až po stabilizaci i do produkce. Typickou chybou začátečníků je snaha o dokonalou automatizaci hned napoprvé. Mnohem lepší je začít s jednoduchým skriptem, který funguje, a postupně ho vylepšovat. Deploye dělejte častěji, ale v menších dávkách – usnadní to hledání chyb.<br><br>Kde začít: od automatizace po monitoring Prvním praktickým krokem je zavedení verzování kódu, pokud ho už nemáte. Všichni členové týmu musí pracovat s větvemi a pravidelně mergovat změny. Následně nastavte automatizované testy – spouštějte je při každém commitu, abyste chyby odhalili co nejdříve. Důležité je také sjednotit prostředí: použijte kontejnery, aby vývojář, tester i produkce běželi na stejném základu. Tím eliminujete klasický problém „u mě to funguje".<br><br>Struktura projektu a základní koncepty Po vytvoření projektu uvidíte soubory s příponou .swift. Hlavní logika aplikace se píše do tříd, které dědí z UIViewController neboSwiftUI View. Pokud používáte SwiftUI, deklarativní syntaxe vám umožní popsat rozhraní pomocí jednoduchých struktur. UIKit je naopak imperativní a vyžaduje více kódu pro správu životního cyklu obrazovek. Pro začátek je vhodné zvolit SwiftUI, protože je modernější a méně náchylné k chybám při správě paměti. Přesto se vyplatí rozumět oběma frameworkům, protože mnoho existujících projektů stále používá UIKit.<br><br>Poslední rada: sledujte metriky, ale ne ty povrchní. Nesledujte jen, kolik nasazení proběhne za týden. Sledujte, jak rychle se daří obnovit službu po výpadku, jak dlouho trvá projít od změny kódu po produkci a jak často dochází k selhání nasazení. Tyto ukazatele vám řeknou víc než počet automatizovaných testů. Až budete mít vše stabilní, můžete postupně rozšiřovat rozsah – přidávat další prostředí, další týmy a další automatizaci.

Latest revision as of 18:49, 21 August 2026

Při psaní kódu se vyhnete častému problému, pokud budete dbát na správné použití volitelných typů. Swift je striktní na nil hodnoty, a pokud se pokusíte pracovat s volitelnou proměnnou bez rozbalení, kompilátor vám to nedovolí. Mnozí začátečníci používají k vynucenému rozbalení vykřičník (!), což je riskantní. Pokud hodnota není přítomná, aplikace spadne. Místo toho používejte if let nebo guard let pro bezpečné rozbalení. Tento návyk vám ušetří hodiny ladění.

Pozor na používání DISTINCT, které často maskuje chybu v JOINu, kdy se řádky zbytečně násobí. Pokud vidíte DISTINCT, zeptejte se, proč tam je. Obvykle je lepší spojení upravit tak, aby nebylo potřeba. Také se vyhněte používání funkcí na agregovaných sloupcích v WHERE, protože to nutí databázi zpracovat všechna data. Místo toho použijte HAVING, ale pamatujte, že HAVING se aplikuje až po agregaci, takže je pomalejší než WHERE.

Při používání Reduxu v Reactu je také důležité správně používat hooky useDispatch a useSelector. Vyhněte se volání useDispatch v každé komponentě, pokud to není nutné – místo toho můžete předávat dispatch přes props, ale to vede k prop-drilling. V praxi je lepší použít useDispatch přímo v komponentě, ale mějte na paměti, že dispatch funkce je stabilní a nemění se. Pro výběr dat používejte useSelector s co nejmenším výběrem – nevybírejte celý state, ale pouze konkrétní část. To minimalizuje počet rerenderů.

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.

Nakonec si zvykněte na limitování výsledků. Pokud potřebujete jen prvních sto řádků, použijte LIMIT. Databáze pak může ukončit zpracování dřív, než projde celou tabulku. Stejně tak se vyhněte přenosu obrovských datasetů do aplikace – zpracujte agregace na straně databáze. Pravidelně čistěte staré záznamy, ale pokud to není nutné, nearchivujte do stejné tabulky. Udržování tabulek v dobré kondici – bez fragmentace – také pomůže.

DevOps není nástroj ani pozice, ale způsob myšlení a spolupráce. Spojuje vývoj (Development) a provoz (Operations) do jednoho procesu, kde se automatizace, měření a sdílení odpovědnosti stávají standardem. Pokud s DevOps začínáte, klíčové je nejprve pochopit, že cílem není „koupit DevOps", ale změnit kulturu týmu. Začněte malými krůčky: vyberte si jeden projekt, kde můžete automatizovat nasazení, a postupně přidávejte další prvky.

Dalším krokem je kontinuální integrace a doručování (CI/CD). Vytvořte pipeline, která automaticky sestaví aplikaci, spustí testy a nasadí ji do testovacího prostředí. Nejdřív nasazujte jen do stagingu, až po stabilizaci i do produkce. Typickou chybou začátečníků je snaha o dokonalou automatizaci hned napoprvé. Mnohem lepší je začít s jednoduchým skriptem, který funguje, a postupně ho vylepšovat. Deploye dělejte častěji, ale v menších dávkách – usnadní to hledání chyb.

Kde začít: od automatizace po monitoring Prvním praktickým krokem je zavedení verzování kódu, pokud ho už nemáte. Všichni členové týmu musí pracovat s větvemi a pravidelně mergovat změny. Následně nastavte automatizované testy – spouštějte je při každém commitu, abyste chyby odhalili co nejdříve. Důležité je také sjednotit prostředí: použijte kontejnery, aby vývojář, tester i produkce běželi na stejném základu. Tím eliminujete klasický problém „u mě to funguje".

Struktura projektu a základní koncepty Po vytvoření projektu uvidíte soubory s příponou .swift. Hlavní logika aplikace se píše do tříd, které dědí z UIViewController neboSwiftUI View. Pokud používáte SwiftUI, deklarativní syntaxe vám umožní popsat rozhraní pomocí jednoduchých struktur. UIKit je naopak imperativní a vyžaduje více kódu pro správu životního cyklu obrazovek. Pro začátek je vhodné zvolit SwiftUI, protože je modernější a méně náchylné k chybám při správě paměti. Přesto se vyplatí rozumět oběma frameworkům, protože mnoho existujících projektů stále používá UIKit.

Poslední rada: sledujte metriky, ale ne ty povrchní. Nesledujte jen, kolik nasazení proběhne za týden. Sledujte, jak rychle se daří obnovit službu po výpadku, jak dlouho trvá projít od změny kódu po produkci a jak často dochází k selhání nasazení. Tyto ukazatele vám řeknou víc než počet automatizovaných testů. Až budete mít vše stabilní, můžete postupně rozšiřovat rozsah – přidávat další prostředí, další týmy a další automatizaci.