Develop on Heroku #PaaS for overly simplified build, deployment, scaling and management of your NodeJS application. NodeJS is not the limit though

Heroku is a cloud platform as a service (PaaS) supporting several programming languages. The developers have added support for Java, Node.js, Scala, Clojure, Python and PHP in Heroku.

heroku-logo-300x93

It seamlessly takes care of version, build, package, deployment, scaling and management of the application. A developer can just focus on the code and not worry about the nightmares of release and deployment. This is the screenshot of how this deployment would look like.

HerokuSettingPage This is the settings page where you can see the domain and application configuration for this deployment.

HerokuActivityPage

This is the activity and log page which shows the events log at the PaaS system being used for the application

A.) Heroku Account

1.) Create a free account at https://id.heroku.com/login without using a credit card.

B.) Heroku publish a nodsjs application

 1.) Setup Heroku toolbelt in order to access the Heroku PaaS interface. This is the client that shall be used for any communication and interaction with the Heroku system.

 2.) Get some NodeJs application that would be deployed on Heroku.
     $ git clone https://github.com/vishwakarmarhl/ngboilerplate-heroku.git

 3.) Create a heroku app and make sure there is no nested subfolder structure hiding the app.js, package.json, Procfile files in your code.
     $ heroku create --app ngbp-rhl
       Creating ngbp-rhl... done, stack is cedar
       http://ngbp-rhl.herokuapp.com/ | git@heroku.com:ngbp-rhl.git
 
     $ heroku config:set BUILDPACK_URL=https://github.com/heroku/heroku-buildpack-nodejs#diet -a ngbp-rhl
       Setting config vars and restarting ngbp-rhl... done, v5
       BUILDPACK_URL: https://github.com/heroku/heroku-buildpack-nodejs#diet
4.) Push the repository to heroku for deployment
     $ git push heroku master
       Fetching repository, done.
       Counting objects: 5, done.
       Delta compression using up to 8 threads.
       Compressing objects: 100% (3/3), done.
       Writing objects: 100% (4/4), 522 bytes | 0 bytes/s, done.
       Total 4 (delta 1), reused 0 (delta 0)
       -----> Node.js app detected
       PRO TIP: Specify a node version in package.json
       See https://devcenter.heroku.com/articles/nodejs-support
       -----> Defaulting to latest stable node: 0.10.32
       -----> Downloading and installing node
       -----> Exporting config vars to environment
       -----> Installing dependencies
       -----> Cleaning up node-gyp and npm artifacts
       -----> Building runtime environment
       -----> Discovering process types
       Procfile declares types -> web
       -----> Compressing... done, 5.5MB
       -----> Launching... done, v4
       http://ngbp-rhl.herokuapp.com/ deployed to Heroku
       To git@heroku.com:ngbp-rhl.git
       c47ec59..2298a1a master -> master
 5.) Scale and manage the application using the Personal App in web console
    $ heroku ps:scale web=1
      Scaling dynos... done, now running web at 1:1X.
 
    $ heroku open
 
    $ heroku logs --tail
 6.) Now finally not all of us would like to push our apps in the blackhole and wait for it to crash before debugging. 
     Here is foreman that can help you initialize the app locally and test it out. 
     Foreman comes  as a heroku toolkit bundle.

    $ foreman start web
      18:56:31 web.1  | started with pid 13824
      18:56:31 web.1  | Listening on 5000

This is just a glimpse of the simplified workflow followed in order to bring up a nodejs application on heroku. Hoever the dependencies are to be managed by the application and verified for successful deployment based on the log and management console.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s