Advantages and Disadvantages of Heroku

When you think about a cloud-based Ruby development platform, the first word that comes to mind is Heroku. It is built on Amazon EC2 and the biggest advantage of Heroku is its no-nonsense approach towards application deployment. Of course, this comes at the cost of taking away a lot of frills and fancies with regard to application management, but, if you are one of those developers who do not want to waste time on system administration tasks, then this is the right choice for you.

Heroku is fully managed by Ruby professionals and though the foundation is on EC2, the components sitting on top of that are also open source – whether it be the Linux OS or the PostgreSQL database, thus increasing the flexibility of use. The middleware is in-house developed using Erlang. The people managing Heroku makes sure that the environment is actively monitored and tweaked, thus offering only stable deployment platforms for the developers to work on.

Heroku is also a good value for money product, although you may not get the entire set of computing resources that Amazon has to offer. It includes a database, e-mail, reverse proxy cache and even the functionality to run background jobs. The background jobs are run using the Delayed Job standard where tasks are queued in a database and run asynchronously by a pool of job workers. The Heroku interface for background job execution is pretty neat, and you can increase the number of job workers assigned for background jobs with the help of a slider. You can now offer additional functionalities in your web application, by relegating slow processes as background jobs.

Scared of New Dev Platforms? Don’t Worry, You Can Try it Free!

Heroku has a freemium model, and invariably, Ruby enthusiasts who try out Heroku, invariably get hooked on to it and start using more and more resources and move to the premium offering. The service plan you choose determines, among other things, whether your database is dedicated or shared.

A Few Disavantages To Consider

Heroku is not really meant for use by a big organization – the target market is the individual Ruby developer who may not have the bandwidth to either be the system admin himself or hire an external system admin. This is evident, in various aspects of the platform including its documentation, which is not too bulky. However, there are big corporations who use Heroku for their development needs as well.

One other disadvantage is the read-only file system which makes it difficult to handle bulky file uploads such as videos or high resolution images. But, that can be easily overcome using Amazon S3 or something similar.

Using Heroku Really Depends on Your Development Philosophy

Ultimately, the use of Heroku depends on the development philosophy – if you are willing to sacrifice control over the application configuration and deployment, so that you can develop that much faster, then you would definitely love Heroku. You can completely forget about servers, run virtually anything on the platform and even scale up easily when you opt for Heroku.

Another option that you have for a cloud based platform is Engine Yard. The good thing about Engine Yard is that it provides more flexibility over the application development environment, but in my opinion, it is not as easy to use as Heroku, and thus for beginners, I would suggest using Heroku. Which cloud based platform do you prefer – Heroku or Engine Yard? Do let us know in the comments section.