<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.rettungsdienstblog.eu/index.php?action=history&amp;feed=atom&amp;title=DevOps%2C_o_kter%C3%A9m_v%C4%9Bt%C5%A1ina_za%C4%8D%C3%A1te%C4%8Dn%C3%ADk%C5%AF_zakopne</id>
	<title>DevOps, o kterém většina začátečníků zakopne - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.rettungsdienstblog.eu/index.php?action=history&amp;feed=atom&amp;title=DevOps%2C_o_kter%C3%A9m_v%C4%9Bt%C5%A1ina_za%C4%8D%C3%A1te%C4%8Dn%C3%ADk%C5%AF_zakopne"/>
	<link rel="alternate" type="text/html" href="https://wiki.rettungsdienstblog.eu/index.php?title=DevOps,_o_kter%C3%A9m_v%C4%9Bt%C5%A1ina_za%C4%8D%C3%A1te%C4%8Dn%C3%ADk%C5%AF_zakopne&amp;action=history"/>
	<updated>2026-09-23T14:23:46Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Rettungsdienst-Wiki</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://wiki.rettungsdienstblog.eu/index.php?title=DevOps,_o_kter%C3%A9m_v%C4%9Bt%C5%A1ina_za%C4%8D%C3%A1te%C4%8Dn%C3%ADk%C5%AF_zakopne&amp;diff=205262&amp;oldid=prev</id>
		<title>Lachlan82L am 29. August 2026 um 05:21 Uhr</title>
		<link rel="alternate" type="text/html" href="https://wiki.rettungsdienstblog.eu/index.php?title=DevOps,_o_kter%C3%A9m_v%C4%9Bt%C5%A1ina_za%C4%8D%C3%A1te%C4%8Dn%C3%ADk%C5%AF_zakopne&amp;diff=205262&amp;oldid=prev"/>
		<updated>2026-08-29T05:21:43Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 29. August 2026, 05:21 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Zeile 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Prakticky začněte exportem dat&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Použijte nástroje&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;které umí zapsat data do formátu SQL &lt;/del&gt;nebo &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;CSV&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;U CSV si dejte pozor na oddělovače&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;kódování a na to, jak jsou reprezentovány binární hodnoty&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;U SQL dumpu zase na to&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zda exportujete strukturu a data odděleně. Před importem &lt;/del&gt;do &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;PostgreSQL vypněte kontroly cizích klíčů a indexy – urychlíte tím nahrávání&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Indexy a constrainty pak vytvořte až po dokončení importu.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Závěrem: migrace vyžaduje čas a testování&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ale přináší výhody v podobě robustnějších funkcí, lepší práce s JSON a pokročilých indexů&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pokud se vyhnete nejčastějším chybám popsaným výše&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;přechod zvládnete bez ztráty dat &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;s minimálním výpadkem&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Začněte jednou službou&lt;/del&gt;, ne &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;celým procesem Nejčastější chyba je pokusit se zautomatizovat všechno najednou&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Místo toho &lt;/del&gt;si &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;vyberte jednu malou aplikaci, která se nasazuje často, a proveďte ji celým řetězcem: sestavení, &lt;/del&gt;test, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;nasazení&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;monitoring. K tomu použijte skripty, které zvládnete spustit lokálně&lt;/del&gt;, a teprve &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pak je přeneste do CI&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Cílem není dokonalá &lt;/del&gt;pipeline, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ale rychlá zpětná vazba — pokud něco spadne&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;musíte to vědět do deseti minut&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Další past, do které se snadno spadnete, je testování vnitřních implementací&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;NUnit umožňuje testovat privátní metody přes reflexi&lt;/del&gt;, ale &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;to &lt;/del&gt;je &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;téměř vždy špatně. Testujte chování z pohledu volajícího&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ne vnitřní mechanismy&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pokud potřebujete otestovat privátní logiku&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;znamená to&lt;/del&gt;, že je &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;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í &lt;/del&gt;při &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;každé změně implementace, a &lt;/del&gt;to &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;i když se vnější chování nezmění. To vede k frustraci &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;k tomu, že testy začnete ignorovat&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Typickou chybou začátečníků &lt;/del&gt;je &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;použití NoSQL pro data&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;která vyžadují vztahy &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;transakce&lt;/del&gt;. Pokud &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ukládáte faktury a položky faktur, &lt;/del&gt;potřebujete &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zaručit&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;že se buď uloží celý dokument, nebo se neuloží nic&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Většina NoSQL databází sice nabízí transakce&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ale jejich použití je často omezené &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;složitější než v SQL. Než začnete modelovat, ověřte si&lt;/del&gt;, jak &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;daný systém řeší atomické operace&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Další pastí &lt;/del&gt;je &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;š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&lt;/del&gt;, a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;teprve potom vyberte konkrétní nástroj&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Samotný import dat zkuste nejprve &lt;/del&gt;do &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;prázdné databáze bez cizích klíčů&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pokud import spadne uprostřed&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mějte možnost začít znovu – proto vždy pracujte s čerstvým schématem&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Po dokončení importu zkontrolujte počty řádků v kritických tabulkách &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;porovnejte &lt;/del&gt;je &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;s původní databází. Pro větší objemy dat se vyplatí rozdělit import na menší dávky&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;které lze snadno opakovat&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;DevOps není nástroj&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;který koupíte&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ani tým, který založíte. Je &lt;/del&gt;to &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;způsob&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;jakým spolu mluví vývoj &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;provoz&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;V praxi to znamená&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;že vývojář neshazuje kód přes plot &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;provozář nečeká&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;až něco exploduje&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pokud začínáte&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;nejdřív zjistěte&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;kde &lt;/del&gt;se &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;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&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Typickou &lt;/del&gt;chybou je &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;přímý přepis SQL dotazů&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;V PostgreSQL nefunguje LIMIT s čárkou jako v MySQL – musíte použít klauzuli OFFSET. Dále &lt;/del&gt;se &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;liší funkce pro práci s řetězci a datem, např&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;DATE_FORMAT nemá přímou obdobu&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;používá se TO_CHAR&lt;/del&gt;. Pokud &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ve svých dotazech používáte backticks pro označení sloupců&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v PostgreSQL je nahraďte uvozovkami a dbejte &lt;/del&gt;na &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;malá &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;velká písmena&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;protože PostgreSQL rozlišuje citlivost identifikátorů&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Když &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;začnete psát jednotkové testy &lt;/del&gt;v &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;C# s NUnit&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;první věc&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;kterou objevíte&lt;/del&gt;, je, že &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;samotné psaní testů není &lt;/del&gt;to &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;nejtěžší&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Největší úskalí přichází ve chvíli, kdy &lt;/del&gt;se &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;testy &lt;/del&gt;začnou &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;navzájem ovlivňovat &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;vy ztrácíte přehled o tom&lt;/del&gt;, co &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;vlastně testujete&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Typická chyba začátečníků? Sdílení stavu mezi &lt;/del&gt;testy. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pokud použijete statickou proměnnou&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;která se mění v jednom testu &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ovlivní výsledek druhého&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;přestanou být testy izolované&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;A izolace je základní princip&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;bez kterého se jednotkové testy mění v noční můru&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Shrňme si to: NoSQL je výkonný nástroj&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ale jeho použití &lt;/del&gt;má &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;smysl pouze tehdy&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;když rozumíte jeho omezením&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Nevybírejte ho podle popularity&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ale podle konkrétních požadavků na škálování, flexibilitu schématu a rychlost vývoje&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pokud váháte&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zkuste nejprve prototyp s malým objemem dat &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;otestujte, &lt;/del&gt;jak &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;vám vyhovuje modelování bez pevných tabulek&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Často zjistíte, že SQL vám postačí &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;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&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Další pastí je nesprávné nastavení oprávnění pro token&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pokud potřebujete nasadit na vzdálený server, použijte buď osobní přístupový token&lt;/ins&gt;, nebo &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;nasadzovací klíč&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Nejbezpečnější je vytvořit samostatný deploy token s minimálními právy&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;který uložíte do Secrets v nastavení repozitáře&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Nikdy nedávejte token přímo do YAML souboru&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;protože by se mohl dostat &lt;/ins&gt;do &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;historie commitů&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Vždy odkazujte na proměnnou&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;třeba $ secrets&lt;/ins&gt;.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;DEPLOY_TOKEN &lt;/ins&gt;, a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;v nastavení repozitáře ji definujte&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Posledním doporučením je testovat pipeline na menší větvi&lt;/ins&gt;, ne &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;rovnou na main&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Vytvořte &lt;/ins&gt;si &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;větvičku s názvem &lt;/ins&gt;test&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;-actions&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;kde si ověříte&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;že všechny kroky fungují&lt;/ins&gt;, a teprve &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;poté změnu sloučíte. Tím se vyhnete situaci, kdy rozbijete produkční nasazení kvůli překlepu v YAML&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Až budete mít &lt;/ins&gt;pipeline &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;stabilní&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;můžete přidat i nasazení do stagingu před produkci&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;aby se chyby odhalily dřív&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Stabilita databáze také závisí na správě připojení&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Sdílená připojení jsou sice úsporná&lt;/ins&gt;, ale &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pokud &lt;/ins&gt;je &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;aplikace používá nesprávně&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;může dojít k vyčerpání dostupných připojení a k pádu celého systému&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Nastavte si maximální počet připojení&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;časové limity a nezapomeňte na ověření&lt;/ins&gt;, že &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;se připojení po dokončení transakce správně uvolňuje. Častou chybou &lt;/ins&gt;je &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;držet připojení otevřené při dlouhých operacích nebo &lt;/ins&gt;při &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;čekání na uživatelský vstup – &lt;/ins&gt;to &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zbytečně blokuje zdroje &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zhoršuje odezvu pro ostatní uživatele&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;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ž &lt;/ins&gt;je &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;integrační test. Jednotkové testy mají být rychlé&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;izolované &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;bez vedlejších efektů&lt;/ins&gt;. Pokud potřebujete &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;testovat závislost na vnějším systému&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;použijte mock&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Ale mockování má také své úskalí – pokud zamockujete příliš mnoho&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;test přestane testovat skutečnou logiku &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;začne testovat jen to&lt;/ins&gt;, jak &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;jste mock nastavili&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Zamockujte jen to, co &lt;/ins&gt;je &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;nezbytně nutné&lt;/ins&gt;, a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zbytek nechte běžet reálně&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;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 &lt;/ins&gt;do &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;dočasného úložiště a po obnovení spojení se synchronizovat&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Mít záložní server je sice užitečné, ale pokud aplikace neumí přepnout na něj automaticky&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;je to jen další komplikace&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Naplánujte si scénáře selhání &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;otestujte &lt;/ins&gt;je &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;dříve&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;než k nim dojde v produkčním prostředí&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Když zákazník požádá o odhad času&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;většina z nás automaticky vsadí na optimismus. V duchu si řekneme&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;že &lt;/ins&gt;to &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;stihneme dřív&lt;/ins&gt;, a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;sdělíme termín, který nás pak dostane pod tlak&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Výsledek? Zpoždění&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;omluvy &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zákazník&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;který vám přestane věřit&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Přitom stačí změnit způsob&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;jakým o čase mluvíte&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;a komunikace &lt;/ins&gt;se &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;stane nástrojem důvěry místo zdrojem stresu&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Častou &lt;/ins&gt;chybou je &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;také snažit se odhadnout čas bez dostatečných informací&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Než cokoli slíbíte, zeptejte &lt;/ins&gt;se &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;na detaily zadání&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Čím víc toho víte o rozsahu práce&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;tím přesnější odhad můžete dát&lt;/ins&gt;. Pokud &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;informace chybí&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;řekněte to &lt;/ins&gt;na &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;rovinu: „Teprve po analýze zadání vám dám konkrétnější termín.&amp;quot; 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 &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pak omlouvat zpoždění je to nejhorší&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;co můžete udělat. Včasná komunikace o novém odhadu je známkou profesionality&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Když &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;už máte první službu &lt;/ins&gt;v &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;CI&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zaměřte se na měření. Klíčové metriky nejsou počet nasazení za den&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ale doba od nápadu po produkci a frekvence selhání. Zapisujte si čísla do tabulky&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ale neanalyzujte &lt;/ins&gt;je &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;každý den — stačí týdenní revize. Pokud vidíte&lt;/ins&gt;, že &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;jsou nasazení častější, ale výpadky se nemění, děláte &lt;/ins&gt;to &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;dobře&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Když &lt;/ins&gt;se &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ale výpadky &lt;/ins&gt;začnou &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;množit, přibrzděte a přidejte víc testů, ne další automatizace.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Jak sestavit efektivní kroky &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;vyhnout se častým chybám Pište kroky tak&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;aby byly &lt;/ins&gt;co &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;nejkratší a nejpřehlednější&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Jeden krok by měl dělat jednu věc – checkout, instalace závislostí, &lt;/ins&gt;testy&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, build, nasazení&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Typickou chybou je kombinovat více příkazů do jednoho kroku&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;což ztěžuje ladění &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;případné opakování. Místo toho použijte samostatné kroky s jasným názvem&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;třeba „npm install&amp;quot; a „npm test&amp;quot;&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pokud některý krok selže, GitHub Actions vám ukáže přesně, který to byl&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;a vy nemusíte procházet celý log&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;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&lt;/ins&gt;, má &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pocit&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;že se aplikace zasekla&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Vždy poskytněte zpětnou vazbu – ať už jde o spinner&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;změnu barvy tlačítka nebo text „Ukládám…&amp;quot;&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Stejně důležité je ošetřit chybové stavy: místo obecného „Došlo k chybě&amp;quot; napište konkrétně&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;co se nepovedlo &lt;/ins&gt;a jak &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;to uživatel může opravit. Například „Zkontrolujte připojení k internetu&amp;quot; nebo „Zadané heslo je příliš krátké&amp;quot;&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Uživatel pak nemusí hádat &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;může problém rychle vyřešit&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Lachlan82L</name></author>
	</entry>
	<entry>
		<id>https://wiki.rettungsdienstblog.eu/index.php?title=DevOps,_o_kter%C3%A9m_v%C4%9Bt%C5%A1ina_za%C4%8D%C3%A1te%C4%8Dn%C3%ADk%C5%AF_zakopne&amp;diff=204526&amp;oldid=prev</id>
		<title>LamarBaber608: 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.&lt;br&gt;&lt;br&gt;Záv…“</title>
		<link rel="alternate" type="text/html" href="https://wiki.rettungsdienstblog.eu/index.php?title=DevOps,_o_kter%C3%A9m_v%C4%9Bt%C5%A1ina_za%C4%8D%C3%A1te%C4%8Dn%C3%ADk%C5%AF_zakopne&amp;diff=204526&amp;oldid=prev"/>
		<updated>2026-08-29T04:57:22Z</updated>

		<summary type="html">&lt;p&gt;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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Záv…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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ů.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Shrňme si to: NoSQL je výkonný nástroj, ale jeho použití má 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.&lt;/div&gt;</summary>
		<author><name>LamarBaber608</name></author>
	</entry>
</feed>