Single blog hero image

4. Timeline: How Long Does a Migration Take?

2024-09-01

The short answer: faster than you think, slower than you hope.

In practice, most full migrations we’ve done take between 2 to 6 months. The lower bound comes from focused projects with modern stacks and aligned teams. The upper bound usually reflects not technical blockers, but organizational ones: distractions, ownership confusion, and systems that nobody fully understands.

In one case, we moved a 6-service AI product from MVP to fully running on AWS in under 2 months — including its web app, APIs, background jobs, databases, queues, and external integrations. It was fast because the stack was clean, team was on board, and decisions were made quickly.

In another case, the same scope took over 6 months. Not because the app was harder, but because nothing was containerized, infra knowledge was scattered, and people were simply too busy. Build scripts were tangled, configs were inconsistent, and "just ship it" had left behind years of entropy.

What Determines Migration Time?
In our experience, these are the main variables that shape timeline:
  • Architecture complexity: tightly coupled monoliths and shared DBs are slower to untangle

  • Containerization readiness: if you can't package it, you can't move it easily

  • Team capacity: if engineers are stretched thin, migration stalls constantly

  • Stakeholder count: too many voices = decision paralysis

  • App statefulness: workloads that can’t handle multiple replicas slow down rollout

  • Monolith databases: schema lock-in or unclear ownership often blocks parallelization

  • Political drag: some teams resist change or cling to "their" systems

  • Overengineering: complex systems owned by single "experts" are harder to replace

Surprisingly, infra tooling isn’t the delay. Setup and coordination is. Alignment takes time. Migration multiplies that by every service you touch.

How We Break It Down
The key to staying on track isn’t estimating months — it’s scoping phases. Here’s how we usually do it:
  • Run a fast assessment of infra, teams, and delivery maturity

  • Define an MVP migration target (e.g., background jobs or stateless services)

  • Group services by risk and complexity so parallel work can begin

  • Avoid databases early on unless they’re clean and well-owned

  • Start with something self-contained with clear business value

  • Run the new infra in parallel to prove parity and gain confidence

We don’t build out all tooling before starting. Instead, we iterate quickly. Terraform modules evolve alongside workloads. What matters is reducing idle time and making wins visible fast.

We also avoid keeping two environments running too long. Parallel infra is expensive and creates more places for bugs to hide. Migrations are cheapest when they move fast.

What Surprises CTOs Most
There are two things we hear again and again:
  • "Setup took longer than the move itself." Planning VPCs, IAM, CI/CD, and SSO often eats weeks before a single container moves.

  • "It was never 100%." Like moving apartments, there are always a few boxes left in the hallway. Migrations leave behind cronjobs, reporting tools, random scripts, or old integrations that resurface a month later.

Teams also underestimate incidents. You will hit snags. Having rollback options and redundancy plans isn’t paranoia — it’s insurance.

And most surprisingly: velocity usually improves before the migration is done. Just fixing deploy flows, introducing observability, and aligning teams on ownership gives developers more confidence and autonomy. You don’t need to finish the migration to start seeing returns.

Timeline Isn't About Time
The real question isn’t "how long will it take?" but:
  • Are you migrating the right things first?

  • Can you show progress every 2 weeks?

  • Is your team learning as they go, or waiting for perfection?

Migrations that feel fast are those that generate momentum. Migrations that stall are those that try to be complete before they start.

There is no magic number. But with the right scope, alignment, and attitude, most teams can make meaningful progress in weeks — and wrap core migrations in 2–6 months.

If you're not shipping something within the first 30 days, you're not migrating. You're just preparing. And that’s where time slips away.