Melbourne Ruby on Rails shops wouldn’t need any further ratification on the benefits of using Heroku than the fact that Yukihiro Matsumoto joined the outfit three years ago asserting Heroku’s popularity further with Rubyists. “Matz” joined as Chief Architect, Ruby and became part of an assembly that arguably do not sell one of the more glamourous start up products, but definitely sell a product that allows start ups to sell more glamourous products. Matsumoto’s arrival was preceded in 2010 by the sale of Heroku to Salesforce for US$250m by which time the culture at Heroku had evolved into a place which breathes the distinctive start up culture of the clients that it services backed up by the philosophy that Heroku believes in “eating it’s own dogfood’ which means that they run Heroku on Heroku!
Initially Heroku ran just Ruby but is now able to run applications in Java, NodeJS, Scala, Python, Perl and PHP managing all of the infrastructure and taking care of hardware failures and system updates. Heroku is insanely easy to set up by uploading web applications instantly using Git either from an IDE or from the command line. Heroku will then build a version of the application using whatever build tool is appropriate for the language the application is built in, e.g. for Java either Maven, Playframework or SBT. Updated versions of your application are then deployed without any downtime whilst previous versions are stored by Heroku.
Heroku allows users to easily scale applications from a clean interface by clicking and dragging a slider according to the number of Dynos needed to support traffic and for the back end clicking and sliding the amount of Dyno Workers needed for things like fetching data from remote APIs and reading RSS feeds. Heroku will work as long as there is enough information in the source code of an application to produce something that can be executed meaning that changes do not necessarily need to be made to run on it. For deployment Heroku primarily uses Git but to the Heroku remote instead so instead of git push, deployment is ‘$ git push heroku master’ which is when Heroku initiates the build of an application. On top of good support for each language that it accommodates, Heroku also offers easy added functionality to apps via it’s add ons which include data stores (Memcache, Mongo, Hadoop, Redis etc), mobile, analytics, caching and so on.
What Heroku offers is a Platform as a Service (PaaS) which shortens the length of time getting to git push with maybe some basic configuration so whilst cloud service providers such as AWS offer infrastructure as a service (IaaS), Heroku’s target is the developer by cutting time on building an environment and offering a holistic cloud service.