Heroku to AWS Migration

Migrating from Heroku to AWS: Postgres and Beyond

Practical guide for engineering teams migrating off Heroku — covering Postgres to RDS, Dynos to EC2 or Fargate, buildpack-to-Docker conversion, and CI/CD re-plumbing on AWS. From FactualMinds, an AWS Select Tier Consulting Partner specializing in AWS migrations.

Ask AI: ChatGPT Claude Perplexity Gemini

Heroku changed the developer experience permanently when it launched in 2007. git push heroku main deploying a production application was genuinely magical. For over a decade, Heroku was the default answer for teams that wanted to ship fast without managing infrastructure.

The calculus shifted in November 2022 when Heroku retired its free tier and shortly after discontinued its cheapest database plans. Teams that had been staying on Heroku for cost or inertia reasons suddenly had a concrete reason to evaluate AWS. This guide is for those teams.

We are an AWS Select Tier Consulting Partner. We will be direct about what Heroku does better — and what makes AWS the stronger long-term platform for most teams.

Heroku to AWS Service Mapping

Heroku ServiceAWS EquivalentNotes
Dynos (web)ECS Fargate or EC2Fargate for containers; EC2 for lift-and-shift or simpler setup
Dynos (worker)ECS Fargate tasks or Lambda + SQSLambda for event-driven workers; Fargate for long-running processes
Heroku PostgresAmazon RDS (PostgreSQL)RDS adds Multi-AZ, read replicas, automated snapshots
Heroku RedisAmazon ElastiCache for RedisElastiCache adds cluster mode and Global Datastore
Heroku SchedulerAmazon EventBridge Scheduler + LambdaEventBridge Scheduler provides cron-based invocation of Lambda functions
Heroku PipelinesAWS CodePipeline or GitHub ActionsGitHub Actions is the simpler starting point for most teams
Heroku Review AppsNo direct equivalentApproximated with ECS task-per-branch or Lambda function URLs
Heroku Add-onsAWS Marketplace or native servicesMany Heroku add-on vendors also have AWS Marketplace listings
Config VarsAWS Systems Manager Parameter Store or Secrets ManagerSecrets Manager for sensitive values; Parameter Store for non-sensitive config

Cost Comparison

Heroku’s pricing after the 2022 changes is no longer competitive for most workloads.

Compute

PlanHerokuAWS EquivalentAWS Monthly Cost
512 MB / 1x CPUStandard-1X — $25/monthEC2 t3.small (2 vCPU, 2 GB)~$15/month
1 GB / 2x CPUStandard-2X — $50/monthEC2 t3.medium (2 vCPU, 4 GB)~$30/month
Container-basedEco Dynos at $5/month eachECS Fargate (0.25 vCPU, 0.5 GB)~$8/month

Add an Application Load Balancer (~$16/month) to the AWS side — Heroku’s routing tier is included. At 2+ Dynos, AWS pulls ahead on cost.

Managed Postgres

PlanHerokuAWS RDS EquivalentAWS Monthly Cost
Mini / Hobby (100K rows)$5/monthRDS db.t3.micro, 20 GB (dev only)~$14/month
Basic (10M rows, no HA)$9/monthRDS db.t3.micro, 20 GB~$14/month
Standard-0 (64 GB RAM)$50/monthRDS db.t3.small, 20 GB~$28/month
Standard-2 (61 GB RAM, 400 conn limit)$200/monthRDS db.m6g.large, 100 GB~$120/month
Premium-0$200/monthRDS db.r6g.large Multi-AZ, 100 GB~$185/month
Premium-4$800/monthRDS db.r6g.2xlarge Multi-AZ, 500 GB~$580/month

Note: Heroku Postgres Standard and Premium plans include one free follower replica for read scaling. For equivalent read scaling on RDS, add a read replica (~50% of primary instance cost). Heroku’s multi-region support would require additional replicas.

Explore other technical comparisons:

Why Choose FactualMinds for Your AWS Migration

FactualMinds is an AWS Select Tier Consulting Partner specializing in cloud platform migrations. We have executed GCP, DigitalOcean, Heroku, and MongoDB migrations to AWS and know the pitfalls.


Frequently Asked Questions

Why should I migrate from Heroku to AWS?
Heroku ended its free tier in November 2022 and retired several entry-level database plans, making the cost comparison with AWS far less favorable than it used to be. At any non-trivial scale, AWS is cheaper. Beyond cost, the migration makes sense when you need compliance certifications (Heroku has SOC 2; AWS has SOC 2, HIPAA, PCI DSS, and more), need to use other AWS services (SES, SQS, Lambda, Bedrock), or want more control over your infrastructure. Teams migrating often find that AWS is more complex upfront but provides significantly more flexibility as their application grows.
How do I migrate Heroku Postgres to RDS?
The standard path is pg_dump and pg_restore. Export your Heroku Postgres database with `heroku pg:backups:capture && heroku pg:backups:download`, then restore into RDS using `pg_restore`. For larger databases or near-zero-downtime migrations, AWS DMS supports Heroku Postgres as a source (it is standard PostgreSQL) and can replicate ongoing changes while you validate your application against RDS. Plan for connection string updates — your app will need to point to the new RDS endpoint.
Is AWS cheaper than Heroku?
For most workloads at any meaningful scale, yes. A Heroku Standard-1X Dyno costs $25/month; an AWS EC2 t3.small with comparable specs costs around $15/month. Heroku Postgres Standard-0 is $50/month; RDS db.t3.small (PostgreSQL) runs around $28/month. The gap widens with scale. The trade-off is operational overhead — Heroku is faster to deploy and requires less DevOps knowledge. AWS requires managing VPCs, security groups, and deployment pipelines, but those one-time costs amortize quickly.
What replaces Heroku Dynos on AWS?
It depends on your workload. For web processes with variable traffic, ECS Fargate is the closest equivalent — you define container resources and Fargate handles the underlying infrastructure. For simple single-instance applications, EC2 is simpler to reason about. For event-driven or background worker processes, Lambda is often a better fit than Dynos. The Heroku worker Dyno type maps naturally to ECS Fargate tasks running in the background or Lambda functions triggered by SQS queues.
How do I move my Heroku app to AWS?
The migration has four main steps: (1) Convert your Heroku buildpack app to a Docker container image; (2) Migrate your Postgres database to RDS using pg_dump/restore or AWS DMS; (3) Provision ECS Fargate, EC2, or Lambda on AWS with equivalent compute resources; (4) Re-plumb your CI/CD pipeline from Heroku auto-deploy to GitHub Actions pushing to ECR and deploying to ECS or Lambda. Expect 2–6 weeks depending on application complexity and team familiarity with AWS.

Ready to Migrate to AWS?

FactualMinds is an AWS Select Tier Consulting Partner. We run assessment-first migrations — mapping your current architecture, estimating risk, and executing with zero-downtime cutover strategies.