Úvodní diagnostika
Upřesníme problém, požadovaný výsledek, přístupy a omezení provozu. U existujícího prostředí nejprve ověřím skutečný stav.
Automatizace sestavení, testů a nasazení aplikací tak, aby nový release nebyl ruční improvizací. Pomohu navrhnout pipeline, správu konfigurace, oddělení prostředí i dohled nad výsledným provozem.
Nejprve zmapuji cestu změny od repozitáře po produkci, dostupné testy, tajné údaje a způsob návratu. Potom navrhnu jen takovou automatizaci, kterou tým dokáže číst, provozovat a bezpečně upravovat.
Automatické sestavení, statické kontroly a testy při změně kódu. Chyba se má projevit před nasazením, ne až u uživatele.
Oddělená testovací a produkční prostředí, verzované artefakty, schvalování kritických změn a ověřitelný návrat na předchozí verzi.
Ansible, kontejnery a dokumentované proměnné prostředí. Citlivé údaje se neukládají do zdrojového kódu ani do ručních poznámek.
Automatizace přináší hodnotu hlavně tam, kde se aplikace mění opakovaně a ruční postup způsobuje rozdíly mezi prostředími, dlouhé odstávky nebo nejistotu, co je právě nasazené.
DevOps a CI/CD převádějí opakované sestavení, testování a nasazení aplikace do dohledatelného procesu navázaného na repozitář. Po každé změně může pipeline ověřit formát, testy, závislosti a bezpečnostní kontroly, vytvořit verzi artefaktu a řízeně ji nasadit do testovacího nebo produkčního prostředí. Přístupy a tajné hodnoty nejsou součástí zdrojového kódu, schválení a odpovědnosti jsou viditelné a každý release lze spojit s konkrétní změnou. Součástí návrhu je také ověření po nasazení, monitoring a způsob návratu na předchozí funkční verzi. Automatizace tak omezuje ruční chyby a zrychluje rutinu, ale zachovává kontrolní body tam, kde by chyba mohla ovlivnit zákazníky nebo data.
Pipeline se vyplatí už u menší aplikace, pokud se nasazuje opakovaně, proces zná jen jeden člověk nebo se jednotlivá prostředí konfigurací rozcházejí. Není nutné automatizovat vše najednou: první etapa může pouze sestavit a otestovat kód, další přidá staging a teprve ověřený postup produkci. Rozsah závisí na používaném Git systému, počtu služeb, infrastruktuře, požadavcích na schvalování a dostupnosti testů. Výstupem má být i dokumentace, aby tým chápal, co pipeline provádí a kde hledat chybu.
Nástroj není cíl. GitLab CI, GitHub Actions nebo jiná platforma se volí podle repozitáře, infrastruktury, oprávnění a způsobu provozu aplikace.
Pro návrh pipeline je potřeba znát umístění repozitáře, používané větve a release proces, dostupné testy, způsob sestavení a rozdíly mezi vývojovým, testovacím a produkčním prostředím. Připravte seznam cílových služeb, registrů, schvalovacích kroků a osob oprávněných nasazovat. Tajné hodnoty stačí popsat, neposílejte je e-mailem ani je nepřidávejte do repozitáře. Užitečný je příklad posledního nepovedeného nasazení a informace, jak dnes probíhá kontrola výsledku a návrat.
Konkrétní rozsah i cenu lze určit až podle prostředí, dostupných podkladů a dopadu případného výpadku.
Upřesníme problém, požadovaný výsledek, přístupy a omezení provozu. U existujícího prostředí nejprve ověřím skutečný stav.
Rozdělím nutné zásahy, doporučená zlepšení a otevřená rizika. Změny s dopadem na provoz mají plán ověření i návratu.
Po provedení otestuji výsledek a předám shrnutí změn, potřebnou dokumentaci a doporučení pro další provoz.
Výsledkem je pipeline navázaná na repozitář, popsané podmínky nasazení a způsob ověření i návratu. Automatizace nemá skrývat provozní logiku; tým musí vědět, co se v každém kroku děje a kde hledat příčinu chyby.
Ne nutně. Návrh vychází z používaného repozitáře, dostupných runnerů a cílové infrastruktury. Nejprve ověřím, co umí současná platforma a zda změna přinese skutečný provozní přínos.
Často ano, ale postupuje se po částech. Nejprve je potřeba popsat současné kroky, oddělit konfiguraci a citlivé údaje a doplnit alespoň základní kontrolu výsledku. Teprve potom se bezpečně automatizuje produkční nasazení.
Ano, způsob rollbacku je součást návrhu. Konkrétní řešení závisí na databázových migracích, persistentních datech a architektuře aplikace; ne každý release lze vrátit pouhým přepnutím obrazu.