✏️ Explanatory Question

How do you gather requirements for a system that replaces an existing legacy one?

👁 12 Views
📘 Detailed Answer
🟢 Easy
No previous question
No next question
💡

Answer with Explanation

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.

No previous question
No next question