Moving to the cloud shouldn't feel like defusing a bomb. But for many businesses, the fear of downtime, data loss, and spiralling costs makes migration feel riskier than staying on-premise. The truth? With proper planning, cloud migration is straightforward — and the benefits are transformative.
Here's our practical, phase-by-phase checklist for migrating to Azure or AWS.
Phase 1: Discovery & Assessment
Before touching any infrastructure, you need a clear picture of what you're working with.
- Inventory all workloads — servers, databases, applications, APIs, scheduled jobs, file storage. Miss one, and you'll discover it at the worst possible time.
- Map dependencies — which applications talk to which databases? What services depend on what? Use tools like Azure Migrate or AWS Application Discovery Service.
- Identify compliance requirements — data residency laws, industry regulations (HIPAA, GDPR), and internal policies that affect where and how data can be stored.
- Benchmark current performance — response times, CPU usage, memory consumption, storage IOPS. You'll need these numbers to right-size cloud resources.
- Calculate total cost of ownership — don't just compare server costs. Include networking, storage, licensing, staff time, and the cost of maintaining on-premise hardware.
Phase 2: Strategy & Architecture
Choose a migration strategy for each workload. The "6 Rs" framework helps:
- Rehost (Lift & Shift) — move as-is to cloud VMs. Fastest, lowest risk, but doesn't leverage cloud-native benefits.
- Replatform — minor optimisations during migration (e.g., moving a database to a managed service like Azure SQL or RDS).
- Refactor — re-architect for cloud-native (containers, serverless). Highest effort, highest long-term value.
- Repurchase — replace with a SaaS solution (e.g., move a custom CRM to Salesforce).
- Retain — keep on-premise for now (legacy systems with complex dependencies).
- Retire — decommission applications no longer needed.
Phase 3: Foundation & Landing Zone
Set up your cloud environment properly before migrating anything:
- Identity & access management — Azure AD / AWS IAM with role-based access control (RBAC). Never use root accounts for daily operations.
- Networking — VPCs/VNets with proper subnetting, network security groups, and VPN or ExpressRoute/Direct Connect for hybrid connectivity.
- Monitoring & logging — Azure Monitor + Log Analytics or AWS CloudWatch + CloudTrail from day one. Don't wait until something breaks.
- Cost management — budget alerts, resource tagging, and auto-shutdown policies for non-production environments.
- Backup & disaster recovery — automated backup policies with tested restore procedures.
Phase 4: Migration Execution
Migrate in waves, starting with low-risk workloads:
- Wave 1: Dev/Test environments — test your process, tooling, and runbooks with non-production systems.
- Wave 2: Non-critical production — internal tools, documentation sites, reporting databases.
- Wave 3: Core business applications — with detailed runbooks, rollback plans, and scheduled maintenance windows.
- Wave 4: Databases and stateful services — the hardest part. Use Azure Database Migration Service or AWS DMS for minimal downtime.
Phase 5: Validation & Optimisation
Migration isn't done when the servers are running in the cloud. Post-migration is critical:
- Performance testing — compare against your pre-migration benchmarks. Identify bottlenecks.
- Security scan — run vulnerability assessments. Check for open ports, misconfigured storage (public S3 buckets), and excessive permissions.
- Cost optimisation — right-size instances after 2-4 weeks of real usage data. Buy reserved instances for predictable workloads.
- Documentation — update architecture diagrams, runbooks, and disaster recovery plans.
- Decommission on-premise — only after validation is complete and a rollback window has passed.