Když se změna umí jen posunout vpřed, každé nasazení je sázka. Cestu zpět navrhněte dřív, než ji budete potřebovat.
Cesta zpět patří do plánu
Plán nasazení obvykle popisuje, jak se nová verze dostane do produkce. Druhá polovina chybí: jak se systém vrátí do známého stavu, když se pod skutečným provozem začne chovat jinak. Tuto otázku je nejsnazší zodpovědět ještě předtím, než na změně začnou záviset data a klienti.
„Vrátit commit“ je operace ve správě zdrojového kódu. Rollback je operace nad celým systémem. V určitém pořadí může být potřeba vrátit aplikaci, konfiguraci i směrování provozu a současně zachovat kompatibilitu dat.
Navrhujte období souběhu
Mnoho změn se vrací obtížně proto, že stará a nová verze neumějí fungovat současně. Bezpečnější postup odděluje kompatibilitu od aktivace: nejprve připravte starý systém na budoucí podobu dat, potom zapněte nové chování a teprve v dalším vydání odstraňte starou cestu.
- Rozšiřte: přidejte nové pole nebo endpoint, ale zachovejte dosavadní kontrakt.
- Přepněte: vědomě přesuňte zápis i čtení a sledujte předem vybrané signály.
- Zúžte: kompatibilní kód odstraňte až po uzavření okna pro návrat.
To je důležité zvlášť u změn schématu, formátu událostí a klientů, které nemáte pod kontrolou. Snímek databáze může pomoci při obnově, ale jeho vrácení může smazat legitimní zápisy vzniklé po nasazení. Kompatibilita bývá lepší první obrana.
Rozhodnutí napište před incidentem
Užitečná poznámka k vydání odpovídá na čtyři otázky: Jaký signál znamená zastavit? Kdo o tom rozhodne? Který krok vrátí službu nejrychleji? Jaká data se mohou ztratit nebo změnit? Spouštěč návratu má být pozorovatelný, ne pocitový.
Zastavit, pokud chybovost plateb 5 minut převyšuje běžnou úroveň.
Přesměrovat provoz na předchozí verzi aplikace.
Rozšířené schéma ponechat. Databázi neobnovovat ze snímku.
Ověřit návrat chybovosti a délky fronty k běžným hodnotám.Čísla a signály jsou ilustrativní; skutečný práh musí vycházet z dané služby a jejího error budgetu. Návrat vyzkoušejte v reprezentativním prostředí. Postup, který nikdo nespustil, je stále jen hypotéza.
Krátký kontrolní seznam
- Přečte předchozí verze data zapsaná novou verzí?
- Lze přesměrovat provoz bez sestavování artefaktů během incidentu?
- Počítá plán i s feature flagy a změnami konfigurace?
- Má člověk ve službě potřebná oprávnění a přesné příkazy?
- Podle čeho pozná, že je stará verze znovu zdravá?
Návrat není vždy možný. V takovém případě pojmenujte postup opravy směrem vpřed i jeho rizika. Je to užitečnější než formálně odškrtnutý rollback.