जुन्या आणि नव्याला dual-write करा, background मध्ये history backfill करा, tail catch up करण्यासाठी CDC वापरा, shadow reads ने verify करा, नंतर reads atomically flip करा — प्रत्येक पायरीवर rollback path सह. तुम्ही app कधीही down घेत नाही; तुम्ही दोन्ही databases समांतर चालवता जोपर्यंत नवीन provably identical होत नाही, नंतर 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)
