DevOps, o kterém většina začátečníků zakopne: Unterschied zwischen den Versionen

Aus Rettungsdienst-Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „Prakticky začněte exportem dat. Použijte nástroje, které umí zapsat data do formátu SQL nebo CSV. U CSV si dejte pozor na oddělovače, kódování a na to, jak jsou reprezentovány binární hodnoty. U SQL dumpu zase na to, zda exportujete strukturu a data odděleně. Před importem do PostgreSQL vypněte kontroly cizích klíčů a indexy – urychlíte tím nahrávání. Indexy a constrainty pak vytvořte až po dokončení importu.<br><br>Záv…“)
 
K
 
Zeile 1: Zeile 1:
Prakticky začněte exportem dat. Použijte nástroje, které umí zapsat data do formátu SQL nebo CSV. U CSV si dejte pozor na oddělovače, kódování a na to, jak jsou reprezentovány binární hodnoty. U SQL dumpu zase na to, zda exportujete strukturu a data odděleně. Před importem do PostgreSQL vypněte kontroly cizích klíčů a indexy – urychlíte tím nahrávání. Indexy a constrainty pak vytvořte až po dokončení importu.<br><br>Závěrem: migrace vyžaduje čas a testování, ale přináší výhody v podobě robustnějších funkcí, lepší práce s JSON a pokročilých indexů. Pokud se vyhnete nejčastějším chybám popsaným výše, přechod zvládnete bez ztráty dat a s minimálním výpadkem.<br><br>Začněte jednou službou, ne celým procesem Nejčastější chyba je pokusit se zautomatizovat všechno najednou. Místo toho si vyberte jednu malou aplikaci, která se nasazuje často, a proveďte ji celým řetězcem: sestavení, test, nasazení, monitoring. K tomu použijte skripty, které zvládnete spustit lokálně, a teprve pak je přeneste do CI. Cílem není dokonalá pipeline, ale rychlá zpětná vazba — pokud něco spadne, musíte to vědět do deseti minut.<br><br>Další past, do které se snadno spadnete, je testování vnitřních implementací. NUnit umožňuje testovat privátní metody přes reflexi, ale to je téměř vždy špatně. Testujte chování z pohledu volajícího, ne vnitřní mechanismy. Pokud potřebujete otestovat privátní logiku, znamená to, že je pravděpodobně příliš složitá a měla by být extrahována do samostatné třídy. V opačném případě budete psát křehké testy, které se rozbijí při každé změně implementace, a to i když se vnější chování nezmění. To vede k frustraci a k tomu, že testy začnete ignorovat.<br><br>Typickou chybou začátečníků je použití NoSQL pro data, která vyžadují vztahy a transakce. Pokud ukládáte faktury a položky faktur, potřebujete zaručit, že se buď uloží celý dokument, nebo se neuloží nic. Většina NoSQL databází sice nabízí transakce, ale jejich použití je často omezené a složitější než v SQL. Než začnete modelovat, ověřte si, jak daný systém řeší atomické operace. Další pastí je špatný výběr typu databáze: dokumentová databáze není vhodná pro grafy vztahů mezi uživateli, klíč-hodnota úložiště neumí efektivně dotazovat podle více atributů. Vždy si nejprve definujte, jak budete data číst, a teprve potom vyberte konkrétní nástroj.<br><br>Samotný import dat zkuste nejprve do prázdné databáze bez cizích klíčů. Pokud import spadne uprostřed, mějte možnost začít znovu – proto vždy pracujte s čerstvým schématem. Po dokončení importu zkontrolujte počty řádků v kritických tabulkách a porovnejte je s původní databází. Pro větší objemy dat se vyplatí rozdělit import na menší dávky, které lze snadno opakovat.<br><br>DevOps není nástroj, který koupíte, ani tým, který založíte. Je to způsob, jakým spolu mluví vývoj a provoz. V praxi to znamená, že vývojář neshazuje kód přes plot a provozář nečeká, až něco exploduje. Pokud začínáte, nejdřív zjistěte, kde se vaše firma zasekává — jestli při nasazování, testování nebo sledování chyb. Bez mapy problému totiž každá automatizace jenom zrychlí zmatek.<br><br>Typickou chybou je přímý přepis SQL dotazů. V PostgreSQL nefunguje LIMIT s čárkou jako v MySQL – musíte použít klauzuli OFFSET. Dále se liší funkce pro práci s řetězci a datem, např. DATE_FORMAT nemá přímou obdobu, používá se TO_CHAR. Pokud ve svých dotazech používáte backticks pro označení sloupců, v PostgreSQL je nahraďte uvozovkami a dbejte na malá a velká písmena, protože PostgreSQL rozlišuje citlivost identifikátorů.<br><br>Když začnete psát jednotkové testy v C# s NUnit, první věc, kterou objevíte, je, že samotné psaní testů není to nejtěžší. Největší úskalí přichází ve chvíli, kdy se testy začnou navzájem ovlivňovat a vy ztrácíte přehled o tom, co vlastně testujete. Typická chyba začátečníků? Sdílení stavu mezi testy. Pokud použijete statickou proměnnou, která se mění v jednom testu a ovlivní výsledek druhého, přestanou být testy izolované. A izolace je základní princip, bez kterého se jednotkové testy mění v noční můru.<br><br>Shrňme si to: NoSQL je výkonný nástroj, ale jeho použití smysl pouze tehdy, když rozumíte jeho omezením. Nevybírejte ho podle popularity, ale podle konkrétních požadavků na škálování, flexibilitu schématu a rychlost vývoje. Pokud váháte, zkuste nejprve prototyp s malým objemem dat a otestujte, jak vám vyhovuje modelování bez pevných tabulek. Často zjistíte, že SQL vám postačí a NoSQL přidá jen zbytečnou složitost. A pokud se rozhodnete pro NoSQL, investujte čas do studia jeho specifik – ušetříte si tím později spoustu bolesti při ladění výkonu.
Další pastí je nesprávné nastavení oprávnění pro token. Pokud potřebujete nasadit na vzdálený server, použijte buď osobní přístupový token, nebo nasadzovací klíč. Nejbezpečnější je vytvořit samostatný deploy token s minimálními právy, který uložíte do Secrets v nastavení repozitáře. Nikdy nedávejte token přímo do YAML souboru, protože by se mohl dostat do historie commitů. Vždy odkazujte na proměnnou, třeba $ secrets.DEPLOY_TOKEN , a v nastavení repozitáře ji definujte.<br><br>Posledním doporučením je testovat pipeline na menší větvi, ne rovnou na main. Vytvořte si větvičku s názvem test-actions, kde si ověříte, že všechny kroky fungují, a teprve poté změnu sloučíte. Tím se vyhnete situaci, kdy rozbijete produkční nasazení kvůli překlepu v YAML. Až budete mít pipeline stabilní, můžete přidat i nasazení do stagingu před produkci, aby se chyby odhalily dřív.<br><br>Stabilita databáze také závisí na správě připojení. Sdílená připojení jsou sice úsporná, ale pokud je aplikace používá nesprávně, může dojít k vyčerpání dostupných připojení a k pádu celého systému. Nastavte si maximální počet připojení, časové limity a nezapomeňte na ověření, že se připojení po dokončení transakce správně uvolňuje. Častou chybou je držet připojení otevřené při dlouhých operacích nebo při čekání na uživatelský vstup – to zbytečně blokuje zdroje a zhoršuje odezvu pro ostatní uživatele.<br><br>Při psaní testů se také vyplatí myslet na to, co přesně testujete. Pokud testujete funkci, která počítá cenu s DPH, netestujte zároveň i databázové spojení. To už je integrační test. Jednotkové testy mají být rychlé, izolované a bez vedlejších efektů. Pokud potřebujete testovat závislost na vnějším systému, použijte mock. Ale mockování má také své úskalí – pokud zamockujete příliš mnoho, test přestane testovat skutečnou logiku a začne testovat jen to, jak jste mock nastavili. Zamockujte jen to, co je nezbytně nutné, a zbytek nechte běžet reálně.<br><br>Nakonec se zamyslete nad tím, co se stane, když databáze přestane být dostupná. Aplikace by měla umět elegantně zpracovat výpadek – zobrazit uživateli srozumitelnou hlášku, uložit rozpracovaná data do dočasného úložiště a po obnovení spojení se synchronizovat. Mít záložní server je sice užitečné, ale pokud aplikace neumí přepnout na něj automaticky, je to jen další komplikace. Naplánujte si scénáře selhání a otestujte je dříve, než k nim dojde v produkčním prostředí.<br><br>Když zákazník požádá o odhad času, většina z nás automaticky vsadí na optimismus. V duchu si řekneme, že to stihneme dřív, a sdělíme termín, který nás pak dostane pod tlak. Výsledek? Zpoždění, omluvy a zákazník, který vám přestane věřit. Přitom stačí změnit způsob, jakým o čase mluvíte, a komunikace se stane nástrojem důvěry místo zdrojem stresu.<br><br>Častou chybou je také snažit se odhadnout čas bez dostatečných informací. Než cokoli slíbíte, zeptejte se na detaily zadání. Čím víc toho víte o rozsahu práce, tím přesnější odhad můžete dát. Pokud informace chybí, řekněte to na rovinu: „Teprve po analýze zadání vám dám konkrétnější termín." Zákazník ocení, že nejednáte naslepo. Když se ale zadání během práce změní, nebojte se odhad aktualizovat. Mlčet až do termínu a pak omlouvat zpoždění je to nejhorší, co můžete udělat. Včasná komunikace o novém odhadu je známkou profesionality.<br><br>Když už máte první službu v CI, zaměřte se na měření. Klíčové metriky nejsou počet nasazení za den, ale doba od nápadu po produkci a frekvence selhání. Zapisujte si čísla do tabulky, ale neanalyzujte je každý den — stačí týdenní revize. Pokud vidíte, že jsou nasazení častější, ale výpadky se nemění, děláte to dobře. Když se ale výpadky začnou množit, přibrzděte a přidejte víc testů, ne další automatizace.<br><br>Jak sestavit efektivní kroky a vyhnout se častým chybám Pište kroky tak, aby byly co nejkratší a nejpřehlednější. Jeden krok by měl dělat jednu věc – checkout, instalace závislostí, testy, build, nasazení. Typickou chybou je kombinovat více příkazů do jednoho kroku, což ztěžuje ladění a případné opakování. Místo toho použijte samostatné kroky s jasným názvem, třeba „npm install" a „npm test". Pokud některý krok selže, GitHub Actions vám ukáže přesně, který to byl, a vy nemusíte procházet celý log.<br><br>Typické chyby, které kazí dojem z aplikace Mezi nejčastější prohřešky patří ignorování stavu načítání. Když uživatel klikne na tlačítko a nic se neděje, má pocit, že se aplikace zasekla. Vždy poskytněte zpětnou vazbu – ať už jde o spinner, změnu barvy tlačítka nebo text „Ukládám…". Stejně důležité je ošetřit chybové stavy: místo obecného „Došlo k chybě" napište konkrétně, co se nepovedlo a jak to uživatel může opravit. Například „Zkontrolujte připojení k internetu" nebo „Zadané heslo je příliš krátké". Uživatel pak nemusí hádat a může problém rychle vyřešit.

