Heroku rocked my face off

This week my task at hand was to figure out a deployment strategy for an application I’ve been working on. The initial conclusion was that we needed to buy another server. I wasn’t too happy with this because setting up a new server is a pain in the ass. It’s very repetitive, mundane, and boring. I’d much rather be spending time coding or coming up with new ideas instead of maintaining servers.

That being said, I figured I would see what engine yard or heroku had to offer. Maybe it’s time my company starts using these services. It would be easier and cheaper.

Engine Yard Solo

Initially I was interested in engine yard’s solo plan. It seemed nice. It was a little confusing at first, but only took about an hour of playing around with it to really understand how it works. An hour is a small price to pay for something like this. Their stack was nice, not the stack I would choose, but who the hell cares at this point. I’m not going to start splitting hairs over using passenger or thin. The only thing I wasn’t too happy with was the pricing. To run a staging environment on their smallest plan would be around $115 a month. Then a production environment on top of this would be about $300. You’re looking at $415 a month to run a decent application. Is that a lot of money? Not for an important application, but my company also has a lot of small applications. We have blogs, small intranet apps, etc. That could start to add up, to the point where it would be more expensive than my current set up.

Heroku

Then I decided to checkout Heroku. The first thing I noticed is that their basic plan is free. You can host an application on there for free to start, which is AWESOME. I love that they do this, and in my opinion this is going to play a big part in their success. I signed up, followed the instructions they gave me, and had an application running in under 5 minutes. It was unbelievable how easy they made it. Literally, you create an application on Heroku, push your code to their git repository, and it deploys the app for you. I sat there for a minute, in awe, trying to soak it all in. It was awesome, but with all of this magic going on there has to be a catch or limitations. So I started to read the docs to try and understand it. To my surprise, there were a lot of advantages to using their set up, specifically around caching. There were also a few limitations, but nothing that I can’t live without. I won’t ramble on about the details because a lot of the issues are subjective. For example, is using PostgreSQL a limitation to you? What about a read-only filesystem? I’ve always been a MySQL guy, but after doing some research on PostgreSQL I really like it, and am going to make it my default choice for future apps.

Conclusion

If you haven’t tried out heroku then you should. It takes about 10 minutes to try out, it’s free, and it’s well worth the time. Even if you know it’s not an option for you, its still fun to play around with. I have a feeling heroku is going to really take off and become a standard for ruby web applications. There are still some loose ends they need to tie up, but once they do there really is no reason not to use their service.

Also, no, I am not getting paid by Heroku. I wish I was though. I just like to share things on here that make my life easier, and this definitely did.

  • Share/Save/Bookmark


