9 min čteníJohnny UnarJohnny Unar

Zero-downtime deploymenty: Praktický průvodce

Vaši uživatelé by neměli vědět, že jste nasazovali. Jak dostat kód do produkce bez jediného zahozeného requestu.

Údržbová okna jsou přežitek

Údržbová okna jsou přežitek. Vaši uživatelé jsou globální, konkurence nasazuje denně a 'nasadíme v neděli ve 3 ráno' neškáluje. Zero-downtime deployment znamená poslat nový kód do produkce, zatímco stará verze dál obsluhuje provoz — žádné chyby, žádná ztracená připojení, žádné stránky 'hned jsme zpět'. Zní to jako magie, ale je to inženýrství.

Blue-green nasazení

Blue-green deployment je nejjednodušší přístup. Udržujete dvě identická prostředí: Blue (aktuální produkce) a Green (nová verze). Nasaďte na Green, spusťte smoke testy, pak přepněte load balancer z Blue na Green. Pokud se něco rozbije, přepněte zpět během sekund. Nevýhoda: potřebujete dvojnásobnou infrastrukturu. Pro cloud-native aplikace na platformách jako Vercel, Netlify nebo AWS s kontejnery se to řeší automaticky — každý deployment vytvoří nové prostředí a provoz se přesměruje atomicky.

Canary releasy

Canary deploymenty přidávají vrstvu bezpečnosti. Místo přepnutí veškerého provozu najednou směrujete 5 % na novou verzi a monitorujete chybovost, latenci a byznysové metriky. Pokud vše vypadá dobře, postupně zvyšujete na 25 %, 50 %, 100 %. Pokud canary ukáže problémy, rollbacknete dřív, než je ovlivněna většina uživatelů. Kubernetes to usnadňuje nástroji jako Argo Rollouts nebo Flagger. Pro serverless platformy feature flagy (LaunchDarkly, Unleash) dosáhnou stejného postupného rolloutu na úrovni aplikace.

Výzva jménem databáze

Nejtěžší část zero-downtime deploymentu není infrastruktura — je to databáze. Migrace schémat, které zamykají tabulky, přejmenování sloupců, které rozbíjí dotazy, a datové transformace, které trvají minuty, mohou všechny způsobit výpadek. Řešení: expand-and-contract migrace. Přidejte nový sloupec, backfillněte data, aktualizujte aplikaci, aby používala starý i nový sloupec, pak starý sloupec odstraňte v samostatném deploymentu. Nikdy neprovádějte breaking změnu schématu v jednom kroku. Ve steezr je každý produkční deployment zero-downtime ve výchozím nastavení. Naši klienti spí klidně v dny nasazení — a my taky.

Johnny Unar

Napsal/a

Johnny Unar

Chcete s námi spolupracovat?

Vaši uživatelé by neměli vědět, že jste nasazovali. Jak dostat kód do produkce bez jediného zahozeného requestu.