Aktuelle Version vom 29. August 2026, 05:21 Uhr

Další pastí je nesprávné nastavení oprávnění pro token. Pokud potřebujete nasadit na vzdálený server, použijte buď osobní přístupový token, nebo nasadzovací klíč. Nejbezpečnější je vytvořit samostatný deploy token s minimálními právy, který uložíte do Secrets v nastavení repozitáře. Nikdy nedávejte token přímo do YAML souboru, protože by se mohl dostat do historie commitů. Vždy odkazujte na proměnnou, třeba $ secrets.DEPLOY_TOKEN , a v nastavení repozitáře ji definujte.

Posledním doporučením je testovat pipeline na menší větvi, ne rovnou na main. Vytvořte si větvičku s názvem test-actions, kde si ověříte, že všechny kroky fungují, a teprve poté změnu sloučíte. Tím se vyhnete situaci, kdy rozbijete produkční nasazení kvůli překlepu v YAML. Až budete mít pipeline stabilní, můžete přidat i nasazení do stagingu před produkci, aby se chyby odhalily dřív.

Stabilita databáze také závisí na správě připojení. Sdílená připojení jsou sice úsporná, ale pokud je aplikace používá nesprávně, může dojít k vyčerpání dostupných připojení a k pádu celého systému. Nastavte si maximální počet připojení, časové limity a nezapomeňte na ověření, že se připojení po dokončení transakce správně uvolňuje. Častou chybou je držet připojení otevřené při dlouhých operacích nebo při čekání na uživatelský vstup – to zbytečně blokuje zdroje a zhoršuje odezvu pro ostatní uživatele.

