پرانے اور نئے دونوں کو dual-write کریں، تاریخ کو background میں backfill کریں، آخری حصے کو پکڑنے کے لیے CDC استعمال کریں، shadow reads سے verify کریں، پھر reads کو atomically flip کریں — ہر قدم پر ایک rollback path کے ساتھ۔ آپ کبھی app کو نیچے نہیں کرتے؛ آپ دونوں databases کو متوازی چلاتے ہیں جب تک نیا واضح طور پر یکساں ثابت نہ ہو جائے، پھر 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)
