Skip to main content

Lift and Shift Without Optimization

Lift and shift without optimization moves workloads to the cloud unchanged and stops, paying cloud prices for on-prem inefficiency. Treat it as phase one, then rightsize, autoscale, adopt managed services, and modernize toward cloud-native.

Lift and shift without optimization is migrating applications to the cloud by replicating the on-premises setup as-is, virtual machines sized like the old servers, the same always-on capacity, the same self-managed databases, and then declaring the migration done. The workload now runs in the cloud but operates exactly as it did in the data center, capturing none of the cloud's advantages.

Lift-and-shift is a legitimate first step. The anti-pattern is treating it as the destination rather than a way station.

Why It Happens

Lift-and-shift is the fastest path to the cloud and the easiest to justify: minimal code changes, low immediate risk, and a deadline met. After the migration, the pressure that drove it disappears, and the planned optimization phase is deprioritized indefinitely. Teams lack cloud-native skills, so re-architecting feels daunting. The migration is reported as a success, and no one revisits it.

Why It Hurts

The cloud charges premium prices for flexibility the workload never uses. Always-on VMs sized for peak load waste money that elasticity would save. Self-managed databases and middleware carry operational toil that managed services would remove. On-prem inefficiencies are faithfully reproduced and now metered. Frequently the cloud bill ends up higher than the data center it replaced, while none of the resilience, scalability, or velocity benefits materialize.

Warning Signs

  • Cloud VMs mirror the old on-prem servers one for one.
  • Capacity is fixed and always-on rather than elastic.
  • No managed services are used; everything is self-hosted.
  • Cloud costs equal or exceed the previous on-prem costs.

Better Alternatives

Treat lift-and-shift as phase one, then optimize. Rightsize instances to actual demand and add autoscaling to exploit elasticity. Replace self-managed components with managed services (databases, queues, caches) to cut operational toil. Progressively re-architect toward cloud-native patterns where the payoff justifies it. Measure cost and performance to prioritize where optimization yields the most value.

How to Refactor Out of It

After migrating, schedule and fund an explicit optimization phase rather than leaving it implicit. Start with quick wins: rightsize oversized VMs and turn on autoscaling. Offload undifferentiated heavy lifting to managed services. Then identify workloads where deeper re-architecting (serverless, containers, event-driven design) pays off, and modernize them incrementally, tracking cost and performance improvements as you go.