Skip to content
StackSide

How to Plan a Data or System Migration (with a Template)

StackSide

Share

Cut the scope before the schedule

The first line of a migration plan should say what is not moving and what must keep running during the move. A narrow scope is what makes the schedule believable.

Large datasets are better moved partition by partition than in one pass. Meta describes its ingestion migration in terms of daily data volume, which is the number to plan around.

Meta · Migrated

Migrating Data Ingestion Systems at Meta Scale

Stack: MySQL, Scuba, Distributed Systems

Plan a dual-write period

You need time where both the old and new stores receive writes, otherwise you cannot verify anything. For data where consistency matters, such as account balances, put the dual-write period and the comparison method at the center of the plan. Mercari’s zero-downtime balance design is a good model for that.

Mercari · Migrated

Designing a Zero Downtime Migration Solution with Strong Data Consistency

Stack: Cloud Spanner, gRPC, Go, Kubernetes

Split large moves into smaller units

When a system carries a large share of global traffic, a single cut-over is hard to undo. GitHub’s move of its Git infrastructure to the cloud to support agent-scale traffic is a case where the scale figure drives how the work is split.

GitHub · Migrated

The bridge to agent-scale Git infrastructure

Stack: Git, Azure, Linux

Verify build and runtime changes separately

A move that changes build tooling and test selection has two sets of checks. Stripe’s selective test execution for a 50-million-line Ruby monorepo shows why: the test set itself changes, so compare coverage as well as runtime. Plan one comparison for build output and another for execution.

Stripe · Mentioned

Selective Test Execution at Stripe: Fast CI for a 50M-line Ruby monorepo

Stack: Ruby, CI/CD, Bazel

Template (copy)

## 1. Scope

- What moves, and what stays where it is
- What must keep working during the move

## 2. Phases

| Phase | Work | Done when |
|---|---|---|
| Prepare | | |
| Dual write | | |
| Verify | | |
| Cut over | | |
| Clean up | | |

## 3. Verification

- What is compared, how samples are chosen, what difference is acceptable

## 4. Rollback triggers

- The metric and threshold that trigger a rollback, and the steps

## 5. Owners and schedule

- Who runs each phase, and who signs off
Template
## 1. Scope

- What moves, and what stays where it is
- What must keep working during the move

## 2. Phases

| Phase | Work | Done when |
|---|---|---|
| Prepare | | |
| Dual write | | |
| Verify | | |
| Cut over | | |
| Clean up | | |

## 3. Verification

- What is compared, how samples are chosen, what difference is acceptable

## 4. Rollback triggers

- The metric and threshold that trigger a rollback, and the steps

## 5. Owners and schedule

- Who runs each phase, and who signs off

Cases quoted in this guide are compiled automatically from public posts and videos and may contain errors. Check each original link. Read the disclaimer

Related topics

New cases, once a week

Get newly added topics and cases by email once a week.

Once a week. New topics and cases only. Unsubscribe anytime.

Sign in with Google to subscribe. We store your email, name and profile photo. You must be 14 or older. Privacy policy