ਪੁਰਾਣੇ ਅਤੇ ਨਵੇਂ ਦੋਵਾਂ ਵਿੱਚ dual-write ਕਰੋ, background ਵਿੱਚ history backfill ਕਰੋ, tail ਨੂੰ catch up ਕਰਨ ਲਈ CDC ਵਰਤੋ, shadow reads ਨਾਲ verify ਕਰੋ, ਫਿਰ reads ਨੂੰ atomically flip ਕਰੋ — ਹਰ step ਉੱਤੇ ਇੱਕ rollback path ਨਾਲ। ਤੁਸੀਂ ਕਦੇ app ਨੂੰ down ਨਹੀਂ ਕਰਦੇ; ਤੁਸੀਂ ਦੋਵੇਂ databases parallel ਚਲਾਉਂਦੇ ਹੋ ਜਦ ਤੱਕ ਨਵਾਂ ਸਾਬਤ ਤੌਰ ਉੱਤੇ 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)
