Damus
Rajesh Medampudi profile picture
Rajesh Medampudi
@rajesh

Platform Engineer · 17+ years building distributed systems. Observability platforms processing 6TB/day. Saved $120K/month on AWS at gaming scale. Self-hosting everything.

Relays (5)
  • wss://nostr.onbitcoinstandard.com – read & write
  • wss://nos.lol – read & write
  • wss://relay.damus.io – read & write
  • wss://relay.primal.net – read & write
  • wss://relay.nostr.net – read & write

Recent Notes

Rajesh Medampudi profile picture
worth noticing: aws now recommends savings plans over reserved instances for compute. the vendor selling you the RI is telling you to buy the other thing.

the logic is clean. the convertible RI exists for flexibility — the compute SP does that better, automatically, no manual exchanges. the standard RI exists for the deepest rate — the ec2 instance SP matches the 72% and stays flexible inside the family.

both reasons the RI existed for ec2 are now done better by a savings plan. that's why the recommendation flipped.

https://rajesh.medampudi.com/blog/ri-vs-savings-plans
Rajesh Medampudi profile picture
cutting a nat bill, the order matters more than any single fix, because the cheap no-downside moves capture most of the money.

s3 + dynamodb gateway endpoints — free, one route-table edit. start here.
interface endpoints for ecr and logs — $0.01/GB, under a quarter of nat's rate. cheap, but do the per-service math.
cross-AZ cleanup, and the honest question of whether the subnet needs nat at all.
fck-nat — real savings, but no default failover and a patching burden. last resort.

most teams never get past step two.

#aws #infrastructure

https://rajesh.medampudi.com/blog/aws-nat-gateway-hidden-tax
Rajesh Medampudi profile picture
the order isn't decoration. each decision makes the next possible.

cut the waste first — free, mostly attention not architecture. then own past your break-even (datadog past my line → built it ~8x cheaper on LGTM). then observe cheaply, because you can't decide the first two without numbers. then staff light. i run all four — k8s, self-hosted observability, the services on top — alone, from a modest house in hyderabad. the load is far lower than the staffing story implies.

https://rajesh.medampudi.com/blog/what-lean-infrastructure-means
Rajesh Medampudi profile picture
there's storage on your s3 bill you can't see in the console and you're paying for it right now.

upload a big object in parts, the upload fails partway — dropped connection, crashed job, sdk that didn't clean up — and the parts that landed stay in the bucket. you get billed for them. they don't show in the object listing. they pile up for years.

the fix is one lifecycle rule on every bucket: AbortIncompleteMultipartUpload, 7 days. applies to existing + future uploads, and per aws it doesn't trigger early-delete charges. no downside. set it today before you touch anything else — cheapest win in the whole thing.

https://rajesh.medampudi.com/blog/s3-cost-optimization-playbook
Rajesh Medampudi profile picture
before you buy a single savings plan, sweep the free money. none of it needs a commitment and all of it is just sitting there.

unattached EBS volumes still billing. old snapshots nobody deletes. idle public IPv4 — $0.005/hr each since feb 2024, attached or not. and untagged spend, because you can't cut what you can't see.

clean the dead weight first. then size the commitment to a real baseline.

https://rajesh.medampudi.com/blog/audit-50k-aws-bill
Rajesh Medampudi profile picture
total dollars on a bill lie, and here's exactly how.

the signal arrives weeks after the decision that caused it. it lands in front of finance, who can read it but can't fix it. the engineer who can fix it never sees it. and total $ can't tell a bill that doubled on growth from one that doubled on waste.

four failures, all structural. divide into a per-unit number and all four fix at once — timely, actionable, owned by the right person, and it tells growth from waste at a glance.

https://rajesh.medampudi.com/blog/infra-bill-as-product-metric
Rajesh Medampudi profile picture
on 2 december 2025 aws finally launched database savings plans — the gap that kept most database spend stuck on reserved instances for years.

covers aurora, rds, dynamodb, elasticache, documentdb, neptune, keyspaces, timestream and dms. up to 35% on serverless, 20% on provisioned, and it follows the workload across engine, family, size and region.

two catches worth saying out loud: it's 1-year no-upfront only at launch, and it does NOT cover redshift or opensearch — i've already seen that stated wrong. check the official service list.

https://rajesh.medampudi.com/blog/ri-vs-savings-plans
Rajesh Medampudi profile picture
four signs your nat gateway is doing a job a free endpoint should be doing: s3 reads from private subnets, ecr image pulls on every deploy, a nat sitting in a different AZ than your workloads, and one nat carrying multiple terabytes a month.

you don't have to guess. turn on vpc flow logs for the nat'd subnets and look at where the bytes go. a big share heading to s3, ecr, or dynamodb is the smell — and the cheapest fix you'll find this quarter.

#aws #devops

https://rajesh.medampudi.com/blog/aws-nat-gateway-hidden-tax
Rajesh Medampudi profile picture
people hear "lean" and think "cheap." it's the opposite.

cheap is cutting the thing that matters to save a small number — you win a line item and lose the business. lean is spending deliberately on what actually buys you something, so you have room to do the work that moves the business. the point of cutting a $120K/mo observability bill was never the $120K. it was no longer being held hostage by it.

https://rajesh.medampudi.com/blog/what-lean-infrastructure-means
Rajesh Medampudi profile picture
how a $120K/mo observability bill quietly happens: three systems billing at once. datadog the official tool. cloudwatch still alive underneath that nobody turned off. and engineers SSHing into boxes to grep logs during incidents because paid search was too slow to trust.

none of them complete, all of them on the meter, spend climbing 15%/mo. the fix isn't clever — one stack you own: grafana LGTM backed by s3, on your own kubernetes, data stays yours. costs become compute + storage, which scale slow. no vendor between you and the 3am fix. one bill you can actually read.

#infrastructure #cloudcost #selfhosting

https://rajesh.medampudi.com/blog/observability-cost-kill
Rajesh Medampudi profile picture
the trap that quietly reverses your s3 savings: standard-IA, one zone-IA and glacier instant all bill every object as if it were at least 128KB.

so you take a bucket of 10KB thumbnails, move it to a "cheaper" class to save money, and now each object bills at 128KB. you're paying for ~12x the bytes you actually store. the per-GB label looked cheaper, the bill came back higher.

small objects stay in standard. check your average object size before tiering anything down — under 128KB and IA is just wrong, no matter how cold the data is.

https://rajesh.medampudi.com/blog/s3-cost-optimization-playbook
Rajesh Medampudi profile picture
give me read access to a $50k/mo AWS bill and i'll find the first 20-30% in a day. not clever — it's always the same four places, same order.

data transfer → rightsize → commit → storage cleanup.

the order is the whole thing. each step makes the next one cheaper. don't commit before you rightsize, don't rightsize a fleet still leaking free traffic through a paid NAT. run it bottom to top.

https://rajesh.medampudi.com/blog/audit-50k-aws-bill