To start off, I would like to mention I HATE dealing with servers/deployment/configuration. Over the past few weeks I have been developing an application using Ruby on Rails as it would allow me to get started very quickly using gems and avoid writing A LOT of code myself. Although in this case I am using rails, can apply to any framework/language. As most start-ups using rails to deploy and test an application, I hosted my app on Heroku. I really like Heroku! It’s great, super easy to use, free to start, a lot of add-ons for search, database, and anything else you might need by a simple command in the console, and just great to get started quickly. Some of the cons of Heroku is control, you can’t write any files so you can’t even make a sitemap.xml, and costs go up really quickly if you need more than what the free option offers along with the add-ons which are not cheap.
I reached a point where I just couldn’t stay with Heroku anymore as my rails app uses a Node.js library I require to progress imaging in the app. I tried to set it up, and I found a way to run Node and Rails at the same time (possibly work), but it required doing some really low level server stuff that I didn’t want or think long tern would be a good thing. After some research, decided and moved to Digital Ocean and got the 5$/month plan from them which is pretty good. Had my developer install all the dependencies for my app, such as ElasticSearch, Node, and everything else I needed. Used the Mina gem to set up deployment to my server, and it worked out pretty well.
So what things do I (and maybe you too) need:
- Allow someone, with some technical knowledge, like myself, to manage everything
- Root access (to be able to install whatever you want)
- SSL support
- Free/low starting cost
- Easy to use and deploy my code
- Automated/managed environment to let me focus on building the application
- Would be nice for a add-on market with reasonable prices like Heroku (only a bonus)
After searching for what options I have, and I found these (no specific order):
- Cloud66 + Any Server (Ex. Linode, Digital Ocean, AWS, Rackspace, Google)
- AWS Elastic Beanstalk + Engine Yard
These are only for hosting your application. There are other things to consider, such as image hosting, CDN, SSL certificated, payments, among others, but that’s for another time. So which is best? I don’t really know. I will say this, I am going with Cloud66 and Digital Ocean (possibly move to Linode after some beta testing). I feel it gives you the technical service and does all the work for you and the freedom I need to use whoever I want. I am sure in some situations something else would be best, but I am not at the point yet, although I’d like to be!
And for the DIY startup people that know enough code to be dangerous:
- A capistrano/rails plugin that makes it easy to deploy/manage/scale to various service providers, including EC2, DigitalOcean, vSphere, and bare metal servers. Rubber
- Docker powered mini-Heroku. The smallest PaaS implementation you’ve ever seen. Dokku