old અને new બંનેમાં dual-write કરો, background માં history backfill કરો, tail catch up કરવા CDC વાપરો, shadow reads વડે verify કરો, પછી reads atomically flip કરો — દરેક step પર rollback path સાથે. તમે ક્યારેય app down નથી લેતા; તમે નવું provably identical ન થાય ત્યાં સુધી બંને databases parallel ચલાવો છો, પછી 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)
