I am a...
Learn more
How it worksPricingFAQ
Account
May 8, 2026 · 10 min read · Cadence Editorial

Cost to migrate from Heroku to AWS

cost to migrate heroku to aws — Cost to migrate from Heroku to AWS
Photo by [Brett Sayles](https://www.pexels.com/@brett-sayles) on [Pexels](https://www.pexels.com/photo/server-racks-on-data-center-5480781/)

Cost to migrate from Heroku to AWS

Migrating from Heroku to AWS in 2026 typically costs $8,000 to $40,000 in engineer-weeks, plus a $400 to $4,000 monthly AWS bill afterwards. Plan for 4 to 12 engineer-weeks of focused work to ship a production-grade setup. Most teams spending under $5,000/month on Heroku should migrate to Render or Fly.io instead, not raw AWS.

That answer surprises people, so we're going to defend it with line-item math, real engineer-week budgets at three scales, and a budget table built on Cadence's locked weekly pricing tiers (junior $500, mid $1,000, senior $1,500, lead $2,000). If you read nothing else, read the section called "Dollar math at three scales."

The honest answer: most teams should not migrate to raw AWS

Every migration guide on the internet sells you the migration. We're going to start somewhere different: most Heroku teams should not be on raw AWS.

Raw AWS makes sense when one of three things is true. First, you have a compliance requirement (HIPAA, SOC 2 Type II with custom controls, FedRAMP) that Heroku Shield can't cover or that costs more on Heroku Shield than building it yourself. Second, your Heroku bill is north of $5,000/month and the savings curve is real. Third, you have scale-out needs (custom GPU compute, VPC peering with on-prem, region-specific data residency) that PaaS can't give you.

If none of those three apply, the right answer is usually Render or Fly.io. Both feel like Heroku, both run on top of AWS or GCP under the hood, both cost 30 to 60% less than Heroku for the same workload, and both can be migrated to in 1 to 2 engineer-weeks instead of 4 to 12. We've published honest reviews on each: the Render review covers managed Postgres + auto-deploys, the Fly.io review covers global edge regions, and the Vercel review is worth reading if your app is mostly Next.js with serverless functions.

The 80/20 rule is simple. Eighty percent of Heroku migrations should go to Render or Fly. Twenty percent need raw AWS. This post is for people who genuinely fall in that twenty percent, plus people who want to confirm they don't.

What you actually rebuild on AWS

Heroku is a fully-formed PaaS. AWS is a parts bin. When you migrate, you are rebuilding every layer Heroku gave you for free. Here's the parts list.

Compute. You pick one of three:

  • ECS Fargate (recommended starting point). Serverless containers. $0.04048/vCPU-hour + $0.004445/GB-hour. A 0.5 vCPU / 1GB task running 24/7 costs about $34/month. You don't manage instances, you only manage task definitions.
  • EC2 + ECS or raw EC2. You manage instances. Cheaper at steady state (50 to 70% less than Fargate) once you commit to Reserved Instances or Savings Plans. Worth it only when monthly compute exceeds $1,500.
  • Lambda. Per-request pricing. Great for cron jobs, webhooks, and bursty work. Bad for long-running web servers.

Database. RDS Postgres is the drop-in for Heroku Postgres. The connection string format changes; your app code usually doesn't. A db.t4g.small is about $25/month, plus storage and IOPS. Aurora Postgres costs more but auto-scales storage and gives you read replicas without the connection-pooling pain. Self-managed Postgres on EC2 saves money but you now own backups, failover, and patching.

Storage and CDN. S3 for blob storage ($0.023/GB-month for standard tier), CloudFront for the CDN ($0.085/GB egress for the first 10TB). If your Heroku app uses Bucketeer or Cloudinary, this is a clean swap.

Networking. VPC, subnets across at least two availability zones, an Application Load Balancer ($16/month minimum, then per-LCU charges), and Route53 for DNS ($0.50/zone/month plus query fees).

Security. IAM roles for every service. Secrets Manager ($0.40/secret/month) or Parameter Store (free for standard parameters) for environment variables. WAF if you're public-facing and want bot protection.

That's the parts list. Heroku gave you all of it as one config file. AWS asks you to build, wire, and monitor each piece yourself.

Real engineer-week cost by migration profile

Migration timelines vary 3x based on scope. Here's the honest breakdown by profile, calibrated against real case studies (Checkly, Qovery, One2N) plus our own engineer pool's project logs.

Small migration (1 to 3 services, 1 Postgres, no workers). 4 to 6 engineer-weeks. One senior can do this end-to-end. Scope: rebuild one web app, one Postgres, basic CI/CD with GitHub Actions, CloudWatch logs, IAM roles. No multi-region, no Aurora, no service mesh.

Medium migration (5 to 10 services, 1 to 2 databases, 1 to 3 background workers, Redis or SQS). 6 to 10 engineer-weeks. A senior plus a mid in parallel, or one lead working solo. Scope adds: queue infrastructure (SQS or self-hosted Redis on ElastiCache), worker task definitions, blue/green deploys, secrets rotation, basic observability.

Large migration (10+ services, multiple databases, GraphQL gateway, complex queue topology, scheduled jobs). 10 to 16 engineer-weeks. A lead plus a senior plus a mid. Scope adds: VPC peering, multi-AZ failover testing, RDS Aurora with read replicas, CloudWatch + Datadog or Grafana, IaC with Terraform or CDK from day one.

If you've never migrated before, add 30%. If you have a small team and you're shipping product in parallel, add 50%.

Dollar math at three scales

This is the part most migration guides skip. Here's whether the migration pencils out at three real Heroku bill sizes.

$500/month Heroku. AWS will save you maybe $200 to $300/month. Best case engineer cost is 4 weeks at $1,500/week = $6,000. Payback period: 20 to 30 months. Don't do it. Migrate to Render or Fly.io in 1 to 2 weeks instead.

$2,000/month Heroku. AWS will save you $800 to $1,400/month. Engineer cost: 6 weeks at $1,500/week = $9,000, plus ongoing DevOps maintenance (figure 0.25 of an engineer ongoing). Payback period: 9 to 14 months without maintenance, 18 to 24 with. Borderline. Render or Fly.io is still probably the right call unless you have a compliance reason.

$8,000/month Heroku. AWS will save you $3,200 to $6,400/month. Engineer cost: 10 weeks at $2,000/week (lead) = $20,000. Payback period: 4 to 7 months. Yes, migrate. This is where raw AWS starts paying off, and where the work justifies a dedicated engineering window.

The honest range from the top migration guides is "AWS reduces Heroku costs 40 to 80%." That number is real, but it ignores the engineer-week opportunity cost. When you factor it in, the break-even moves from "always" to "above $3,000/month Heroku." Below that, the math doesn't work, and you should redirect that engineering time toward the actual product cost decisions that move revenue.

Budget table: Heroku-to-AWS migration with locked Cadence tiers

Five real ways to staff a migration, with engineer-week cost using locked Cadence pricing where relevant.

ApproachEngineer costTimelineProsCons
DIY (founder or small team)$0 cash, 6-12 weeks of your time6-12 weeksFree, you learn AWS deeplyYou stop shipping product, mistakes get expensive
DevOps agency (US/EU)$25,000-$80,000 fixed-bid6-10 weeksProven playbook, hands-offOverkill for small apps, slow procurement, no continuity
Freelance consultant$120-$250/hr, $20,000-$60,000 total4-10 weeksCheaper than agency, flexibleQuality variance, no replacement guarantee
Render or Fly.io migration (skip AWS)1-2 engineer-weeks at $1,000-$1,500/wk = $1,000-$3,0001-3 weeksSaves 80% of the work, similar Heroku ergonomicsNot raw AWS, less control over networking
Cadence (book a senior or lead)$1,500-$2,000/wk × 4-12 weeks = $6,000-$24,00048-hour trial → shipEvery engineer is AI-native (Cursor, Claude Code, Copilot fluency vetted), weekly billing, replace any weekLess suited to procurement-heavy enterprise

Pricing tiers above are Cadence's locked tiers: junior $500/week, mid $1,000/week, senior $1,500/week, lead $2,000/week. There is no "starter" or "premium" tier. The senior tier is the right default for AWS migration work; the lead tier is correct if you're crossing the 10-service or multi-region line.

Hidden costs that wreck migration budgets

Five line items that surprise teams in month two.

NAT Gateway. $0.045/GB processed, plus $0.045/hour per gateway. Every Fargate task in a private subnet pulling container images, calling Secrets Manager, or hitting external APIs routes through NAT Gateway. A medium app can rack up $150 to $500/month here without realizing it. Mitigation: VPC endpoints for S3 and ECR, or put non-sensitive workers in public subnets.

ALB minimums. $16/month minimum per Application Load Balancer, plus per-LCU charges. If you have one ALB, no big deal. If you split per-service, the math gets ugly fast.

CloudWatch logs. $0.50/GB ingested + $0.03/GB-month stored. Default retention is forever. A chatty Rails or Node app can generate 100GB/month easily. Mitigation: log levels, retention policies, ship to S3 for cold storage.

Data transfer between AZs. $0.01/GB inbound + outbound. Multi-AZ RDS plus chatty service-to-service traffic can produce $100 to $400/month. Mitigation: keep services and their primary database in the same AZ when possible.

DevOps maintenance forever. Heroku gave you this for free. AWS doesn't. Budget 0.1 to 0.25 of an engineer indefinitely for patches, IAM cleanup, certificate rotation, on-call. At Cadence mid rates that's $400 to $1,000/month ongoing. This is the line item that flips break-even calculations.

If you skim only one section, skim this one. The shape of an AWS bill is "compute looks cheap, everything around compute kills you." The same is true for adding TypeScript to a JavaScript codebase and other migration projects: the headline number is half the real number.

The fastest path: book it for the migration window

If you've worked the math and AWS is genuinely the right destination (you're spending $5k+/month on Heroku, or you have a compliance gate, or you need scale-out PaaS can't give), here is the fastest sane path.

Step one: write the migration spec. One page. List every service, every database, every queue, every cron, every external integration. This becomes your acceptance criteria.

Step two: book a senior engineer (or a lead if you're in the 10+ services bucket) for a fixed migration window. Weekly billing matters here because migrations almost always run 30 to 50% over the original estimate, and you want the option to renew or replace without penalty. Every engineer on Cadence is AI-native by default, vetted on Cursor, Claude Code, and Copilot fluency before they unlock bookings, and our engineer pool of roughly 12,800 includes people who have shipped this exact migration multiple times. Median time to first commit is under 30 hours from booking.

If you'd rather not commit upfront, book a senior engineer for a 48-hour trial and let them scope the migration in the first two days at no cost. You'll know by Wednesday whether it's a 4-week job or a 10-week job, and you can either continue at $1,500/week or part ways with no notice period.

Step three: after the migration ships, drop to a mid tier ($1,000/week) for ongoing maintenance, or share the load with your existing team. The senior was for the build. The maintenance burden is smaller and doesn't justify the senior rate.

If you're staring at a Heroku bill, comparing migration costs, and not sure whether AWS, Render, or Fly is the right destination, the Build/Buy/Book decision tool will give you a recommendation in 90 seconds based on your stack, scale, and timeline. It's free and we built it because the right answer is genuinely "don't migrate to AWS" more often than the AWS sales pages admit.

FAQ

Is migrating from Heroku to AWS worth it under $2,000/month?

Usually no. The engineer-week cost (4 to 12 weeks at $1,000 to $2,000/week) takes 12 to 24 months to recoup at that scale. Migrate to Render or Fly.io instead. Both feel like Heroku, both cost 30 to 60% less, and both can be migrated to in 1 to 2 weeks.

How long does a typical Heroku to AWS migration take?

4 to 6 engineer-weeks for small apps (1 to 3 services, 1 Postgres, no background workers). 6 to 10 weeks for medium apps with workers, queues, and Redis. 10 to 16 weeks for complex apps with 10+ services, multiple databases, and GraphQL gateways. Add 30% if no one on the team has migrated before.

Should we use ECS Fargate or EC2 for compute?

Start with Fargate for operational simplicity. You'll pay 2 to 3x the per-vCPU rate of EC2, but you save weeks on instance management, autoscaling groups, and AMI updates. Drop to EC2 with Reserved Instances or Savings Plans only when your monthly Fargate bill exceeds $1,500 and your load is steady-state, not bursty.

What is the cheapest production-grade AWS setup that replaces Heroku?

ECS Fargate (1 vCPU / 2GB tasks), RDS Postgres on db.t4g.small with 20GB storage, one Application Load Balancer, S3 + CloudFront for static assets, Secrets Manager for env vars. Roughly $250 to $450/month at low traffic, before NAT Gateway, CloudWatch logs, and data transfer charges.

Can one engineer do the whole migration?

For small apps, yes. A senior with prior AWS experience can ship a 1 to 3 service migration in 4 to 6 weeks solo. For 10+ services with workers, queues, and multi-AZ databases, you want a lead in the architect seat plus a mid handling task definitions and CI/CD in parallel. The bottleneck is usually waiting for IAM and VPC review, not engineering capacity.

All posts