A few days back I looked in to the cloud Platform as a Service (PaaS) Heroku. I didn't quite understand what the pricing options were, so I wrote it off as something that was more for individuals with money, startups with funding, or larger companies. I had heard the name thrown around with the word scalable, and the pricing options page showed that, but I still was a bit unclear about what Dynos were, why I needed them, and if Heroku was a better option for me than my current PaaS Webfaction. What I discovered today was that it can be used for free, supports my language/framework of choice Python/Django with PostgreSQL, and has appealing add-on features.
The article that spurred my discovery is from an amazing web-app development blog/tutorial site NetTuts+. The article popped up in my RSS feed comparing AppFrog to Heroku. I gave the article a quick read over (I recommend it) and discovered that Heroku's most basic option is free (along with AppFrog's). Immediately, I had to explore Heroku, set up an account and play around with it. I was instantly in love.
Heroku gives you the tools to develop and test locally and deploy to the live server using a simple
git push. With the free/most basic plan, you get 750 hours of CPU time per application per month. That means 1 CPU running 24/7 all month with 20 hours to spair! This much means you can run many applications at once, and as long as they don't require more than 750 CPU hours each, they are all free to run. If they do end up gaining traffic, that's where the scalability of Heroku pays off. Scaling your web-app is as simple as adding Dynos (I'll explain these in the next paragraph) to your plan and changing some config files. In addition, there is a free database option (10k rows) and a many of the add-on features have free options as well. The only (small) disadvantage is the limited storage space and no uploading capabilities. Heroku gives users 200MB per application (plenty for application code and some assets) and files uploaded to the server are removed on unannounced resets. Amazon S3 is always an option as well if more storage is needed and user uploading is necessary.
The word Dynos is pretty vague, it doesn't make much sense at all by itself, but it's pretty simple. You can add Web Dynos or Worker Dynos to an app. A Web Dyno is a CPU that handles HTTP requests, that's it. A Worker Dyno is a CPU that handles background jobs, i.e. jobs that are added to a queue and executed on the server. Usually background jobs are computation heavy and require more than just fulfilling an HTTP request. More information on how Heroku works is available here.
Another great feature of Heroku is the copious amount of documentation. There is setup documentation on topics including Python, Django, Ruby, Rails, Java, Play!, Grails, Closure, Scala, and Node.js!
That's all for now, thanks for reading!