Design a Database Migration Service with Replication and Bottleneck Analysis
Company: Digitalocean
Role: Software Engineer
Category: System Design
Difficulty: medium
Interview Round: Onsite
Design a database migration service. Explain how it copies existing data, keeps up with ongoing changes if required, scales the work, and identifies bottlenecks before and during cutover.
### Part 1 — Replication and Correctness
Define the migration consistency goal and describe the relationship between the initial copy, incremental replication, validation, and switching clients to the destination.
#### What This Part Should Cover
A consistent starting point, change capture or another declared strategy, ordering, retries, schema compatibility, and cutover criteria.
### Part 2 — Scaling and Bottlenecks
Explain how to divide work safely and determine whether the source, network, destination, or transformation stage limits progress.
#### What This Part Should Cover
Partitioning, backpressure, replication lag, skew, capacity measurements, and correctness-preserving tuning.
### Constraints
Database engines, data volume, schema differences, downtime tolerance, and whether writes continue during migration are unspecified. State assumptions; do not promise zero downtime or universal cross-engine replication without supporting mechanisms.
### Clarifying Questions
- Can the source provide a consistent snapshot and a durable change log?
- Are schema and data types compatible, and how are schema changes handled during migration?
- What downtime, lag, and validation thresholds are acceptable for cutover?
```hint Connect the snapshot to a change-log position
The initial copy and later changes must meet without leaving a gap or applying an operation twice incorrectly.
```
### What a Strong Answer Covers
- A complete migration lifecycle with explicit consistency guarantees.
- Replication choices, resumable work, and validation before cutover.
- Scaling decisions based on measured bottlenecks and resource protection.
### Follow-up Questions
- What happens if the destination falls behind faster than it can catch up?
- How would you restart a failed copy task without losing or duplicating changes?
Overview: Design consistent snapshots, change replication, resumable migration, validation, cutover, and scaling guided by measured source and destination bottlenecks.
Design a Database Migration Service with Replication and Bottleneck Analysis
Digitalocean
Sep 16, 2026
mediumSoftware EngineerOnsiteSystem Design
0
0
Design a database migration service. Explain how it copies existing data, keeps up with ongoing changes if required, scales the work, and identifies bottlenecks before and during cutover.
Part 1 — Replication and Correctness
Define the migration consistency goal and describe the relationship between the initial copy, incremental replication, validation, and switching clients to the destination.
What This Part Should Cover Guidance
A consistent starting point, change capture or another declared strategy, ordering, retries, schema compatibility, and cutover criteria.
Part 2 — Scaling and Bottlenecks
Explain how to divide work safely and determine whether the source, network, destination, or transformation stage limits progress.
What This Part Should Cover Guidance
Partitioning, backpressure, replication lag, skew, capacity measurements, and correctness-preserving tuning.
Constraints
Database engines, data volume, schema differences, downtime tolerance, and whether writes continue during migration are unspecified. State assumptions; do not promise zero downtime or universal cross-engine replication without supporting mechanisms.
Clarifying Questions Guidance
Can the source provide a consistent snapshot and a durable change log?
Are schema and data types compatible, and how are schema changes handled during migration?
What downtime, lag, and validation thresholds are acceptable for cutover?
What a Strong Answer Covers Guidance
A complete migration lifecycle with explicit consistency guarantees.
Replication choices, resumable work, and validation before cutover.
Scaling decisions based on measured bottlenecks and resource protection.
Follow-up Questions Guidance
What happens if the destination falls behind faster than it can catch up?
How would you restart a failed copy task without losing or duplicating changes?