Skip to content

Migration Strategy ​

📝 Context ​

Assessment is done. You know what's moving and roughly how. Now you need a phased strategy that gets workloads migrated without disrupting business operations. The strategy defines the sequence, the approach for each wave, and the guardrails that keep the migration from going sideways.

📋 Strategy Pre-Requisites ​

  • [ ] Migration assessment complete with workload dispositions
  • [ ] Dependency map validated with application owners
  • [ ] Target environment provisioned (or provisioning plan in place)
  • [ ] Network connectivity established or planned between source and target
  • [ ] Identity and access management configured in target
  • [ ] Cost baseline established for current environment
  • [ ] Stakeholder alignment on migration goals and constraints

🎯 Strategy Framework ​

Migration strategy path options: from a source environment to a target environment via three routes — strangler (incrementally route and replace), parallel run (run old and new and compare), and offline cutover — with dependency sequencing, a validation gate, and a rollback plan.
Choose the safest path per workload, not one strategy for everything.

Wave Planning ​

%%{init: {'theme': 'neutral', 'themeVariables': {'fontSize': '14px'}}}%%
flowchart LR
    A[Wave 1: Foundation and quick wins] --> B[Wave 2: Core services]
    B --> C[Wave 3: Complex and critical]
    C --> D[Wave 4: Cleanup and optimization]

    A -. validates .-> T[Tooling and patterns]
    B -. proves .-> T
    C -. applies .-> T

Organize workloads into migration waves based on:

Wave 1: Foundation & Quick Wins

  • Low-risk, low-dependency workloads
  • Non-production environments (dev, staging, QA)
  • Internal tools that can tolerate downtime
  • Purpose: build muscle, validate tooling, establish patterns

Wave 2: Core Services

  • Medium-complexity workloads with manageable dependencies
  • Services with clear rollback paths
  • Workloads where the team has strong operational knowledge
  • Purpose: prove the migration approach at scale

Wave 3: Complex & Critical

  • High-dependency workloads that require careful coordination
  • Customer-facing services with strict SLAs
  • Workloads with complex data migration requirements
  • Purpose: migrate the hardest workloads with experience from earlier waves

Wave 4: Cleanup & Optimization

  • Remaining workloads, decommissioning source environment
  • Post-migration optimization (right-sizing, reserved capacity)
  • Operational handoff and runbook completion
  • Purpose: close out the migration and start optimization

Sequencing Principles ​

  1. Migrate dependencies before dependents. If Service A calls Service B, migrate B first (or migrate them together).

  2. Start with what you understand best. Don't learn cloud operations on your most critical workload.

  3. Group by team, not just by technology. A team migrating three services they own is more efficient than three teams each migrating one unfamiliar service.

  4. Maintain rollback capability. Every wave should have a defined rollback path that's been tested before the wave begins.

  5. Create a "strangler fig" pattern for tightly coupled systems. Gradually route traffic to the new environment rather than cutting over all at once.

Data Migration Strategy ​

Data migration is usually the hardest part. Choose the right approach per workload:

%%{init: {'theme': 'neutral', 'themeVariables': {'fontSize': '14px'}}}%%
flowchart TD
    A[Can the workload tolerate downtime?] -->|Yes| B[Is the data set small enough for the window?]
    A -->|No| C[Is continuous replication available?]
    B -->|Yes| D[Offline migration]
    B -->|No| C
    C -->|Yes| E[Online migration]
    C -->|No| F[Dual-write or phased strangler]
    D --> G[Validate and cut over]
    E --> G
    F --> G
ApproachDescriptionWhen to Use
Offline migrationStop writes, copy data, start in new environmentSmall data sets, tolerance for downtime
Online migrationContinuous replication with cutover at a point in timeLarge data sets, minimal downtime required
Dual-writeWrite to both old and new during transitionZero-downtime requirement, complex validation needed
Export/importDump and reloadSchema changes required, acceptable downtime window

For each data migration, define:

  • Volume to migrate and estimated transfer time
  • Acceptable downtime window
  • Validation approach (row counts, checksums, application-level verification)
  • Rollback approach if validation fails
  • Data sync strategy during the transition period

Network Strategy ​

  • Hybrid connectivity: VPN, Direct Connect, or peering between source and target
  • DNS cutover: How traffic will be redirected (weighted routing, blue-green, etc.)
  • Latency budget: Which cross-environment calls are acceptable during transition
  • Firewall rules: What needs to be opened, when, and who approves
  • Certificate management: TLS certificates for new endpoints

Testing Strategy ​

Each wave needs a test plan:

  • Functional testing: Does the workload work in the new environment?
  • Performance testing: Does it meet latency and throughput requirements?
  • Integration testing: Do upstream and downstream dependencies still work?
  • Failover testing: Does the rollback plan actually work?
  • Security testing: Are access controls and network policies correctly applied?

Strategy Document Template ​

Migration Strategy: [Customer Name]

Migration window: [Start] to [End] Total workloads: [X] Waves planned: [X]

Wave Summary:

WaveTimelineWorkloadsRisk LevelKey Milestone
1[Dates][Count]Low[Milestone]
2[Dates][Count]Medium[Milestone]
3[Dates][Count]High[Milestone]
4[Dates][Count]Low[Milestone]

Go/No-Go Criteria per Wave:

  • [ ] Target environment validated
  • [ ] Rollback plan tested
  • [ ] Monitoring and alerting configured
  • [ ] Stakeholders briefed
  • [ ] On-call coverage arranged for cutover

Communication Plan:

  • [Frequency and format of status updates]
  • [Escalation path for blockers]
  • [Stakeholder notification for cutover events]

⚠️ Gotchas ​

  • Planning all waves in detail upfront — Wave 1 teaches you things that change Waves 2-4
  • Underestimating data migration — it's always bigger, slower, and more complex than expected
  • Not testing rollback — a rollback plan you haven't tested is not a plan
  • Migrating during business-critical periods — avoid peak seasons, quarter-end, product launches
  • Ignoring DNS TTLs — if your TTL is 24 hours, your "instant" cutover takes 24 hours
  • Assuming the source environment stays stable during migration — changes to source mid-migration cause drift
  • Not decommissioning source after migration — dual running costs add up fast

📚 Further reading ​

Strategy references, including the incremental-migration pattern:

Built as a public field guide for practical Solutions Engineering and Architecture work.