Cloud migration cost estimation fails when teams only compare compute pricing. The real cost includes data transfer fees, engineering time, downtime risk, retraining, and opportunity cost. This guide provides a framework for calculating total migration cost, identifying hidden expenses, estimating realistic timelines, and building an ROI model that stakeholders actually trust.
Gartner's 2026 cloud migration analysis found that 60% of migration projects exceed their initial budget by 20-50%. The primary cause is underestimating non-infrastructure costs: engineering labor, testing, documentation updates, and temporary parallel-running expenses. Teams that use a structured cost model before starting complete migrations 40% faster and 35% under the unstructured average budget.
---
The Total Cost of Migration Framework
Migration cost is not just "new provider monthly bill minus old provider monthly bill." It consists of five cost categories that must be estimated independently.
| Cost Category | Typical % of Total | Often Overlooked |
| Infrastructure (new provider) | 25-35% | No |
| Engineering labor | 30-40% | Yes |
| Parallel running costs | 10-15% | Yes |
| Testing and validation | 8-12% | Yes |
| Risk and contingency | 5-10% | Yes |
Infrastructure Cost Calculation
Start with your current monthly bill and map each line item to the new provider equivalent.
<h1>migration-cost-model.yaml</h1>
current_monthly_costs:
compute:
ec2_instances: 182 # 3x t3.large on-demand, us-east-1: 3 x $0.0832/hr x 730 hrs
reserved_amortized: 0 # if using reserved instances
database:
rds_postgresql: 283 # db.m5.large Multi-AZ, 100 GB gp2: $0.356/hr x 730 + 100 x $0.23
rds_snapshots: 45
storage:
s3_storage: 12 # 500 GB standard x $0.023/GB
s3_requests: 35 # GET/PUT requests
ebs_volumes: 24 # 3x 100GB gp3 x $0.08/GB
networking:
data_transfer: 81 # 1 TB outbound: (1000 - 100 free) GB x $0.09
nat_gateway: 95 # 2x NAT gateways
elastic_ips: 15
other:
cloudwatch: 65
route53: 12
secrets_manager: 8
total_current: 857
projected_monthly_costs: # at list usage rates, before any included plan hours or bundle discounts
arxentra:
platform_plan: 25 # Team plan fee
vps_instances: 105 # 3x (2 vCPU + 8 GB RAM), usage-based, 24/7
managed_postgresql: 50 # single-instance PostgreSQL, 2 vCPU + 8 GB RAM ($35.04) + 100 GB x $0.15
object_storage: 7 # third-party (Cloudflare R2), 500 GB: (500 - 10 free) x $0.015, no egress fees
bandwidth: 45 # 1 TB outbound: (1000 - 100 free) GB x $0.05
dns: 0 # included
monitoring: 0 # included
load_balancer: 0 # included
total_projected: 232
monthly_savings: 625 # 72.9% reduction
annual_savings: 7500
---
Engineering Labor Cost Estimation
Engineering time is the largest hidden cost. Use this formula to estimate labor costs accurately.
Labor Cost = (Engineer Hourly Rate) x (Hours per Service) x (Number of Services) x (Complexity Multiplier)
| Service Type | Base Hours | Simple (1.0x) | Medium (1.5x) | Complex (2.5x) |
| Web application | 16 | 16 hrs | 24 hrs | 40 hrs |
| API service | 12 | 12 hrs | 18 hrs | 30 hrs |
| Database | 8 | 8 hrs | 12 hrs | 20 hrs |
| Background workers | 10 | 10 hrs | 15 hrs | 25 hrs |
| Cron jobs | 4 | 4 hrs | 6 hrs | 10 hrs |
| Static sites | 2 | 2 hrs | 3 hrs | 5 hrs |
| DNS/networking | 4 | 4 hrs | 6 hrs | 10 hrs |
Complexity Multipliers
- Simple (1.0x): Standard deployment, no custom networking, single region
- Medium (1.5x): Custom VPC, multiple interconnected services, staging environment
- Complex (2.5x): Multi-region, compliance requirements, custom routing, data residency
<h1>Quick labor cost estimate</h1>
<h1>Example: 3 API services (medium), 2 databases (simple), 1 web app (medium)</h1>
api_cost=$((3 * 18 * 85)) # 3 services x 18 hrs x $85/hr = $4,590
db_cost=$((2 * 8 * 85)) # 2 databases x 8 hrs x $85/hr = $1,360
web_cost=$((1 * 24 * 85)) # 1 web app x 24 hrs x $85/hr = $2,040
total_labor=$((api_cost + db_cost + web_cost)) # $7,990
echo "Estimated labor cost: $${total_labor}"
---
Hidden Cost Inventory
These costs appear in every migration but are rarely budgeted upfront.
---
Timeline Estimation
| Phase | Duration | Activities |
| Assessment | 1-2 days | Inventory, dependency mapping, cost modeling |
| Preparation | 2-3 days | Account setup, networking, security configuration |
| Migration (dev/staging) | 3-5 days | Migrate non-production environments first |
| Testing | 2-3 days | Functional, performance, and security validation |
| Migration (production) | 1-2 days | Production cutover with rollback plan |
| Validation | 2-3 days | Monitor, verify, adjust |
| Decommission | 1 day | Tag old resources, schedule deletion |
Total: 12-19 business days for a typical startup with 3-8 services.
Add 50% buffer for the first migration. Subsequent migrations within the same organization are typically 40% faster due to established patterns and tooling.
---
ROI Calculation Model
The ROI formula accounts for both cost savings and productivity gains.
<h1>roi-model.yaml</h1>
one_time_costs:
engineering_labor: 7990
parallel_running: 857 # 1 month of old provider
testing_tools: 0 # using existing tools
documentation: 1020 # 12 hrs x $85/hr
training: 680 # 8 hrs x $85/hr
contingency_10pct: 1055
total_one_time: 11602
recurring_savings:
monthly_infra_savings: 625
monthly_ops_time_savings: 680 # 8 hrs/month less maintenance
total_monthly_savings: 1305
breakeven_months: 8.9 # 11602 / 1305 = 8.89 months
year_1_net_savings: 4058 # (1305 x 12) - 11602
year_2_net_savings: 15660 # 1305 x 12 (no one-time costs)
In this example breakeven lands at about 9 months, because engineering labor dominates the one-time cost; a larger current bill or a simpler migration shortens it. Check Pricing for current Arxentra rates and use the interactive calculator to model your specific workload.
---
Risk Assessment Framework
Rate each risk on impact (1-5) and probability (1-5). Multiply for priority score.
| Risk | Impact | Probability | Score | Mitigation |
| Extended downtime during cutover | 5 | 2 | 10 | Blue-green deployment, DNS failover |
| Data loss during database migration | 5 | 1 | 5 | pg_dump verification, parallel replication |
| Performance degradation | 3 | 2 | 6 | Load testing before cutover |
| Team unfamiliarity with new platform | 2 | 4 | 8 | Training sessions, documentation |
| Third-party integration breakage | 3 | 3 | 9 | Integration testing checklist |
| Budget overrun | 2 | 3 | 6 | 10% contingency buffer |
Any risk scoring 10 or above requires a documented mitigation plan before starting migration. Review our Documentation for platform-specific risk mitigation guides.
---
Frequently Asked Questions
What is the minimum team size needed for a cloud migration?
A single senior engineer can handle migrations for applications with up to 5 services. For 5-15 services, budget for 2-3 engineers working in parallel. Above 15 services, consider a dedicated migration team of 3-5 engineers plus a project coordinator.
Should I migrate everything at once or service by service?
Service-by-service migration is safer and recommended for production workloads. Start with the least critical service to build confidence and establish patterns, then migrate progressively toward the most critical systems.
How do I convince stakeholders to approve the migration budget?
Present the ROI model with conservative estimates. Show the breakeven point (about 9 months in the example above), the 12-month net savings, and the reduced operational burden. Include the risk of staying: AWS price increases, growing complexity, and vendor lock-in costs.
What if the migration fails partway through?
Every migration step in this guide includes rollback procedures. The parallel-running period ensures your old infrastructure remains fully operational. DNS-based cutover means you can revert to the original provider in under 5 minutes.
Are there migration tools that automate the process?
Arxentra provides a CLI with import commands for DNS records and database dumps. For object storage, rclone handles S3-to-S3-compatible transfers efficiently. Infrastructure-as-code tools like Terraform can manage resources on both providers simultaneously during migration.
How do I account for opportunity cost in the ROI model?
Estimate the revenue impact of engineering hours spent on migration instead of product development. For a team with $50K monthly revenue growing 10% month-over-month, a 3-week migration delay costs approximately $5K in deferred revenue growth. Factor this against the long-term savings to determine optimal migration timing.