Initial thoughts on Heroku
Heroku is a cloud-based solution for deploying Rack applications on top of Amazon's EC2 (Elastic Compute Cloud) service. I decided to give it a go with some smaller apps I had going and thought to write about my experience.
One of the first things that came to mind with Heroku, is that you're actually deploying to a read-only filesystem. This means you'll have to use a third party service, such as Amazon's S3 (Simple Storage Service) to dynamically store media for your app. I find having separate facilities for your application, it's data, and it's uploaded media is a good idea. Heroku's constraints just seem to enforce this way of thinking.
It actually makes a lot of sense. Your application data will more than likely be stored in a relational database, and with your uploaded media being stored elsewhere, your application's source tree shouldn't be changing until you redeploy with some changes anyway, at which point Heroku will recreate it's read-only slug. This makes the actual deployment process on Heroku dead simple. Just do a git push heroku and you're done. If you need to roll back to a specific branch, tag, or even commit SHA, just force the commit with git push -f heroku commit:branch.