heroku-codeI still get a little chill down my spine every time I type “git push heroku master.” Why? I really do believe that someday all software deployments will be this easy, even in a private corporate environment.

For those of you not familiar with the magic of Heroku, now is a good time to check it out. Heroku is a mature Platform-as-a-Service (PaaS) offering that has been operating for almost seven years – the last four under the ownership of Salesforce.com.

The basic unit of abstraction in the Heroku platform is a “dyno.” Unlike a virtual machine, which often contains multiple apps, a dyno IS a single instance of an app. As such, it represents a much finer grained level of abstraction than a virtual machine. This is much more in line with how apps really get scaled and managed. For example, you might only need one database instance, two web servers, but three or more instances of your business logic. With Heroku, it’s easy to dynamically scale up each individual component of the larger system using dynos. The shared infrastructure built in to Heroku’s dynos also means you are not burdened with managing the underlying operating system and infrastructure like you are when everything is inside VMWare or raw Amazon Machines Instances (AMIs).

Heroku uses git to version and deploy your code so it’s very familiar to anyone used to command line development tools. The magic, however, comes with the ‘git push heroku master’ command which starts the deployment pipeline processing that detects what programming language you are using and auto-magically downloads and bundles up all the necessary third party packages needed to launch, run, and manage your app.

Once deployed, you can continue to enhance your system by selecting third party add-ons which add powerful functionality to your apps. I personally use MongoLab (for MongoDB), Logentries (for Logging), and Auth0 (for SSO and User Management) but there are over 150 other useful add-ons to choose from for functions such as search, analytics, payment processing, and mobile infrastructure.

I have tested the Solace Node.js client libraries in Heroku as follows

1) create a simple pub/sub client app using the Solace JavaScript API and deploy it to Heroku
$ heroku login
$ npm install node-solclientjs-6.2.0.5.tar.gz (get this from solace.com/downloads/ )
$ cd node_modules/solclient
$ vim example/pub.js examples/sub.js [edit first line to require("../lib/solclientjs.js") ]
$ vim example/arguments.json [edit to point to your own Solace Messaging Appliance or one of the public message-vpns on the internet]
$ git init
$ git add .
$ git commit -m "init"
$ heroku create
$ git push heroku master

2) start a shell in one dyno and subscribe
$ heroku run bash
> cd example
> node sub.js

3) start a shell in another dyno and publish
$ heroku run bash
> cd example
> node pub.js

Solace and Heroku are a great match: easy virtualized software meets easy virtualized hardware.

Solace logo
Solace

Solace helps large enterprises become modern and real-time by giving them everything they need to make their business operations and customer interactions event-driven. With PubSub+, the market’s first and only event management platform, the company provides a comprehensive way to create, document, discover and stream events from where they are produced to where they need to be consumed – securely, reliably, quickly, and guaranteed.

Behind Solace technology is the world’s leading group of data movement experts, with nearly 20 years of experience helping global enterprises solve some of the most demanding challenges in a variety of industries – from capital markets, retail, and gaming to space, aviation, and automotive.

Established enterprises such as SAP, Barclays and the Royal Bank of Canada, multinational automobile manufacturers such as Renault and Groupe PSA, and industry disruptors such as Jio use Solace’s advanced event broker technologies to modernize legacy applications, deploy modern microservices, and build an event mesh to support their hybrid cloud, multi-cloud and IoT architectures.