I got burned by this on my hobby project. The self-updating command line tools started warning me that my database was wrong for technical reasons and needed to be updated (I wish I’d taken screenshots - if you see this, please do). It walked me through steps of updating to a new db with no mention of fees - I was thinking this was like the infrequent updates from deprecated app stacks. A few weeks after I did the update, they started charging me for both the $9/mo db I had and a new $50/mo db, backups stopped working, it’s not clear which db is even in use, support was shocked, shocked that their tool had told me to update to a more expensive thing, and rather than resolving the issue they closed my ticket.
I’m looking into the various “heroku in a box” tools and will migrate my hobby project to a $5/mo VPS with SSL this weekend, contest the charges with my payment card, and start moving my employer’s consulting clients over to whatever that tool is. Even if the card doesn’t chargeback my lost $100 Heroku’s will lose that in… uh, about an hour given the size and number of clients we have.
I didn’t keep it running much longer than it took to push an app and see how it works, but DigitalOcean’s Dokku prebuilt image was pretty easy to get going. IIRC I just needed to add a plugin for PostgreSQL support if I wanted to manage that through Dokku’s interface, but there were more than one to check out with different features in terms of how they separate accounts/dbs/instances, or had backup/restore helpers.
(I don’t think Dokku is hard to set up, I’ve also toyed with it on local vms, but the one-click app image on DO is how I learned of the project at all, so here’s my plug for DO. ?)
This just prompted me to migrate my (~5) personal apps from Heroku to Dokku on Digital Ocean. Super easy to do, and on a $10 Digital Ocean droplet, it’s already more cost efficient than if I wanted Heroku to run them all 24/7.
I’ve had reasonable success with using Dokku on a $5/MO DO Droplet. I’ve considered looking at things like Deis or self-hosted OpenShift, but Dokku is really the simplest / lightest one that fits my needs (it also helps that there’s even a Dokku app stack on DO).
While I haven’t experienced that level of WTFery with Heroku as you’ve mentioned, I have definitely been hit with a bill I wasn’t expecting (same for AWS..).
I got burned in a similar way where I logged in and it told me to fix my db, but it only gave me options for the more expensive databases, so I clicked cancel. Next month, behold, I was now the proud owner of a $50/mo db on a free grandfathered heroku stack. I contacted support and they were adamant about how ‘you can’t sign up for a new service without going through the process’ and told me it was my fault. Their story was that because I initiated the upgrade I was no longer eligible for the grandfathered db and therefore signed up for the paid db which I agreed to by clicking a button like “Resolve Issue” or something. I backed up my hobby projects, cancelled the service (though they still charged me). I then contacted heroku (again) and told them I would be filing a chargeback on the charge if they didn’t refund it. When they didn’t, I provided Citi with the email chain, the original support ticket chain, and the charge. Because the support was started so soon after the charge was made and the support was ended so abruptly, they decided in my favor. Used to like Heroku, but they literally destroyed their reputation with one interaction. I don’t have clients, but the company I used to work at was looking at GCloud vs AWS vs Heroku and I made sure none of that very large amount of servers went to heroku.
It’s not hard to set up postgres yourself. I’m happy to chat with folks on how to do this on your fine VPS box.
The whole point of Heroku is not having a box, including all necessary busywork.
Yup. I can run a box, but I really don’t want to have to.
What is the kind of busywork you’re thinking about, and you cannot automate?
Setting up the automation for the Nth time is itself busywork. Tools like Chef, Puppet, Ansible, Dokku, etc. can reduce but not eliminate this busywork.
Yes, but it’s a one time operation, isn’t it?
Depending on your skill and the similarity of apps, it might be a one-time setup, but IME will not be.
Also, roll-your-own hsa potential surprises like six months later your app has crashed and it’s hours of debugging to find out it’s because the disk is full because you didn’t know you had to rotate some daemon’s logs. I wouldn’t count it as busywork, but it’s quite nice when that’s Someone Else’s Problem.
O(N) matters when N is large enough.
Or M (all other work) small enough.
Pager duty is the most unautomatable thing. Also, security updates.
This seems like another opportunity to evaluate whether your app needs 65 different dependencies and services running.
You are making many assumptions. Maybe, people are just running a hundred small-medium things?
Be it meaningful or not, a box is not “a heroku replacement”. It’s something different.
If Heroku is positioned as a box replacement, it seems reasonable in turn to consider a box as a Heroku replacement.
Sure. But… You wind up vulnerable to the OPs problem. Anyway, I’m happy to help anyone make that busywork go away faster.
I’ve been using OpenShift for a while now, it seems to have a pretty good free plan.
Capped at three apps though.