Skip to content
Technology6 min read

Cloud migration: the strategy matters less than the order

Why lift-and-shift is usually the right first move, how data gravity decides your sequence, and the two things that actually derail migrations.

By Hardik Kamdar

Abstract illustration of workloads moving from on-premise infrastructure into cloud environments

Every migration plan we are shown opens with a strategy. Rehost, replatform, refactor, the six Rs, a matrix scoring each application against each approach. It is a reasonable way to think and a poor way to start, because the strategy is rarely what goes wrong. The order is.

Lift-and-shift is not the lazy option

Refactoring during a migration is the advice everyone gives and almost nobody should take on the first workload.

The problem is that it merges two projects with different failure modes. A migration fails visibly, at a known time, with a rollback you rehearsed. A refactor fails as a slow accumulation of behaviour nobody specified, discovered weeks later by a customer. Doing both at once means every incident starts with an argument about which change caused it.

Move it as it is, prove the network path and the runbooks work, then refactor from a position where you can roll back to something running in the same account. The instance will be oversized and the architecture will be unfashionable. Both are fixable later, cheaply, by people who now have production experience of the platform.

The exception is anything you were going to rewrite anyway. If a service is already being replaced, migrate the replacement and retire the original.

Data gravity decides the sequence

Applications are easy to move. Data is not, and everything that touches the data has to move with it or pay to reach across.

This is the constraint that determines your order, and it is usually discovered late. A team migrates a stateless front end, declares success, and then finds the next service cannot follow because it makes forty thousand queries an hour against a database still sitting in the old data centre. Each query now crosses a VPN. Latency triples, the bill acquires a data transfer line nobody modelled, and the migration stalls at the point where it stops being reversible.

Group workloads by the data they share rather than by team, criticality or ease. Move a whole cluster of things that talk to one database together, or move none of them. A migration that is half done across a data boundary is worse than one that has not started, because you are paying for both environments and the network between them.

What actually derails projects

Two things, in our experience, and neither is technical.

Nobody owns the decision to stop. Every migration hits a workload that resists: an appliance with a hardware dongle, a licence tied to a physical host, a service whose vendor folded in 2014. The project needs one person with the authority to say this one stays where it is. Without that, a plan for ninety workloads gets held hostage by three, and the eighty-seven that were ready sit in a half-migrated state for another quarter.

The old environment never gets switched off. The business case assumed you would stop paying for the data centre. Six months after cutover the racks are still running because one team has not moved and nobody will make the call. You are now funding two platforms and the saving that justified the project has evaporated. Put the decommission date in the plan, with a name against it, before the first workload moves.

The parts worth automating early

Infrastructure as code from the first environment, not retrofitted after. Not because it is best practice, but because you are about to build the same VPC, the same security groups and the same IAM roles several times, and the second build is where hand-crafted infrastructure starts to drift.

Tagging enforced in the pipeline rather than requested in a document. During a migration you will be asked which costs belong to the migration and which are business as usual. Without tags applied at creation, that question has no answer and the finance conversation goes badly.

Everything else can wait. Service meshes, multi-cloud abstraction layers and cost dashboards are all easier to add to a stable platform than to a moving one.

What we would ask first

Not which strategy, but: which workload can you move that, if it goes badly on a Saturday, costs you an apology rather than a customer? Start there, learn the platform on something forgiving, and let the order follow the data.

Talk to us about sequencing a migration around your data rather than your org chart.

FreeNo obligation, your three fixes are yours to action

Start with a free AWS audit

Give us read-only access and we will tell you what your account is costing you and where it is exposed. Your score and three worked fixes come back in about ten minutes, yours to action whether or not you go on to work with us.