Při psaní testů se také vyplatí myslet na to, co přesně testujete. Pokud testujete funkci, která počítá cenu s DPH, netestujte zároveň i databázové spojení. To už je integrační test. Jednotkové testy mají být rychlé, izolované a bez vedlejších efektů. Pokud potřebujete testovat závislost na vnějším systému, použijte mock. Ale mockování má také své úskalí – pokud zamockujete příliš mnoho, test přestane testovat skutečnou logiku a začne testovat jen to, jak jste mock nastavili. Zamockujte jen to, co je nezbytně nutné, a zbytek nechte běžet reálně.

Nakonec se zamyslete nad tím, co se stane, když databáze přestane být dostupná. Aplikace by měla umět elegantně zpracovat výpadek – zobrazit uživateli srozumitelnou hlášku, uložit rozpracovaná data do dočasného úložiště a po obnovení spojení se synchronizovat. Mít záložní server je sice užitečné, ale pokud aplikace neumí přepnout na něj automaticky, je to jen další komplikace. Naplánujte si scénáře selhání a otestujte je dříve, než k nim dojde v produkčním prostředí.

Když zákazník požádá o odhad času, většina z nás automaticky vsadí na optimismus. V duchu si řekneme, že to stihneme dřív, a sdělíme termín, který nás pak dostane pod tlak. Výsledek? Zpoždění, omluvy a zákazník, který vám přestane věřit. Přitom stačí změnit způsob, jakým o čase mluvíte, a komunikace se stane nástrojem důvěry místo zdrojem stresu.

