Dual-write ke lama dan baru, backfill histori di latar belakang, gunakan CDC untuk mengejar sisa (tail), verifikasi dengan shadow read, lalu balik baca secara atomik — dengan jalur rollback di setiap langkah. Anda tidak pernah menghentikan app; Anda menjalankan kedua database paralel sampai yang baru terbukti identik, lalu cutover.
Arsitektur
┌── 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)
