logoalt Hacker News

donavanmtoday at 4:56 PM7 repliesview on HN

Ive dealt with this error at AWS. It’s a unit error. In my case we _meant_ to charge like 5¢/GB, but missed the unit (GB), and then the billing system defaults to bytes. 5¢ per Byte of data transferred meant some customers were seeing MM bills within hours. Got paged by support around 2am, had it fixed and amendments issues by 3-4am, apology emails shortly after.

Services emit metering values that arent directly tied to prices. Every SKU/line item is defined in a “pricing plan”, with a unit type, regions, and price per unit. The metering records are joined to a pricing plan based on account id, region, sku, etc. mess up the unit type in the pricing plan and the metering data conversion doesnt work, and you get crazy bills.


Replies

01284a7etoday at 5:15 PM

No tests? Just mess up some mundane detail [1] and voila! Wake-up calls and heart attacks for 100,000s of administrators?

1: "Oh, well, this is not a mundane detail, Michael!" https://www.youtube.com/watch?v=3fGHaVn5rGo

show 5 replies
sscaryterrytoday at 7:34 PM

This isn't a flippant comment. Imagine though, being presented with this. Imagine having some underlying health problem (e.g. cardiovascular).

Do not be surprised if real people actually die from this mistake, from the anxiety, the surprise, the helplessness.

show 2 replies
Twirrimtoday at 7:54 PM

I wonder if AWS billing still uses CSV files for passing data around.

IIRC it was one of my first on-calls at AWS over a decade ago now, and I got a page early evening because some stuff we did with billing records broke because some "smart" engineer thought it'd be a great idea to put an experimental record in with a description something like "I wonder what happens if I put, a comma in this field", into the production record. I watched region after region fail the same way as the record spread. That one engineer made a mess of lots of people's evenings. They could have used the test endpoint, but no. Much better to test in production!

show 2 replies
nurettintoday at 5:41 PM

This is why I always fail loud rather than pick a stupid default.

crossroadsguytoday at 6:10 PM

Had it been half a million dollars or something or say like a few hundred dollars?

dev_l1x_betoday at 8:04 PM

Imagine a programming language that has physical measurement unit support so this could have never happened.

pudgywalshtoday at 5:25 PM

"I must've put a decimal point in the wrong place or something. I always mess up some mundane detail."

show 2 replies