Why rate-card comparisons mislead

A list-price comparison between an m6i.large and a DO Premium Intel Droplet ignores egress, support, RI commitments still on the AWS bill, snapshot retention, managed-database sizing differences, and migration egress out of AWS. Real savings often differ from list-price savings by 20–40 percentage points.

Setting the AWS baseline before you migrate

Tag the migrating workload with `migration-target:do` on AWS. Capture three consecutive months of baseline cost by service. Note seasonality (e.g. end-of-month batch jobs) so the post-cutover comparison uses like-for-like months.

Running both clouds in parallel without losing the signal

Tag the new DO resources with the same project slug used on AWS. Connect both providers to one ledger so the same project appears in both columns. The migration month should show AWS spend decreasing and DO spend increasing on the same row.

The four hidden DO migration costs

Egress out of AWS during data transfer (often the largest one-time cost). Spaces parity if S3 lifecycle rules and IA storage classes were heavily used. Managed-database sizing differences (DO's managed PG sizing increments differ from RDS). Snapshot retention costs, which often go up when teams reset retention policy during a migration.

  • Egress out of AWS — budget explicitly, often $0.05–$0.09 per GB.
  • Spaces vs S3 storage-class parity — IA-equivalent isn't 1:1.
  • Managed DB sizing — DO increments differ; the closest 'fit' may cost more.
  • Snapshot retention drift after the cutover.

Validating savings 30/60/90 days after cutover

Day 30: confirm AWS spend on the migrated workload dropped to near-zero and any remainder is decommissioning lag (snapshots, idle EIPs, parked Load Balancers). Day 60: confirm DO spend has stabilized at expected steady-state. Day 90: publish the savings number with both AWS-drop and DO-add components.

Decommissioning checklist

Snapshots removed. EBS volumes deleted. Idle EIPs released. Load Balancers torn down. Route 53 zones moved or retained intentionally. RDS final snapshot taken or skipped explicitly. Each item should hit the cost ledger as it's done so the AWS bill keeps dropping in observable steps.

Locking in the new baseline

After day 90, rebase the project's expected monthly spend on the new DO+remaining AWS combined number. Future deltas should be measured against this baseline, not the pre-migration AWS-only one, or the savings number drifts every month.

Who tovin.io is for

Frequently asked

Is DigitalOcean always cheaper?

For predictable web workloads, usually yes. For spiky compute with mature AWS Reserved Instance coverage, not always — the RI rate can beat DO list price for the same workload class.

How do I track the migration month?

Keep both providers connected in one ledger and tag the migrating workload with the same project slug on both sides. The migration row shows AWS dropping and DO rising in parallel.

What about egress costs?

Egress out of AWS during migration is often the largest one-time cost. Budget for it explicitly and treat it as a migration capital expense, not steady-state.