Heroku is a cloud platform as a service (PaaS) supporting several languages. It is developed in 2007, supported only Ruby programming language. Now it support Java, Node.js, Scala, Clojure, Python, PHP, and Go.
Developers get started by creating a Heroku “app” and introduce their original code via git repository. Heroku simply takes things from there—building and deploying the application, then serving it up for consumption as needed. This includes static resources (like an Angular or React.js application), which can be served from a Node.js implementation.
Heroku provides over 175 add-on services to complement each app, featuring:
- database services
- uptime alerts
- messaging services
- automatic backups
- search
- metrics
- mail delivery
Features of Heroku
1. Buildpacks and Slugs
Buildpacks are the mechanism inside the Heroku ecosystem which compile application code and create a “slug.” The slug is a pre-packaged copy of the application (including any necessary runtime layer) that is optimized for distribution into a dyno.

As part of creating a new application in Heroku, a git remote is created from the repository containing the source code to deploy. With this in place, a standardized git push command is issued, along with specifying the target host and branch. In the example above, git push heroku master is issued to push the current branch to the “master” branch in the “heroku” remote. This triggers Heroku to start processing the request. The first step is to scan the project to understand if a buildpack has been specified in the Heroku configuration. If using one of the supported languages noted above, this step is not necessary as Heroku will automatically select the correct buildpack.
2. Dynos, Config Vars, and Releases
A buildpack and slug were utilized to launch a new application in Heroku. The application itself runs in a Heroku dyno, which is the heart of the Heroku platform. Dynos are Linux-based containers that are isolated and designed to execute code based upon a user-specified command.
In order to avoid including sensitive and configuration information in the source code of the application, Heroku provides a mechanism to house configuration variables.
Whenever code is deployed, a configuration variable is changed, or an add-on resource is modified, Heroku creates a new release and restarts the dyno application. This is a feature of Heroku that often goes overlooked, as Heroku always provides the ability to roll back to a prior state with ease.
3. Heroku add-ons
The adaptability of a product or a platform is largely tied to libraries or services which are available with the mere click of a mouse button or issuing a simple command-line statement. Currently, Heroku includes over 175 add-on products which cover over 24 different categories of add-ons.
4. Logging and Routing
Heroku simplifies logging by automatically collating and routing logs from every part of your application into a single channel. This provides a truly comprehensive and extensible app-centric logging.
Heroku uses Logplex for distributed log routing and collation.