Zhivko Todorov
ALL CASE STUDIES

CASE 20 · PARALLEL · 2024

HEROKU → AWSECS FARGATERAILSRDS

Off Heroku, onto a bill that scales.

A B2B marketplace had outgrown Heroku — both the bill ($38k/month for Performance dynos and Heroku Postgres) and the operational ceiling. We moved a six-year-old Rails monolith plus three microservices to ECS Fargate and Aurora Postgres without rewriting the deploy pipeline.

INDUSTRY

B2B marketplace

DOMAIN

MIGRATION

DELIVERED

2024

STACK

ECS FARGATE·AURORA POSTGRES·ELASTICACHE REDIS·CODEBUILD·CODEDEPLOY·S3 + CLOUDFRONT·PARAMETER STORE

RESULTS

What changed, by the numbers.

INFRASTRUCTURE BILL

−66%

$38K → $13K / MONTH

DEPLOY TIME

3m

WAS 11m ON HEROKU

OPERATIONS LOAD

+1h/wk

TRADEOFF FROM PaaS

MIGRATION TIME

5w

INCLUDING DRY RUNS

HOW IT WENT

The Heroku setup was elegant but expensive: Performance-M dynos for the web tier, Performance-L for the worker tier, Heroku Postgres at the Standard-7 plan, an add-on Redis. The team valued the deploy ergonomics, not the infrastructure abstraction.

We rebuilt the deploy to feel similar: `git push` triggered CodeBuild, which built a container, pushed it to ECR, and triggered CodeDeploy on ECS Fargate. Sidekiq workers became a separate ECS service with the same image. Aurora Postgres replaced Heroku Postgres with continuous replication during the dry-run weeks.

The migration cutover took ninety minutes on a Sunday. Bill dropped from $38k to $13k month one. The team trades about an hour a week of operational work for the savings; they consider it a fair trade. The deploy ergonomics are close enough that nobody talks about Heroku anymore.

READY WHEN YOU ARE

Let's get your AWS bill (and architecture) in order.

The discovery call is free. You walk away with at least one concrete idea — even if we never work together.

Or email directly →