Thanks for writing this. We see a lot of people write posts saying they moved to DO, but I don’t often see the opposite. The things you wrote speak exactly to our strengths, and value proposition. :)
I spent a good 5 years of my career writing PaaS applications (on AppEngine, although I’ve used Heroku before) and the cost of structuring your app to ‘fit’ is paid back a hundredfold in operations and maintenance ease. Gonna post the 12-factor app URL since I haven’t read it in a while. That document has held up extremely well over time.
edit looks like it was posted 4 years ago so I’ll just leave it there.
I just recently moved an application that had been running on Digital Ocean for 3+years (not actually sure how long, I moved it to DO soon after they started) to Heroku and it was such a relief.
If you want an actual server with all the complexity that that has (and sometimes, I do – like to be able to tunnel through it, run random commands, serve random files, etc), then DO is great, but if you just want an application, it brings so much baggage that is so unnecessary, especially for the type of low traffic apps that are served by single server deployments that Digital Ocean supports (I’ve also had pretty terrible experiences with DO ops in the past – primarily in the original NYC1 data center, which I’ve heard is the worst, but, I’m happy to not be dealing with that anymore).
The biggest reason I don’t use Heroku anymore isn’t addressed here though – money. It certainly is much easier & more convenient, but oh boy, do costs start to mount quickly…
What were your largest costs? If it’s number of dynos, you can sometimes spend time working on performance to speed up your code enough where you can decrease dynos. Even if you end up moving off it’s never a bad thing to have a faster app.
If it’s database, that’s hard to work around. Though if you are going to run your own DB somewhere else you could connect to it from your Heroku app. I would argue that our (I work for Heroku) DB service is killer though. I know some apps who run their own servers but connect to our DBs since it gets them so many things like fork/followers/point-in-time-recover.
A basic app setup is one hobby dyno ($7) and a hobby DB ($10). Then maybe some addons, Redis is a must have for many apps these days ($15 if you’re going to bump to “premium” right away). That’s $32. If you were going to run those three services on DO, that would be three droplets or about $15. So you’re saving about $17 on DO. Alternatively if you’re running free version of Redis then you’re saving $2 on DO.
As you grow your hobby dyno needs to be replaced by a “standard” dyno. If you’re running 2 then you’re now at $82 a month. I think that’s the biggest hit, the jump from hobby to “standard”. Most Rails devs in the freelance world I know are charging between $150 - 200 an hour. So if Heroku can save you a little more than half an hour a month, it’s paid for its price.
If this is a passion project or a “for fun” app then, I realize the math doesn’t always work that way. It can also be fun to do your own “full stack” setup, and get your hands dirty in nginx config and postgres backup daemons and administration.
I’m obviously biased and as an employee I get my dynos for free. I’ll be curious to hear more about your specific situation and setup to see if I could help optimize things.
I use DO for my hobby project mainly because I can put a bunch of ‘em on one server. I don’t have enough traffic on any of them to require a box for the server, a separate one for the DB, another for Redis or something, etc. I can stick a dozen things on one box, and it’s fine because the traffic is low. I’d need a lot more instances to host those things on Heroku.
That said, I do recognize the value of Heroku, and have hosted things on it when it made sense. If something becomes a real business that absolutely needs to be up 24/7/365, even if it costs a little more, then I’m happy to reach for Heroku. Even if I was available fulltime as sysadmin for it, I probably wouldn’t be able to get the uptime against heavy traffic that I could on Heroku.
As you say, it’s the addons & database that got me; I like how when I do things with a VPS, I can add things like Redis, background jobs, cron task, and whatever other services I want to experiment with without having to incur additional expenses. Plus, I can typically have a few services running on one VPS, which skews the price difference even more.
The dashboards Heroku offer are indeed very nice, but I’m comfortable enough with dealing with CLI interfaces that it’s not worth the cost for me.
I am a co-founder of a bootstrapped company & am generally very leery of spending money though; I imagine that if I was in a position where money wasn’t as much of a looming concern, the calculus might be a little different.
Heroku is fantastic. In a previous startup, we used to be hosted in Heroku but we moved to Rackspace because of the costs. The app ended up being about 10% faster and the hosting costs a little lower, however we rapidly found ourselves in a position where we basically needed a full time devops person. That decision was too premature and it slowed us down.
Right now, I work for another YC startup and we’ve been hosted in Heroku for over 2 years now. The possibility to focus in development instead of devops is truly liberating. Our business isn’t maintaining updated linux boxes, or dealing with firewalls, but building features for our customers.
They say Heroku is too expensive only if you don’t value your own time. Amen to that.
This is exactly it, and why they can charge so much - I very much doubt a Heroku bill for a typical small company would ever grow larger than the annual salary of a decent ops engineer - and if it does, you know full well it’s time to move away! It would however be nice to have a little more comparable competition in the PaaS space. Heroku is simply king at the moment.
I like Heroku. I’ve been using the free tier for almost a year now to run a little twitter bot, @loveapaper. Like this post mentions, it may not fit your use case but for such a small project it made sense for me.
We’ve been using heroku for a couple years now at my job. We had planned at one time to migrate to AWS for cost reasons, but I think that’s basically been shelved. It’s really nice having effectively a built-in ops team behind “git push”.
Thanks for writing this. We see a lot of people write posts saying they moved to DO, but I don’t often see the opposite. The things you wrote speak exactly to our strengths, and value proposition. :)
I spent a good 5 years of my career writing PaaS applications (on AppEngine, although I’ve used Heroku before) and the cost of structuring your app to ‘fit’ is paid back a hundredfold in operations and maintenance ease. Gonna post the 12-factor app URL since I haven’t read it in a while. That document has held up extremely well over time.
edit looks like it was posted 4 years ago so I’ll just leave it there.
Unless it’s a legacy enterprise app and fit would be better expressed as shoehorning without a major architecture re-creation. I have a fun job.
:(
I just recently moved an application that had been running on Digital Ocean for 3+years (not actually sure how long, I moved it to DO soon after they started) to Heroku and it was such a relief.
If you want an actual server with all the complexity that that has (and sometimes, I do – like to be able to tunnel through it, run random commands, serve random files, etc), then DO is great, but if you just want an application, it brings so much baggage that is so unnecessary, especially for the type of low traffic apps that are served by single server deployments that Digital Ocean supports (I’ve also had pretty terrible experiences with DO ops in the past – primarily in the original NYC1 data center, which I’ve heard is the worst, but, I’m happy to not be dealing with that anymore).
The biggest reason I don’t use Heroku anymore isn’t addressed here though – money. It certainly is much easier & more convenient, but oh boy, do costs start to mount quickly…
What were your largest costs? If it’s number of dynos, you can sometimes spend time working on performance to speed up your code enough where you can decrease dynos. Even if you end up moving off it’s never a bad thing to have a faster app.
If it’s database, that’s hard to work around. Though if you are going to run your own DB somewhere else you could connect to it from your Heroku app. I would argue that our (I work for Heroku) DB service is killer though. I know some apps who run their own servers but connect to our DBs since it gets them so many things like fork/followers/point-in-time-recover.
A basic app setup is one hobby dyno ($7) and a hobby DB ($10). Then maybe some addons, Redis is a must have for many apps these days ($15 if you’re going to bump to “premium” right away). That’s $32. If you were going to run those three services on DO, that would be three droplets or about $15. So you’re saving about $17 on DO. Alternatively if you’re running free version of Redis then you’re saving $2 on DO.
As you grow your hobby dyno needs to be replaced by a “standard” dyno. If you’re running 2 then you’re now at $82 a month. I think that’s the biggest hit, the jump from hobby to “standard”. Most Rails devs in the freelance world I know are charging between $150 - 200 an hour. So if Heroku can save you a little more than half an hour a month, it’s paid for its price.
If this is a passion project or a “for fun” app then, I realize the math doesn’t always work that way. It can also be fun to do your own “full stack” setup, and get your hands dirty in nginx config and postgres backup daemons and administration.
I’m obviously biased and as an employee I get my dynos for free. I’ll be curious to hear more about your specific situation and setup to see if I could help optimize things.
I use DO for my hobby project mainly because I can put a bunch of ‘em on one server. I don’t have enough traffic on any of them to require a box for the server, a separate one for the DB, another for Redis or something, etc. I can stick a dozen things on one box, and it’s fine because the traffic is low. I’d need a lot more instances to host those things on Heroku.
That said, I do recognize the value of Heroku, and have hosted things on it when it made sense. If something becomes a real business that absolutely needs to be up 24/7/365, even if it costs a little more, then I’m happy to reach for Heroku. Even if I was available fulltime as sysadmin for it, I probably wouldn’t be able to get the uptime against heavy traffic that I could on Heroku.
That’s it for me. Also I would like HTTP/2 server push support, and more control over the routing layer, but I am not the typical customer
As you say, it’s the addons & database that got me; I like how when I do things with a VPS, I can add things like Redis, background jobs, cron task, and whatever other services I want to experiment with without having to incur additional expenses. Plus, I can typically have a few services running on one VPS, which skews the price difference even more.
The dashboards Heroku offer are indeed very nice, but I’m comfortable enough with dealing with CLI interfaces that it’s not worth the cost for me.
I am a co-founder of a bootstrapped company & am generally very leery of spending money though; I imagine that if I was in a position where money wasn’t as much of a looming concern, the calculus might be a little different.
Do you happen to know when private spaces will be GA?
The ability to access external services with a whitelisted IP address is unfortunately a must have in many situations.
They’re already GA https://blog.heroku.com/heroku_private_spaces_are_now_generally_available_within_heroku_enterprise.
Heroku is fantastic. In a previous startup, we used to be hosted in Heroku but we moved to Rackspace because of the costs. The app ended up being about 10% faster and the hosting costs a little lower, however we rapidly found ourselves in a position where we basically needed a full time devops person. That decision was too premature and it slowed us down.
Right now, I work for another YC startup and we’ve been hosted in Heroku for over 2 years now. The possibility to focus in development instead of devops is truly liberating. Our business isn’t maintaining updated linux boxes, or dealing with firewalls, but building features for our customers.
They say Heroku is too expensive only if you don’t value your own time. Amen to that.
This is exactly it, and why they can charge so much - I very much doubt a Heroku bill for a typical small company would ever grow larger than the annual salary of a decent ops engineer - and if it does, you know full well it’s time to move away! It would however be nice to have a little more comparable competition in the PaaS space. Heroku is simply king at the moment.
I like Heroku. I’ve been using the free tier for almost a year now to run a little twitter bot, @loveapaper. Like this post mentions, it may not fit your use case but for such a small project it made sense for me.
We’ve been using heroku for a couple years now at my job. We had planned at one time to migrate to AWS for cost reasons, but I think that’s basically been shelved. It’s really nice having effectively a built-in ops team behind “git push”.