rollout marker: Sep 3, 06:09 UTC (cascading extraction)
from to
project skipped experience-calc calls
Actual spend
—
Would’ve spent, old implementation
—
Saved
—
Cost per feature
actual vs. what the pre-Sep-3 implementation would have billed for the same real traffic
No comparable “before”
new or unchanged workloads — nothing to compare against
Daily trend
shaded band marks the selected range
actualwould’ve spent
Detail, by workload
Feature
Workload tag
Calls
Actual ₹
Actual ₹/call
Would’ve been ₹
Would’ve been ₹/call
Saved
Actual monthly spend (Fargate)
$567.98
₹49,414/mo · all 9 services, both envs
Would’ve spent, App Runner
$908.85
₹79,070/mo · same real compute sizing
Saved, realized
$421.21/mo
~₹36,650/mo · −46.3% vs. App Runner
Fargate migration ($340.87/mo) + Graviton/ARM64 ($80.34/mo net, complete 19 Sept) — see below for both
App Runner → Fargate migration
computed from actual deployed task-definition CPU/memory × real AWS Pricing API rates, not estimates
Migrated, prod
Admin, Frontend, AI Search, OpenRouter, Global Search, both cv-parsers · 5.0 vCPU / 10 GB
−38%
Fargate
$189.33
App Runner
$302.95
Migrated, UAT
same 7 services · 4.0 vCPU / 8 GB
−38%
Fargate
$151.46
App Runner
$242.36
Backend + Python-Backend, prod
core API · 4.0 vCPU / 8 GB
−38%
Fargate
$151.46
App Runner
$242.36
Backend-Test + Python-Backend-Test, UAT
core API · 2.0 vCPU / 4 GB
−38%
Fargate
$75.73
App Runner
$121.18
All 9 original App Runner services (both prod and UAT) are now fully migrated to ECS Fargate as of Sept 18, 2026 — Track 3.1 of the cost-reduction plan is complete. Old App Runner services are kept running (not deleted) for a one-week rollback window per the migration's own staged-rollout rule; their cost is not yet removed from the account and will drop out entirely once decommissioned. See EZRECRUIT_INFRA_COST_REDUCTION_PLAN.md §3.1b for the full per-service pricing math.
Graviton/ARM64 migration COMPLETE, 19 Sept
shown net of its own cost, not gross
All 21 ECS services now run ARM64 — the fleet-wide migration finished this morning, including the two Next.js services (Admin, Frontend) that needed their build-time config moved to run time first (Option C, §3.1j of the plan). Full-fleet, Graviton is a flat 20% off compute: $95.14/mo gross. That's not the number to quote — it ignores the Secrets Manager cost the migration itself required (moving baked-in config out of each image, 37+21 entries at $0.40/mo each). Net, realized: $80.34/mo (~₹6,990/mo). Combined with the Fargate migration: $340.87 + $80.34 = $421.21/mo (~₹36,650/mo) against the original $908.85/mo App Runner bill — a 46.3% reduction, all realized, none of it projected. See EZRECRUIT_INFRA_COST_REDUCTION_PLAN.md §3.1e–k.
A systemic gap was found and fixed while verifying this: 7 repos' ordinary deploy pipelines still pointed at x86 build projects even after their services moved to ARM64 — the next ordinary code deploy would have built an incompatible image. All 7 are now retargeted to their ARM twins; nothing was customer-facing (ECS's circuit breaker caught every case), but it's the reason this took a verification pass rather than being called done at the first successful migration.
Also realized: EzRefer NAT gateway retired done, 19 Sept
a separate lever from the Fargate/Graviton numbers above — not blended into them
EzRefer prod's App Runner VPC connector was moved into the same VPC as its database, letting it reach
that database over the existing private VPC peering instead of a dedicated NAT Gateway. Confirmed
zero outbound bytes on the old gateway across every 5-minute window after cutover, then deleted it.
Saved: ~₹3,500/mo, realized immediately (not a projection) — this box moved 65 MB in
its last 7 days, i.e. it existed almost entirely to justify its own ~₹3,500/mo bill.
Also realized: Test/UAT pause-resume scheduling confirmed live, 18 Sept
was silently broken since 09-14 (an IAM gap on the newly-added resources); repaired and proven in one clean run
The scheduler had been delivering zero savings since 2026-09-14 — a permissions gap on
resources added to its allow-list meant every nightly run crashed before pausing anything. Repaired
2026-09-18; that evening's 14:30 UTC run paused all 16 allow-listed resources (2 App Runner, 10 ECS
Fargate, 3 RDS including the one the old IAM policy couldn't touch, 1 EC2) with zero errors —
the first clean full run since 09-13. ~₹9,000–12,000/mo is now genuinely accruing nightly,
not just assumed live.
Other Track 1 savings — in progress
not yet fully realized or still estimated, unlike the migration and NAT numbers above
SES over SendGrid
EzRecruit (India/USA/UAT) all live on SES since 18 Sept — 16 of 16 live notification types; EzRefer's SES PR is in review; SendGrid stays active account-wide during the soak period, not yet cancellable