How Cloud Migrations Go Wrong (And How to Avoid It)
Cloud migrations fail in predictable ways. Here's how to see the problems coming.
Last updated: March 20, 2026
A Baton Rouge manufacturing company spent eight months and $180,000 moving their ERP to AWS. Six weeks after go-live, they were back on their old server. The migration team had underestimated database complexity, and the new system fell over whenever more than ten users ran reports simultaneously.
This happens more than vendors admit. Here's why.
What can go wrong
Underestimated database complexity. Most applications aren't "move a folder." They have databases with stored procedures, triggers, complex joins, and dependencies on specific character encodings or collation settings. Migration tools often don't catch these until you're running in production.
Performance that looked fine in testing falls apart under real load. Your on-premises server has 32GB RAM and handles 50 concurrent users. You migrate to a cloud instance with "equivalent" specs, but the cloud instance uses network-attached storage with 10x the latency. Your queries that took 200ms now take 2 seconds. Your application wasn't built for that.
Secret management failures. Database passwords, API keys, and service accounts live in config files or environment variables. During migration, these credentials either get hardcoded into the new environment or they get lost. Both are bad.
Incomplete DNS cutover. You migrate your web app but forget that you have API calls, webhooks, and integrations pointing to old IP addresses. Some work. Some don't. You spend three weeks debugging intermittent failures.
Backup and disaster recovery that doesn't work. You migrated the database but didn't test restoring it. When a developer accidentally drops a table in production, your point-in-time recovery takes 18 hours instead of the expected 15 minutes—and you're still figuring this out at 2am.
Egress costs nobody planned for. Your old server sends backups to a local NAS. Your new cloud server sends backups to a different region. Your first egress bill is $800.
Vendor lock-in that makes retreat expensive. You migrated to AWS using AWS-specific services (RDS, Lambda, DynamoDB). Eighteen months later, you want to leave. You can't—your application is too tightly coupled to AWS primitives. You're stuck.
What it costs (2025-2026)
Small website or WordPress migration:
- DIY: $0-500 (your time + potential for mistakes)
- Managed migration by host: $0-200 (many hosts include this)
- Professional migration service: $500-2,000
Business application (CRM, ERP, custom app):
- Project planning and discovery: $2,000-10,000
- Migration engineering: $5,000-50,000 depending on complexity
- Post-migration optimization: $2,000-15,000
- Total typical range for SMB: $15,000-75,000
Failed migration (having to go back):
- Emergency rollback engineering: $10,000-40,000
- Business interruption costs: varies wildly
- Data recovery (if needed): $5,000-50,000
How to avoid the common failures
1. Spend two weeks planning before you touch anything. Document your current environment completely: all servers, databases, IP addresses, DNS records, integrations, backup schedules, and dependencies. You can't migrate what you don't know about.
2. Test performance in a mirror environment. Spin up an exact copy of your target architecture. Run your actual workload against it. Don't just ping the server—run your real reports, real queries, real user flows.
3. Build a rollback plan before you start. Know exactly how to get back to where you started. If you can't roll back cleanly, you shouldn't migrate.
4. Run parallel systems during cutover. Keep your old system running for 30-60 days after migration. Run both. Compare outputs. Only decommission the old system when you're certain the new one is stable.
5. Test your backups and disaster recovery. Before go-live, actually restore your database from a backup to a fresh instance. Time it. Document the process.
6. Audit egress costs before and after. Know what you're paying for data transfer now. Calculate what it will cost after migration.
7. Minimize cloud-specific services at first. Use managed services (RDS, ElastiCache) if they make sense, but don't use AWS-only primitives unless you have a specific reason. PostgreSQL runs on any cloud. Aurora does not.
Vendor questions (copy/paste)
- How do you handle database migrations with complex stored procedures or legacy schemas?
- What's your rollback process if something goes wrong during cutover?
- Can you give me a reference customer with a similar workload who migrated 12+ months ago?
- How do you handle secret management and credential migration?
- What's your experience with migrations in the [manufacturing/healthcare/retail] sector?
- Do you use cloud-agnostic tools and architectures, or will we be locked into one provider?
Minimum viable implementation
- Document everything. List every server, database, IP address, DNS record, integration, and dependency. Two weeks of planning prevents three months of firefighting.
- Set up a test environment that mirrors your target architecture. Run your actual workload against it before you commit.
- Write a rollback plan. If you can't execute it, you haven't migrated yet.
- Plan for 30 days of parallel operation. Old system stays on. You run both. You compare.
- Test disaster recovery. Actually restore a backup. Time it. Fix what's broken.
When to hire help
- Your migration involves more than two servers and one database.
- You're migrating business-critical systems (ERP, CRM, order processing).
- Your team has never done a cloud migration before.
- You have compliance requirements (HIPAA, PCI, SOC 2) that add complexity.
- You had a failed migration attempt before.
- Your budget is over $20,000 and you can't afford a do-over.
The best migrations we've seen all share one trait: they spent more time planning than executing. The failed ones tried to skip the planning phase.
Related Reading
7 min · Intro
Cloud Billing Checklist: What to Verify Before You Sign
Stop cloud billing surprises before they hit your account.
7 min · Intro
Cloud Egress Fees: The Surprise Bill You Didn't Plan For
Your cloud data transfer costs can spike unexpectedly. Here's why and how to manage them.
7 min · Intro
How Real Cloud Costs Compare to What You Think
Cloud costs look simple until you get the bill. Here's what actually matters.
7 min · Intro
Hybrid Hosting: When Cloud and Self-Hosting Both Make Sense
Hybrid hosting isn't for everyone. Here's how to know if it's right for your business.
8 min · Intro
Managed Hosting vs. Managed Services vs. Self-Hosting
Managed hosting, managed services, and self-hosting are different things. Here's how to pick.