Heroku 101

There are still moments when I mention Heroku only to be met with a blank stare. Which is truly heart-wrenching because Heroku is amazing. In many cases, it is the simplest path between A & B. It gets projects out of the discovery phase, into development, and out to production like nothing I have ever seen before. Intrigued?

Let’s cover the basics first…

Where does Heroku Fit?

Cloud computing enables convenient, on-demand network access to a shared pool of configurable computing

Heroku is a Platform as a Service (PaaS), delivering tools that enable software development. Heroku, as a PaaS, allows business to quickly deploy, build, manage, and scale enterprise-level applications while bypassing infrastructure headaches normally required to host an enterprise quality application. It acts as the middle-man between hosting/infrastructure and Salesforce.

All Heroku-based applications are hosted by Amazon Web Service (AWS), an Infrastructure as a Service (IaaS) provider and the base of our pyramid. AWS manages computing resources and significantly reduces setup time during new app development. Load balancing, operating system selection, servers, networks, storage, logging and monitoring of the server, monitoring the health of the application, establishing container organization — all handled by AWS.

“We don’t have a data center any more. And that’s great! We let AWS do all the infrastructure work.” Neil Hunt, chief product officer at Netflix

As luck would have it, AWS is the gold standard for IaaS and used by just about everyone you can think of operating in the Cloud. The list includes Netflix, Dow Jones, The Weather Channel, portions of several Federal Governments, and Citrix. If AWS goes down, your biggest concern will probably be your bank and not your app.

This brings us to the top of the pyramid, Salesforce. Salesforce is a Software as a Service (SaaS), licensing their application to customers and delivering it over the internet. Applications developed on Heroku are fully supported by Salesforce (a SaaS).

Why Does This Matter?

Managing infrastructure can quickly overwhelm development efforts. Instead of focusing resources on bringing an idea to life, projects that attempt to handle infrastructure in-house often lose sight of the original goal when they get caught-up in reinventing the wheel.

On top of the fact that managing your own infrastructure is fraught with risk. If your server goes down or there is an interruption in internet service at the home office, all of the business processes associated with the application come to a screeching halt. Heroku prevents this from happening.

Focus on Creation

In addition to the support of AWS, development projects that utilize Heroku benefit from a rich ecosystem of plug-and-play add-ons. Instead of building every aspect of the application from scratch, development teams choose from a growing list of tools and services for developing, extending, and operating applications.

Does your application need a chat server? Message Rocket is ready to go and supports Clojure, Go, Java, Node, PHP, Python, Ruby and Scala. If Big Data is your thing, Treasure Data manages more than 15 trillion records at a rate of 500,000 records per second. IoT integration is available through Xively’s element and SendGrid is the plug-and-play email server we use in our ownPLAN App Accelerator.

“Don’t reinvent the wheel, just realign it.” Anthony J. D’Angelo, vice president of sales and marketing at InterTrade Systems

Utilizing these elements reduces development time and makes the app easier to maintain because the element provider handles updates forced by operating system changes. Azure, AWS, Google, and other PaaS providers offer similar solutions but none of these providers has taken the time to build a platform that is as user-friendly as Heroku.

No Language Barriers

Heroku is not a single language solution. In fact, it supports most open-source languages allowing you to leverage languages to your strengths.

You may choose to build a combination of applications, each in a different language or build one language that is already well supported within your organization. Do you need to deploy a scalable network application? Node.js may be the best choice. Does your current IT team live in the world of Java? Then stick with it.

Getting Into the Cloud — The All-In Approach

Heroku’s rich ecosystem backed by the support of AWS eases transitions into the Cloud. Locally hosted applications, whether on your server or someone else’s, are inherently difficult to scale. Moving to the cloud enables your application to grow with your business.

Let’s say you are a retailer who manages inventory using a custom-built Java application on a server in your back office. Business is good and you open a few more locations in various regions. To manage inventory consistently, your new locations VPN into that back office server to check product availability and maintain accurate inventory records. If the internet goes down at your server location or your server struggles to support the increased strain of multiple processes and connections, your entire business could suffer.

“I don’t need a hard disk in my computer if I can get to the server faster… carrying around these non-connected computers is byzantine by comparison.” Steve Jobs, co-founder of Apple

With a few light modifications to the backend, your inventory management application will port over to Heroku and deploy worldwide from a robust network of cloud-based servers supported by Amazon’s team of security and infrastructure experts. Each of your locations now has independent access to your shared inventory management data.

Getting Into the Cloud — The Hybrid Approach

For some businesses, a hybrid approach works best. This is often the case when there are concerns about internet accessibility in the field. The solution is to connect a Heroku Instance to provide centralized logic and backend support to a native desktop or mobile application.

The Heroku Instance keeps application data updated and synchronizes local devices by pushing data to the native application built on Electron (desktop applications) or Cordova (mobile applications).

In practice, this type of solution supports resources in the field that occasionally lose internet access. For example, a cave and pipe inspection company needs their inspectors in the field to have access to specific data during an inspection.

The inspectors pull what they need from the Heroku Cloud server onto their local devices to access while performing an inspection underground. When the inspection is complete and the inspection team resurfaces, the application synchronizes with the Heroku Cloud server and sends the new data to the Heroku Cloud server. All of the company’s inspection data is stored in a centralized location for the entire business to access.

Getting Into the Cloud — The Private Approach

What if your business deals with military contracts and needs to ensure that specific data does not leave the shores of the United States? Can a Cloud solution still work? Absolutely.

A Heroku Private Space is a network-isolated group of applications and data services within a dedicated environment. It is provisioned within a client-specified region and provides secure network topologies. Your Heroku applications connect securely to on-premise systems on your network and to Cloud-based services like Salesforce. Not only are Private Spaces protected through the limited access of the Space’s private network, operating within a Private Space ensures low latency performance because each Private Space has a dedicated runtime environment.

Applications built on Heroku let your creative-side shine while cutting down development time and ensuring stability and reliability. While we may not have covered enough ground to get you developing on your own, you have certainly moved past the “blank stare” stage.

Ready to learn more? Subscribe to our blog to keep learning about how Heroku enables development that maximizes Salesforce ROI.