Tell HN: I accidentally ran up a $1000 Heroku bill
105 points| erikpukinskis | 15 years ago | reply
I was experiencing a spike of traffic when my site was on national news a few weeks ago, and I turned my dynos and workers way up on Heroku to handle the traffic. The spike went down, but I forgot to turn off the dynos.
Flash forward a few weeks, and I am stuck with $1300 bill on a site that I'm not making any money on. I asked Heroku if they could help me out a little... I'm a good customer, and even though I'm a cash-strapped in-the-red bootstrapper, I gladly pay them hundreds of dollars a month to run my sites, bills payed on time and in full. I was hoping they'd maybe give me a little discount... not pay for my servers, but maybe not take a profit off of my stupid mistake.
They shot me down. No refunds available, even though these were virtual servers, and didn't contribute any real load to any of their machines. Although obviously they provisioned machines for me, so they had real costs.
Part of me wants to be upset, but obviously I was the one who screwed up. Still, it leaves a bad taste in my mouth. I guess a smaller host might offer more personal care, but I wouldn't get Heroku's world-class engineering baked into their platform, which I really, really appreciate.
What do other folks think? Am I just a dumbass who lost a chunk of paycheck, or is this poor customer care?
[+] [-] patio11|15 years ago|reply
There comes a time in a young man's life when "haha, whoopsie, I'm a kid who is not responsible for his own decisions" is no longer sufficient for a do-over. I am not sure when that is, but if you're running a business, well, welcome to being an adult.
[+] [-] staunch|15 years ago|reply
Heroku should almost certainly have user defined cut off points. They should require every new user to set a maximum monthly bill to something they can afford (or "unlimited").
I did exactly that for a similar type of service I worked on. One of the biggest anxieties customers had was that they'd get a massive unexpected bill, just like this guy did.
Heroku's best move would be to cut his bill in half and institute a cut-off feature. Every service like it should follow suit.
[+] [-] jacquesm|15 years ago|reply
So, the adult business owner would likely split the bill with the customer to cover his costs, fore go his profits on this particular occasion, have a very happy customer (who might even write about that!) and would apply the lessons learned to their business.
[+] [-] petercooper|15 years ago|reply
Is the latter part of that true? (I'm not playing Devil's Advocate, honest!)
I'd assumed the lion share of Heroku's profits were coming from clever arbitrage of EC2 instances rather than markup alone.
For example, if they have 1000 users paying $108 per month for 4 dynos, they don't keep 4000 "dynos worth" of EC2 instances running constantly. Instead they can see the overall load and maintain that lower level of EC2 instances plus some "slack." When traffic increases among apps, the slack can be rapidly configured to pick it up. Heroku would then make not only a markup on EC2 but also profit from the difference between the maximum load and actual load. (Isn't this how cloud scaling systems work anyway, right? Heroku could/might be doing that over thousands of apps for collective benefit.)
Perhaps I'm over-thinking how I'd be trying to squeeze profits out of a Heroku-type system though ;-)
[+] [-] davidedicillo|15 years ago|reply
[+] [-] davidw|15 years ago|reply
Since he's a good customer, they could even give it to him in the form of credit for their service, which gives him an incentive not to leave.
[+] [-] tlrobinson|15 years ago|reply
The way I understand it is if no one is making requests to your app they will shut down the dynos, and when you start getting requests they'll spin them back up, up to the number of dynos you're paying for. That's why if your app has been idle for a long time it takes a few seconds for the first request to complete.
This lowers their costs, and presumably the prices for their customers.
I could be wrong though, and perhaps they only turn off dynos for non-paying customers.
[+] [-] alextgordon|15 years ago|reply
This is especially important with a service such as Heroku, where users will be changing these settings all the time and so there's a high probability of human error.
[+] [-] plasticbuddha|15 years ago|reply
Akamai comes to mind as an example of a company that has always had similar issues. If I ever were to use them in the future, I would have to factor into their monthly costs the partial FTE required to manage their usage and costs. More importantly, if there are other CDNs that offer better cost management features, I would almost certainly use them before ever using Akamai again, unless there was no other technical option.
[+] [-] dotBen|15 years ago|reply
Perhaps you intentionally provisioned a large amount of headroom for a forthcoming expected/possible traffic spike.
In that example it would be annoying to get "are you sure you want to have this extra resource running?" emails.
(sure, you should be building the system to auto-provision but that would have required a better programmer and you just got the interns to build it, etc)
[+] [-] StavrosK|15 years ago|reply
Guess who didn't turn them off.
So he casually mentions it to me and tells me that he racked up a 500 pound bill, but his CC didn't have any money in it so it was fine. I asked "so did you turn them off?" He said "no, not really, but it's okay because they can't charge me".
So he racks up another 500 pounds, and only turns the instances off when he finds out that he didn't use the inactive CC but another, active one. Long story short, he's 500 pounds out (Amazon were kind enough to refund the first 500, which disappeared as soon as it hit his account, since he owed another 500).
[+] [-] dotBen|15 years ago|reply
Guess who forgot to close this box and after 2 hrs of exposure now has to worry about cancer and/or infertility in later life. True story.
Look at it this way: at least your friend took CS and not Physics and thus is only £500 in the hole.
[+] [-] spooneybarger|15 years ago|reply
[+] [-] deno|15 years ago|reply
[+] [-] jw84|15 years ago|reply
[+] [-] fierarul|15 years ago|reply
Heroku might optimize for this usecase by detecting spikes somehow and notifying you that you still have machines running, but other than that, I don't see how any of this is their fault.
[+] [-] 100k|15 years ago|reply
[+] [-] arfrank|15 years ago|reply
[+] [-] collint|15 years ago|reply
[+] [-] jmonegro|15 years ago|reply
[+] [-] chr15|15 years ago|reply
I believe if you take care of your customers, they'll take care of you. In general, the one thing that people will remember for life is how you make them feel.
The benefits of providing awesome customer service outweighs the cost IMO (I haven't done the math, but that's my gut feeling). I remember reading a story on reddit yesterday where a gamer experienced the almost exact same situation with Steam:
http://www.reddit.com/r/gaming/comments/dcnp7/one_of_many_re...
that provides a good example of how news of awesome customer service can be spread, and possibly grow sales (Zappos).
For example, I have several sites hosted with WebFaction.com and I'm unbelievably happy with their customer service. They respond within 10-30 minutes on any support tickets. I'll continue to use them in the future. (see how that was a good example of what awesome customer service can do?)
[+] [-] jacquesm|15 years ago|reply
After all, Heroku could have auto-detected idle instances easily and could have disabled them or alerted the user.
The whole 'dyno' concept without an automated scaling option is a bit strange. Why set an exact number of instances when web traffic is just about the most variable thing you could possibly want to measure. Even apache auto-scales the number of processes depending on how many workers it currently needs to serve your requests.
Auto-scaling and a web app hosting service go together like bread & butter.
[+] [-] cglee|15 years ago|reply
On many many occasions, businesses have literally given me money even when it was my stupid mistake. Some examples just over the past few years:
- Sprint credited me $100 when I racked up a $250 bill by not watching my usage
- Bank of America credited me $100 when I left my card in the ATM and someone withdrew $100 from my account
- Hyatt Place gave me a free room when I made a reservation on the wrong date (and never showed, or called)
- Southwest Airlines gives you full credit if you cancel your flight any time
- ATT gave me all my rollover minutes when I changed plans (by rule, you lose them - i had over 2700)
Those are just some examples that I can remember...I'm not sure it's a healthy mentality to expect this, but it certainly leaves a very positive impression. Leaving your customers in a state of feeling ripped off when you can obviously help is not the right business decision.
[+] [-] steve19|15 years ago|reply
[+] [-] benatkin|15 years ago|reply
[+] [-] sad|15 years ago|reply
I like a very simple rule: Customer retention is far more important than customer acquisition. It may be a flawed rule, I'm not sure since I'm not a successful business person. But it sounds good to me. It seems vitally important to retain your good customers.
[+] [-] ams6110|15 years ago|reply
If it were me, and a good customer made a mistake, I'd eat the cost to keep the goodwill.
[+] [-] pclark|15 years ago|reply
[+] [-] sr3d|15 years ago|reply
"I am stuck with $1300 bill on a site that I'm not making any money on." So that means if you make money on the site, then you'd pay? What's the difference here? You're saying that because you're poor now, you don't have enough integrity to say "oops I did something wrong" and take the responsibility?
I'm myself a boostrapper burning thru my savings and to tell you the truth, I do everything myself to cut on expenses. I'd love to use Heroku, but they are too expensive for me to run. So if you don't want to make another mistake, then start to accept responsibility and learn to take care of problems yourself.
[+] [-] gfodor|15 years ago|reply
[+] [-] amock|15 years ago|reply
[+] [-] japherwocky|15 years ago|reply
I didn't get any sort of break though. :( June was a lot of hotdogs and Budweiser till I could dig out of that hole.
[+] [-] Emore|15 years ago|reply
[+] [-] audyyy|15 years ago|reply
[+] [-] jacquesm|15 years ago|reply
[+] [-] niico|15 years ago|reply
[+] [-] thibaut_barrere|15 years ago|reply
You're talking about "a few weeks": did you check your expenses in the meantime ?
I would put some reminders (google calendar etc) or habits in place to regularly check your expenses.
[+] [-] checoivan|15 years ago|reply
[+] [-] sliverstorm|15 years ago|reply
[+] [-] akshayubhat|15 years ago|reply
[+] [-] dh|15 years ago|reply
Imagine how big a raving fan you would have been if they had credited the entire thing. That is a tiny cost compared to acquiring a new customer and turning them into a raving fan.
[+] [-] bdmac97|15 years ago|reply
I personally think they should have a "WTF your load is like zero, you normally have X dynos, but you're using Y dynos for no real reason... dumbass" alert email... I certainly would have appreciated it!