Zapisuj podwójnie (dual-write) do starej i nowej, wypełniaj historię w tle (backfill), użyj CDC do dogonienia ogona, weryfikuj shadow readami, potem przełącz odczyty atomowo — ze ścieżką rollbacku na każdym kroku. Nigdy nie wyłączasz aplikacji; uruchamiasz obie bazy równolegle, aż nowa okaże się dowodliwie identyczna, potem robisz cutover.
Architektura
┌── write ──▶ OLD DB (source of truth) ──CDC (Debezium)──┐
App ───┤ ▼
└── write ──▶ NEW DB ◀──── backfill job (historical rows)
│
shadow reads (compare OLD vs NEW) ─▶ diff metrics ─▶ atomic cutover ─▶ NEW is truth
(flip flag; rollback = flip back)
