Heroku is a pure platform as a service -- that is, the entire infrastructure is managed by Heroku and not by you. As such, deploying a Ruby application, whether or not it is Rails based, is practically effortless. Deployment, in fact, is performed as a part of a regular SCM (software configuration management) sync via Git, an innovative, freely available, and quite popular distributed source code management system pioneered by Linus Torvalds, the creator of Linux.
Via Heroku's tight Git integration, there are no extra steps to publish code live. A developer simply executes a Git push of committed code to a Heroku repository, and the platform takes care of the rest, from downloading required dependencies (via Bundler) to scaling out the target application per the application's setting.
Scalability in Heroku is achieved via the platform's notion of dynos and workers, which are computing resource units. The more dynos or workers, the greater the number of incoming requests the application can handle simultaneously. Lastly, Heroku's price point is easy: An application with one dyno is free. You incur a price only when you add computing resourcing, such as extra dynos.
Heroku: One dyno for free
Heroku makes it easy to deploy a live application at no cost. There is no fee to deploy a Rails application, for example, that uses PostgreSQL. In fact, free applications receive 5MB of space within a live, shared PostgreSQL instance. An upgrade to 20GB of space will cost $15 per month. Certain business domains or requirements may prohibit storing data in a shared environment; accordingly, Heroku also offers dedicated instances of PostgreSQL. You can choose from six tiered levels that vary by resource allocation (memory footprint, simultaneous connections, and so on) ranging in monthly fees from $200 all the way up to $6,400.
Applications initially deployed to Heroku receive one dyno and no worker dynos. (Worker dynos handle asynchronous background jobs for an application such as sending emails or processing long requests.) Additional dynos beyond the free dyno cost 5 cents per hour. Thus, to run an application that uses two dynos and the freely available 5MB of database space will run $35 per month.
Scalability in Heroku is achieved via its dyno mechanism. Dynos directly affect an application's overall ability to concurrently serve requests; the more dynos available to an application, the greater the throughput. Furthermore, dynos have a memory footprint. Each dyno is allotted 512MB of memory; Heroku documentation indicates that a single dyno can typically handle somewhere between 10 and 50 requests per second. Thus, increasing the number of dynos for an application increases the maximum requests it can handle per second. However, if a request to a Web application page takes 10 milliseconds to respond, increasing dynos won't reduce that time.
Heroku has adequate documentation. In truth, the platform is so simple that copious documentation isn't required. Nevertheless, when issues arise, solutions can often be found easier via Google than via internal Heroku documentation. That aside, Heroku support is outstanding. Via status.heroku.com, one can always see the overall system's status; what's more, trouble tickets can easily be created and the team usually responds quickly with a response and solution.
Heroku: Rapid deployment
In addition to the tight deployment integration à la Git, Heroku offers a powerful command-line utility that provides all management features of the platform, including application configuration, dyno scaling, SSL certificates, and more. Heroku's command-line utility is testimony to the platform's deep developer roots.
Conversely, Heroku doesn't offer a fully functional dashboard for managing an application. With a preference for the command line, the Heroku team appears to have adopted a minimalist approach to the Web user interface. There are no bells and whistles indicating application performance or traffic, for instance. You can increase dynos or provision add-ons (third-party extensions explained below) within the browser GUI, but you'll often find these administrative tasks are more easily executed via the command line.
Heroku supports a wide variety of languages in addition to Ruby, including Java, Node.js, and even Python. Indeed, the wide variety of languages offered by Heroku reflects a growing trend toward developer polyglotism and speaks volumes to the growing community surrounding the platform. This community continually adds to the expanding base of documentation one can find in blogs, Stack Exchange, and the like.