18 Responses to “Heroku rocked my face off”

  1. jDeppen says:

    I’m using Linode with Moonshine. I’m not afraid to admit that I’m a noob when it comes to server config.

    http://github.com/railsmachine/moonshine/tree/master

  2. Vojto says:

    So if you’d pay ~400 per month with Engine Yard, how much will you pay with Heroku for the same thing?

  3. Lawrence says:

    Great write-up. I’ve used Heroku too, and had great experiences with it.

  4. benjohnson says:

    Vojto, that’s hard to say exactly, because they aren’t exactly the same. But I would say I would feel comfortable with about 5 dynos on heroku, which is about $144. My staging environment on there would be free. So that would $144 a month vs the $400 a month for engine yard. Again, you are getting different things, but if I had to pick a plan for each service to properly support my application thats how it would play out. That’s a big difference.

  5. benjohnson says:

    I didn’t see anything like this with engine yard, but heroku lets you increase or decrease your dynos at any time. How cool would it be to beef up your application when you know you are getting the most traffic and scale it down when you know things are quiet? Maybe you get a lot of traffic around the holiday season. What would make this even nicer is if they supported this in their api. Then you could scale your app up during business hours and scale it down at night using a simple cron job.

  6. Vojto says:

    So I tried it – and it’s really 5 minutes.

    How many dinos you think will equal my current VPS – which is 1.6GHz Opteron with 256MB of RAM?

    Thanks :)

  7. benjohnson says:

    Vojto, I have no idea, it really depends on your application. Start small, analyze your app with a service like new relic, and if you are pusing the limits add a dyno. You’d be surprised how fast 2 dynos can be.

  8. Chris says:

    I have tried Heroku and really love it. But both – Heroku and EngineYard – are not offering zone-based deploys (EU, Asia,…) and that’s a big downturn for everyone not in the US.
    Unfortunately there is no service provider like that available in Europe.

    So lucky you =)

  9. Jon Hinson says:

    I did read that you can take your instance down and change it to a beefier instance on Engine Yard (http://bit.ly/BI2Y6).

    Do you know if Heroku has any partnerships with Git Hub, New Relic, Lighthouse, etc? I’m pretty sure you get free accounts with those apps when getting a server w/ Engine Yard.

    One thing I don’t like about Heroku is the gap between Crane and Ronin for storage. I’m looking into a cloud solution and both Heroku and Engine Yard seem like the direction I want to go, but my database storage alone is around 2GB.

    One last thing, do you know if it is possible to host multiple apps on one Heroku instance (or whatever they call it)? I know this is possible with Engine Yard.

  10. benjohnson says:

    Hey Jon, it sounds like you want to use Engine Yard. Go for it. Either one is a good choice. I also agree with you on their database pricing gap, but that’s part of the reason Heroku is so affordable. I believe with Engine Yard you start with your own database. It really depends on what you are doing, but the fact that Heroku has a free plan to start is what really got my attention.

    • Jon Hinson says:

      Hey Ben, thanks for the reply. Yeah, it seems like EY will fit my needs for this particular project (well, kind of a suite of apps that are intertwined). I really like Heroku and have been impressed with how easy they seem to make the whole process of deploying and hosting a Rails app. I think for future projects I’m going to try Heroku out from the start and see how it goes from there. The free option is definitely a huge plus.

  11. Emilien says:

    Hello everybody,
    Why such a price gap between dedicated servers and EY/Heroku offers ? do I underestimate cloud parts power ?

    • Oddwalli says:

      Both Solo and Heroku are cheaper than dedicated servers because they both run on top of amazon web services. You get a virtual machine, not a physical machine.

  12. David Dollar says:

    heroku db:pull is absolutely a killer feature. It lets you quickly and easily clone production’s database down to your local system. That plus the ability to create production/staging/foo versions of your app and deploy to them at willl (and for free in many cases) is a definite win in my book.

    Heroku is amazing.

  13. Heroku has an awesome entry price (free!) and I think it’s great for starter apps but I think you might want to break out the calculator before you say Heroku is always cheaper.

    Let’s take a production app running on two small instances on Engine Yard Cloud and a third instance running a dedicated database. And let’s say you have 10GB of data with daily snapshots = 300GB of data.

    On Engine Yard that configuration will cost (Flex plan):

    2 x small instances = $259.20
    1 x database instance = $129.20
    300 GB of EBS space = $30.00
    Bandwidth + i/o ~ $20.00
    *******************************
    Total = $438.40

    (Each small cloud instance runs 6 mongrels, so this runs 12 mongrels in a redundant configuration.)

    An equivalent environment on Heroku would be:
    12 Dynos = $396
    Ronin Database = $200
    Backups = $20
    ************************
    Total = $616

    As far as staging environments go. People seem to bring those up and down as need dictates — on Engine Yard, you only have to pay for hours you actually run instances, so I think that’s pretty much a wash.

  14. benjohnson says:

    Hey Michael, thanks for the clarification. Also, with the flex plan aren’t your required to buy the basic support plan for $150 a month? If that’s the case the prices are about the same.

    Either way, the price gap isn’t that big for a large application, and I think either choice is a good choice. You really can’t go wrong. I was really impressed by engine yards set up. It seemed more configurable and less restrictive. I could see how your service might be more conducive towards a larger application. I guess I just liked the sheer simplicity of heroku and the pricing structure seemed nicer for company.

    • Hi Ben. Well, I was trying to do apples to apples. Heroku doesn’t have a support offering yet — although it’s got to be something they’re working on, if they plan to move up into production apps.