पुराने और नए दोनों में dual-write करें, background में history backfill करें, tail catch-up के लिए CDC इस्तेमाल करें, shadow reads से verify करें, फिर reads को atomically flip करें — हर step पर एक rollback path के साथ। आप कभी app down नहीं करते; आप दोनों databases को समानांतर चलाते हैं जब तक नया provably समान न हो, फिर cut over करते हैं।
आर्किटेक्चर
┌── 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)
