A very common real-world and senior-interview prompt. The requirements already exist - encoded in the old system's behaviour.
- Measure the current system first. Actual QPS, peak-to-average ratio, data volume, current p99. These are facts, not guesses, and they beat any estimate.
- Find the undocumented behaviour. Legacy systems always have implicit contracts - a nightly job that assumes a table is sorted, a client depending on a quirk. Ask "who consumes this data?"
- Separate essential from accidental. Some behaviour exists because of a 2011 hardware limitation, not because anyone wants it. Do not port constraints that no longer apply.
- Establish the migration requirement explicitly. Zero-downtime cutover is itself a requirement and usually the hardest one. It implies dual writes, a backfill, a shadow read comparison phase, and a rollback plan.
- Agree on the parity bar. Must it be bug-for-bug compatible, or is behaviour allowed to improve?
Standard migration pattern to mention: dual-write to old and new, backfill history, shadow-read and diff the results, ramp traffic 1% → 10% → 100% with a kill switch, then decommission.