Migrating a business from on-premises infrastructure to AWS is less a lift-and-shift and more a change of operating model. The organisations that succeed treat migration as a phased programme with a clear target architecture, not a single cut-over weekend.
Start with the 7 Rs
Every workload should be classified against one of the seven common migration strategies: Retire (decommission what is unused), Retain (leave on-prem for now), Rehost (lift-and-shift with minimal change), Relocate (move VMware estates via VMware Cloud on AWS), Repurchase (move to SaaS), Replatform (lift-and-optimise, e.g. move a database to Amazon RDS), and Refactor (re-architect toward cloud-native and serverless). Most portfolios end up a mix, and honest classification up front prevents wasted effort.
Build the landing zone first
Before any workload moves, stand up a multi-account landing zone using AWS Organizations and AWS Control Tower. Separate accounts for security, logging, shared services and each workload environment enforce blast-radius isolation. A hub-and-spoke network built on AWS Transit Gateway connects the accounts, while Direct Connect or a Site-to-Site VPN bridges the corporate data centre during the transition.
A phased blueprint
Phase one is assess and mobilise: inventory the estate with AWS Application Discovery Service, build the business case, and establish the landing zone and a cloud centre of excellence. Phase two migrates the low-risk, high-value workloads first, using AWS Application Migration Service (MGN) for rehosts and AWS Database Migration Service (DMS) for data. Phase three modernises — decomposing monoliths toward containers on Amazon ECS or EKS and event-driven serverless with Lambda.
The target picture
A typical steady-state architecture places the application tier behind an Application Load Balancer across multiple Availability Zones, with Auto Scaling groups or containers for compute, Amazon RDS Multi-AZ or Aurora for relational data, S3 for object storage, and CloudFront plus Route 53 at the edge. Everything is defined as code in CloudFormation or Terraform so environments are reproducible and auditable.