Cloud guide
AWS Cloud Migration: A Practical Guide for Businesses
Moving applications, databases and servers from your own hardware to AWS is mostly a planning exercise. This guide shows how to size what you have, decide what moves and how, estimate the real costs (including the ones people forget), secure the new environment and cut over with minutes of downtime instead of a lost weekend.
- Level
- Intermediate
- Best for
- Business owners, IT managers and operations leads
- Assumes
- You know what servers, databases and backups are. No AWS experience needed.
Key takeaways
- Measure real usage for 2–4 weeks before sizing anything. Servers bought to last five years are usually 3–4× larger than they need to be in AWS.
- Decide per workload: retire, keep, lift-and-shift, replatform or rebuild. A typical small estate uses four or five of these at once.
- Budget for the forgotten costs: weeks of parallel running, data leaving AWS, licensing and the people doing the work.
- Most cloud breaches are configuration mistakes, not AWS failures. Build accounts, network, identity and logging before the first workload.
- Continuous replication plus a timed, rehearsed runbook turns cutover into a 30–60 minute window with a real rollback.
Why businesses move to AWS, and when they shouldn't
The usual triggers are concrete: servers out of warranty, a data center or colocation contract up for renewal, a disaster-recovery plan nobody has tested, or a small IT team spending its week patching hardware. AWS turns hardware purchases into monthly spend, lets you add capacity in minutes for busy periods, and gives you managed databases, backups and monitoring you would otherwise build and babysit yourself.
The cloud is not automatically cheaper. A large, steady workload on hardware you already own, run by an experienced operations team, can cost more on AWS, especially if it is moved as-is and left running around the clock.
Licensing (Windows Server and SQL Server especially), latency to systems that stay on-premises, and data residency rules can also change the answer. A good plan says which workloads move, which get replaced and which stay put.
Step 1: Measure what you actually use
Collect at least two to four weeks of CPU, memory, disk and network data per server, and make sure the window includes your busiest days (month-end close, payroll, a seasonal peak). For a few servers a spreadsheet is enough; for larger estates, AWS offers the Application Discovery Service to collect data and Migration Evaluator to build a cost case.
| Item | Why it matters |
|---|---|
| Peak and 95th-percentile CPU and memory | Sizes the AWS resources. The average hides month-end peaks; the maximum is often a one-off spike. |
| Operating system and runtime versions | Windows Server 2012, old Linux kernels and unsupported runtimes may block managed services or need upgrading first. |
| Dependencies: databases, file shares, APIs, scheduled jobs, email relays | Systems that talk constantly should move in the same wave, or need a fast link while they are split. |
| Data size and daily change rate | Decides between online transfer, a shipped device and continuous replication. |
| Licensing terms | Some licenses are tied to hardware or cores. Amazon RDS for SQL Server is sold license-included; reusing your own SQL Server licenses generally means running it on EC2. |
| Owner, criticality and tolerable downtime | Sets the migration order and how much effort goes into avoiding downtime. |
Step 2: Choose a strategy for each workload (the 7 Rs)
AWS describes seven migration strategies. The right one depends on how valuable a system is, how much life it has left and how much change your team can absorb at once.
| Strategy | What it means | Typical example |
|---|---|---|
| Retire | Switch it off. | A reporting server nobody has logged into for a year. |
| Retain | Leave it where it is for now. | A system being replaced by a SaaS product next year. |
| Rehost ("lift and shift") | Move the server to AWS as-is. | A line-of-business app on Windows Server moved to EC2. |
| Relocate | Move a virtualized platform without changing it. | VMware workloads moved to VMware Cloud on AWS. |
| Repurchase | Replace with a hosted product. | An on-premises file server replaced by SharePoint or Google Drive. |
| Replatform | Small changes to use managed services. | Self-managed SQL Server moved to Amazon RDS, which handles patching, backups and failover. |
| Refactor | Re-architect for the cloud. | A monolith split so the busy parts scale independently. |
Most businesses rehost or replatform first, because it is fastest and lowest risk, and improve the systems that matter once they are running in AWS. If an application needs deeper work, see our guide to modernizing legacy .NET applications without starting over.
Step 3: Build the foundation before moving anything
A "landing zone" is the secure, organized AWS environment your workloads move into. Building it first avoids the most expensive kind of rework: fixing networking and permissions after production is already running on top of them.
| AWS account | What lives there |
|---|---|
| Management | Billing and AWS Organizations only. Nobody runs workloads here. |
| Security / log archive | CloudTrail logs and security findings from every account, protected from deletion. |
| Production | Live workloads, with the tightest access. |
| Staging / development | Testing and development; cheaper, scheduled resources. |
- Identity: single sign-on through IAM Identity Center, multi-factor authentication for everyone, and the root user locked away with its own MFA device.
- Network: private subnets for databases and application servers, public subnets only for load balancers, and a site-to-site VPN (or AWS Direct Connect) if systems stay on-premises during the migration.
- Logging: CloudTrail in every account and alerts on root logins, IAM changes and security group changes.
- Backups: AWS Backup plans defined up front, with one restore actually tested before go-live.
Step 4: Move data and servers in waves
- MeasureUsage and dependencies
- PlanStrategy per workload, costs, order
- Landing zoneAccounts, network, identity, logging
- PilotOne low-risk system end to end
- WavesGroups of related systems
- OptimizeRight-size, automate, modernize
Each wave reuses the runbook refined in the pilot.
Pick a pilot that is useful but not critical, such as an internal wiki or a reporting tool, and run it through everything: replication, cutover, monitoring, backup restore and a rehearsed rollback. Write down every surprise. Then group the remaining systems into waves of applications that depend on each other.
How long will the data take to move?
Do this arithmetic early, because it decides the tooling. Moving 4 TB over a dedicated 200 Mbps link takes about 44 hours at full speed (4 TB × 8 = 32,000,000 megabits ÷ 200 Mbps ≈ 160,000 seconds); in practice plan for two to three days, which is fine for online transfer with AWS DataSync. 80 TB over the same link would take over five weeks, which is when a shipped AWS Snowball device makes sense.
- AWS Application Migration Service: replicates whole servers continuously into AWS, so the final switch takes minutes rather than a full copy.
- AWS Database Migration Service (DMS): copies a database and then keeps replicating ongoing changes until you cut over; add the Schema Conversion Tool if you are changing database engines.
- AWS DataSync and Snowball: move file shares online, or ship data on a physical device when the network is too slow.
Understanding the real costs
A realistic budget has two parts: what it costs to run on AWS every month, and what it costs to get there. The second part is the one people forget.
| Ongoing (monthly) | One-time (migration) |
|---|---|
| Compute (EC2, containers, serverless) | Planning, migration and testing effort |
| Storage and backups | Running old and new environments in parallel, typically 2–6 weeks per wave |
| Managed databases | Replication instances and transfer devices during the move |
| Data transfer out of AWS | Licensing changes (license-included versus bring-your-own) |
| Monitoring, security services and support plan | Training the team on the new environment |
Data coming into AWS is free. Data going out to the internet is billed: at the time of writing, the first 100 GB a month is free and the next tier is about $0.09 per GB in US regions. A file-heavy application serving 5 TB a month to customers therefore adds roughly $450 a month in transfer alone, unless a CDN such as CloudFront sits in front of it.
Price everything in the AWS Pricing Calculator using the sizes from your measurements, not your current hardware specs. Larger migrations may qualify for AWS funding such as the Migration Acceleration Program, usually through an AWS partner. Once you are running, our guide to reducing AWS cloud costs covers keeping the bill under control.
Security: your half of the shared responsibility
AWS secures the data centers, hardware and underlying services. You secure everything you configure: accounts, permissions, networks, operating systems, applications and data. Almost every serious cloud incident lands on the customer's side of that line.
- Give each application its own IAM role with only the permissions it needs, and avoid long-lived access keys.
- Turn on Amazon S3 Block Public Access at the account level, so a single mistaken bucket setting cannot expose data.
- Encrypt data at rest with AWS KMS and in transit with TLS.
- Keep databases and application servers in private subnets; expose only a load balancer or CDN to the internet.
- Enable Amazon GuardDuty for threat detection and AWS Security Hub for configuration checks from day one.
- If you take card payments or hold regulated data, design for it from the start; our PCI compliance assistance covers this.
Cutover: keeping downtime to minutes
Downtime is mostly decided by how you move the data. Copying a 500 GB database during a maintenance window can take hours; replicating it continuously for days beforehand reduces the final switch to minutes.
- Full copyInitial load into AWS
- Continuous syncOngoing changes replicated
- Freeze writesMaintenance page on
- Final syncRow counts and checksums
- SwitchConnection strings and DNS
- VerifySmoke tests; old system kept
| When | Action | Owner |
|---|---|---|
| T-7 days | Lower DNS TTL on affected records from 3600 to 300 seconds. | IT |
| T-3 days | Full rehearsal against a copy; time every step. | Migration lead |
| T-1 day | Confirm replication lag is under a minute; confirm rollback steps. | DBA |
| 22:00 | Maintenance page on; stop scheduled jobs. | IT |
| 22:05 | Stop application writes; let replication drain. | DBA |
| 22:15 | Verify row counts on key tables match. | DBA |
| 22:20 | Point application and DNS at AWS. | IT |
| 22:30 | Smoke tests: log in, create an order, run a report. | Business owner |
| 23:00 | Go / no-go. If no-go: switch DNS back; old system was never changed. | Migration lead |
Common migration mistakes
- No dependency map. A forgotten integration, often a scheduled job or a scanner sending email, fails after cutover.
- Copying server sizes 1:1. You pay every hour for headroom bought for five years of growth.
- Ignoring data transfer. Traffic leaving AWS, and between regions, is billed per gigabyte.
- One big-bang weekend. No room to learn, and nowhere to roll back to.
- Security added later. Retrofitting networks and permissions under live traffic is slow and risky.
- Untested backups. A backup you have never restored is a hope, not a plan.
- Stopping at lift-and-shift. The savings usually arrive with right-sizing and managed services after the move.
Frequently asked questions
How long does an AWS migration take?
A single application, with testing, can often move in a few weeks. An estate of a few dozen servers is typically planned in waves over three to six months, depending on dependencies, data volumes and how much is replatformed along the way.
Will moving to AWS reduce our IT costs?
Often, but not automatically. Savings come from right-sizing, switching off what is not needed, managed services and commitments for steady usage. Moving servers as-is and running them around the clock can cost more than hardware you already own.
Can we migrate without downtime?
For many systems, near-zero downtime is achievable with continuous replication and a short, rehearsed switch-over. Some legacy applications still need a maintenance window, which should be scheduled at a quiet time with a tested rollback.
Do we need to rewrite our applications?
Usually not. Most workloads are rehosted or lightly replatformed first. Rewriting is worth it only where the business value justifies the cost and risk.
What happens to our databases?
They can run on EC2 as they do today, or move to a managed service such as Amazon RDS or Aurora that handles patching, backups and failover. AWS Database Migration Service keeps old and new in sync until cutover.
How CodeMutual can help
Discuss your project with CodeMutual
Tell us what you're working on. We'll come back with a plain-English plan within one business day, and you'll talk directly to the engineers who would do the work.