Častou chybou je také snažit se odhadnout čas bez dostatečných informací. Než cokoli slíbíte, zeptejte se na detaily zadání. Čím víc toho víte o rozsahu práce, tím přesnější odhad můžete dát. Pokud informace chybí, řekněte to na rovinu: „Teprve po analýze zadání vám dám konkrétnější termín." Zákazník ocení, že nejednáte naslepo. Když se ale zadání během práce změní, nebojte se odhad aktualizovat. Mlčet až do termínu a pak omlouvat zpoždění je to nejhorší, co můžete udělat. Včasná komunikace o novém odhadu je známkou profesionality.

Když už máte první službu v CI, zaměřte se na měření. Klíčové metriky nejsou počet nasazení za den, ale doba od nápadu po produkci a frekvence selhání. Zapisujte si čísla do tabulky, ale neanalyzujte je každý den — stačí týdenní revize. Pokud vidíte, že jsou nasazení častější, ale výpadky se nemění, děláte to dobře. Když se ale výpadky začnou množit, přibrzděte a přidejte víc testů, ne další automatizace.

Jak sestavit efektivní kroky a vyhnout se častým chybám Pište kroky tak, aby byly co nejkratší a nejpřehlednější. Jeden krok by měl dělat jednu věc – checkout, instalace závislostí, testy, build, nasazení. Typickou chybou je kombinovat více příkazů do jednoho kroku, což ztěžuje ladění a případné opakování. Místo toho použijte samostatné kroky s jasným názvem, třeba „npm install" a „npm test". Pokud některý krok selže, GitHub Actions vám ukáže přesně, který to byl, a vy nemusíte procházet celý log.

Typické chyby, které kazí dojem z aplikace Mezi nejčastější prohřešky patří ignorování stavu načítání. Když uživatel klikne na tlačítko a nic se neděje, má pocit, že se aplikace zasekla. Vždy poskytněte zpětnou vazbu – ať už jde o spinner, změnu barvy tlačítka nebo text „Ukládám…". Stejně důležité je ošetřit chybové stavy: místo obecného „Došlo k chybě" napište konkrétně, co se nepovedlo a jak to uživatel může opravit. Například „Zkontrolujte připojení k internetu" nebo „Zadané heslo je příliš krátké". Uživatel pak nemusí hádat a může problém rychle vyřešit.