Dual-write ไปยัง old และ new, backfill ประวัติเบื้องหลัง, ใช้ CDC เพื่อไล่ตามส่วนท้าย, ตรวจสอบด้วย shadow read แล้ว flip การอ่านแบบ atomic — พร้อม rollback path ทุกขั้นตอน คุณไม่เคยปิด app คุณรัน database ทั้งสองแบบขนานจนกว่าตัวใหม่จะพิสูจน์ได้ว่าเหมือนกันเป๊ะ แล้วจึง cut over
สถาปัตยกรรม
text
┌── 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)
