Creating your own Heroku on EC2
blog.clearbit.co
blog.clearbit.co
I can't speak to databases, because RDS/ElasticCache/etc. are right there so I don't think about it as often as I probably should, but for application-level stuff I've found that Mesos with Marathon (or HubSpot's Singularity, which is really cool) addresses this much better, especially with Mesos's Docker executors. You also have the advantage of being able to use this cluster differently should you so choose--Marathon lets you run apps as does Daniel's Dokku setup, but you can use Chronos as a distributed, fault-tolerant cron system and you can also plug in Slack, ElasticSearch, etc. and reuse the same infrastructure as you need it.
It's also pretty easy to get rolling with, so I wouldn't use difficulty as a factor. =) A little more overhead, but a lot more future-proofing. I haven't (yet) open-sourced my "Mesos in a box" Vagrant stuff, because I haven't extricated it yet from my actual line-of-business stuff, but I built upon some (kind of hacky, much improved now) stuff I blogged about a few months ago:
http://github.com/eropple/mesos-experiments
http://edcanhack.com/2014/07/a-virtual-mesos-cluster-with-va...
This stuff is super interesting to me and I'm always looking for neat ways to use scalable infrastructure, so if anyone wants to chat about this stuff offline, email's in my profile.
Heroku is much more than that from the deployment to the logging, to the collaboration. What about DB or all the other external systems a modern web app needs (memcache, redis, etc)?
We build custom apps for many different clients which each have their own server/db. Heroku is costly for that kind of setup, but I haven't found anything else that gives me the same peace of mind and sunny weekends.
To your points though:
* Dokku uses Heroku's buildpacks and auto-detects your stack when you git push
* Dokku-alt supports collaboration & user-permissions
* Logging is automatically handled (dokku logs app-name)
* Support for Memcache/Redis is baked in (dokku redis:create app-name)
* Postgres is also supported by Dokku, but I personally go with AWS RDS.
> * Postgres is also supported by Dokku, but I personally go with AWS RDS.
That's funny - I've costed it, and it's cheaper to run equal sized instances of a DB node than to run RDS, plus you get way more control over the tuning and implementation of your database layer.
If it's costing you enough that you can hire someone to do devops then do just that, hire someone. If not then you're actually saving money vs the cost of the employee.
I built my own personal Heroku with a cheap $40 OVH server, and my custom capistrano script.
"cap deploy" is all I need to deploy everything, run database migrations, etc.
I do believe dokku (or something else like it) will be the go-to in the future, but I think that's a ways off yet.
This seems like a great setup that I'd love to try at some point, but I think I'll have to fork over more $$$ if I actually want it to work. :/
Digital Ocean works great for me. Not a massive ripoff, and actually works. One thing, if you use a 512mb instance for $5/month, probably want to make sure you create a swap file.
Hopefully not too far off topic, but there are other hosting options to also look at:
Microsoft BizSpark: I was accepted a while back, and I am using it to try to get a business idea off the ground. Basically free hosting for a few years to get new business ideas started. I am using a Linux server. Microsoft Azure is pretty cool, and worth a look.
IBM BlueMix: I recently became interested in BlueMix because I am helping a customer use the IBM Watson system in their application. Anyway, if you are already familiar with the Cloud Foundry command line tools, then there is no learning curve for using BlueMix. You can host an app that uses 512MB RAM for free. As you increase RAM and other resources, then it starts to cost.