I really was very comfortable with Heroku deploy system, but I was not comforable at all with some issues I found:
- It’s really great when you’re starting. Pricing is almost 0$… But I’ve never been able to image, how much will it cost to have a decent package for mongodb, redis and good bandwith on my webapp… Just looking at their pricing, if your app become famous (we all wish that!) you’ll have too pay more than you want. If you’re able to make your webapp profitable enough, then go for it
- Its startup time. As my website don’t have any constant traffic, It’s startup time was been a little slow.
- For Parkuik, I had to integrate with Google Places to get parkings and make it easier for me and all of you to find new parkings (Don’t loose that URL ). What I found is that you have to include an IP to use Google Places API key filter. Ok, there we go to heroku and…. Its IP is dynamic! You have to pay for having an static IP. That is related to the other point, and that was the point where I realize that Heroku was going to be more expensive that It seemed the first time.
Anyway, taking into account all of this, I must say that Heroku is really really great, I use it for most of my webapps, and I’d recommend you to test it and use it (git deployment is awesome!!!!!). I just think that if you’re doing something for learning, testing or something not profitable, that will have some traffic (you have to know the limit where heroku starts to ask you for more), you need to build it at your own. You can save some $ and
What’s the alternative? I started using Linode. Yes, I know that you’ll have to configure all of the environment stuff and all of this kind of things that we, developers, don’t like (at least me!). One of the things I loved about taking this step is that I’ve learn some things about devops that I didn’t know before (seriously I’m so ridiculous about devops), and I’d recommend to use tools like Vagrant or Chef. They’ll make your life easier to make automatic deploys, make your development more predictable or just changing your production environment.