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.
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.
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.
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.