← Zpět na blog

Migrace do cloudu bez výpadku: postup krok za krokem

CloudMigraceDevOps
Migrace do cloudu bez výpadku: postup krok za krokem

„Přesuneme to o víkendu a v pondělí to poběží.“ Za touhle větou stojí většina migrací, které skončily dlouhým výpadkem a nervózním rollbackem ve tři ráno. Přesun do cloudu bez výpadku není otázka štěstí ani víkendu. Je to otázka plánu, ve kterém má každý krok cestu zpět.

Nejdřív cesta zpět, potom krok vpřed

Zásada, která odděluje klidnou migraci od dobrodružství: žádný krok neuděláte, dokud nevíte, jak ho vrátit. Nové prostředí stavíme vedle toho starého, klidně celé v Terraformu, a starou verzi držíme naživu. Provoz na něj pouštíme postupně a u každé fáze máme jasný signál, kdy a jak se vrátit zpět. Dokud běží obojí paralelně, je rollback otázkou přepnutí, ne obnovy ze zálohy.

Databáze je ta těžká část

Aplikační servery se stěhují snadno, protože jsou většinou bezstavové. Zabalíte je do kontejneru a rozjedete v cloudu za odpoledne. Skutečné riziko je vždycky v datech. Databázi přenášíme přes replikaci: nová instance jede jako replika té staré a průběžně dohání změny. Ve chvíli přepnutí je rozdíl mezi nimi minimální a samotné povýšení repliky na primární je otázkou sekund. U složitějších případů pomůže i dočasný zápis do obou databází zároveň, dokud si novou stranu neověříte.

Jak přepnout provoz postupně

Velký třesk, kdy v jednu chvíli přesměrujete všechno, je zbytečné riziko. Provoz umíme pouštět do nového prostředí po kapkách.

  • Postupné odkrajování. Jednu službu po druhé přesměrujete do cloudu, zbytek zatím běží po staru. Monolit se dá takhle rozebrat bez jediného velkého střihu.
  • Blue-green. Staré i nové prostředí běží současně, přepnutí je změna směrování a případný návrat je stejně rychlý.
  • Kanárkové nasazení. Nejdřív pošlete do cloudu pár procent provozu, sledujete chyby a latenci, a teprve pak přidáváte.

Před finálním přepnutím snížíte TTL u DNS třeba na minutu, aby se změna rozšířila rychle a případný návrat byl okamžitý.

Tři způsoby, jak postupně přepnout provoz do cloudu: postupné odkrajování službu po službě, blue-green s oběma běžícími prostředími a kanárkové nasazení, kdy se do cloudu pouští nejdřív pár procent provozu. Před přepnutím se snižuje TTL u DNS.
Provoz se do nového prostředí pouští po kapkách.

Než přepnete naostro

Cutover není chvíle na první test. Celý postup si projděte nanečisto na kopii dat, ať víte, jak dlouho trvá a kde drhne. Dopředu si určete konkrétní signály pro rollback: kolik chyb nebo jak vysoká latence znamená návrat. A po přepnutí nechte staré prostředí ještě pár dní běžet. Je to nejlevnější pojistka, jakou během migrace máte.

Šest kroků migrace bez výpadku: postavit prostředí vedle starého v Terraformu, replikovat databázi, pustit část provozu jako kanárka, snížit TTL u DNS, přepnout a sledovat chyby i latenci a starou verzi držet ještě pár dní. Každý krok musí mít cestu zpět.
Celý postup od paralelního prostředí až po vypnutí toho starého.

Dobrá migrace je nudná. Když má každý krok návrat, přepnutí do cloudu je jen další úterý. Naplánujeme ji s vámi.

Časté dotazy

Jde migrovat do cloudu úplně bez výpadku?

U většiny aplikací ano, pokud provoz přepínáte postupně a máte pro každý krok cestu zpět. Krátké plánované okno se občas nevyhne u databáze, ale i to jde stlačit na jednotky minut díky replikaci a rychlému přepnutí. Klíčem je plán a otestovaný rollback; přesun přes noc je ta nejrizikovější varianta.

Co je na migraci do cloudu nejrizikovější?

Databáze a stav. Aplikační servery se přesouvají snadno, protože jsou většinou bezstavové. Data se ale musí přenést konzistentně a beze ztráty, což vyžaduje replikaci, ověření a promyšlené přepnutí zápisů. Právě tady migrace nejčastěji padají.

Jak dlouho migrace do cloudu trvá?

Podle složitosti od několika týdnů po měsíce. Samotné přepnutí provozu ale bývá otázkou minut, když je příprava hotová. Většina času padne na paralelní prostředí, replikaci dat a testování.