In today’s world, apps are critical to engaging customers, and as a result, there’s a growing demand for developers across industries. However, much of a developer’s time is spent on non-code related work, such as provisioning and managing servers, setting up hosting, data management, and security.

Thankfully, there are platforms such as Heroku that provide the quickest way for a company to build customer-facing and internal apps. So … what is Heroku? Heroku is a cloud-based app platform that lets companies build, deliver, monitor, and scale apps.

In this blog post, we’ll share five amazing things that developers may not know about Heroku. Along the way, we’ll also discuss how Heroku provides a great developer experience and why it is an ideal platform as a service (PaaS) for app developers.

1) Get your app up and running in the cloud in an instant

Creating an app on Heroku is extremely fast and easy. All you need to do is give it a name (unique globally), and choose a region. Seriously, that’s it!

Once you click Create App, you will have an app in the cloud almost instantly. It’s one of the fastest PaaS solutions, allowing developers to quickly build and deploy apps.

Using Heroku, developers can focus on building great apps rather than worrying about configuring servers or infrastructure. The process of deploying, configuring, scaling, tuning, and managing apps is made as simple and straightforward as possible.
A screenshot showing the Create New App experience in Heroku
Furthermore, if you have a public repository on GitHub, you can easily allow other developers to quickly deploy your code to their Heroku app with one-click provisioning using Heroku Buttons. This enables super fast configuring and deploying of third-party components, libraries, and pattern apps. For example, this sample Python Getting Started GitHub template allows you to quickly deploy a sample Python app with Django — all with just a click of a button.

See the Deploy to Heroku button circled in red in the screenshot below.

A screenshot of the Deploy to Heroku button

2) Automatically deploy across a myriad of languages

Typically, developers have to install different software and components in order to get their app running. But developers who deploy to Heroku can easily develop their app using any of the eight officially supported languages, namely Node.js, Ruby, Python, Java, PHP, Go, Scala and Clojure, without having to worry about setting up or configuring the stack.

Heroku does all of this magically on the developer’s behalf! Once the code is deployed, Heroku automatically detects the code used in your app, and subsequently uses the appropriate buildpack. Take for instance, Django is a widely-used Python web application framework used by developers today, and it is often used together with SQLite as the database engine. As you can see here, Heroku automatically detects that the app is running Python, and the platform automatically installs all the appropriate packages and dependencies.

A screenshot showing Heroku determining Python code Here’s another example. If you’re a developer who has a preference for hosting dynamic web apps in PHP, you may be familiar with the popular LAMP stack, which is usually installed and configured, and it includes a group of open source software, such as the Linux operating system, Apache web server, MySQL database to process PHP (hence, “LAMP”).

A screenshot showing Heroku determining PHP code
And as you can see here, once Heroku detects the buildpack it needs, it also automatically installs the required platform packages, such as apache, php, composer, nginx, etc.

A screenshot showing Heroku installing platform packages

If developers want to use a different language or framework from the eight offically supported ones, they can find a third-party buildpack to support it. Heroku allows developers to easily leverage the strength of any of their preferred languages to build a combination of applications across a variety of languages, or choose the one language that works best for their comfort zone or unique requirements.

Developers can easily leverage the strength of any of their preferred languages to build a combination of applications across a variety of languages, or choose the one language that works best for their comfort zone or unique requirements.

With that, developers can focus on just writing code, and when it is deployed to Heroku, the platform can detect the details from the application and the dependency description. The source code for your application, together with the dependency file, provides enough information for the Heroku Platform to build your application, which allows you to produce something that can be executed really quickly!

3) Easily add components to your application

Adding new features and components to an application can be time-consuming and complex. Heroku Add-ons are components that extend an application with additional services, such as data storage, monitoring, analytics, data processing, and more. Heroku Add-ons are fully maintained by either a third-party provider or by Heroku. They enable developers to quickly and easily add new features and components to their application, so they can focus on their own code and application logic without the additional complexity of maintaining supporting services at full production capacity.

For example, in this case, developers can easily add a MySQL database to their application just by searching for it within the Resources tab on their Heroku Dashboard. Imagine how easy it is to spin up an application and experiment with different add-on services to test out new ideas!
A screenshot showing Heroku Add-ons for MySQL

4) Seamlessly sync Salesforce and Heroku data

With modern apps, there are many instances where it would be extremely useful to use Salesforce data within the app experience. This can be achieved very easily using one of Heroku’s amazing add ons: Heroku Connect. This add-on allows developers to easily set up a bi-directional data bridge sync between the app’s Heroku Postgres database (which can also be easily provisioned as a Heroku Add-on) and Salesforce Objects. As you can see in this example, developers can easily decide which fields from objects in Salesforce to map to the Postgres database. The great thing about Heroku Connect is that the data synced does not affect Salesforce API limits because Heroku is part of the Salesforce Platform.

A screenshot showing Heroku Connect
With data changes synchronized bi-directionally between Salesforce and Postgres, Heroku Streaming Data Connectors are also another great tool that enable developers to leverage Heroku to increase the value of data through event-driven architecture. Streaming data connectors allow data changes in Heroku Postgres to be easily streamed to other stores and applications within, and even outside, of Salesforce for integration with other data sources, such as a Snowflake data lake or an AWS Kinesis queue.

Here are just a few use cases where developers are creating business value with Heroku Connect and Heroku Streaming Data Connectors:

  1. Combine data from multiple Salesforce orgs to enable cross/up-sell across orgs in order to improve internal efficiencies and sell more. Heroku Connect syncs Opportunity data from multiple Salesforce orgs to a Heroku Postgres database and replicates them to the main or “parent” org, which serves as the single source of truth for all opportunities. This makes it easy to use features, such as Salesforce Connect, to virtualize the opportunity data back to the child orgs or run analytics from one org.
  2. Leverage millions of customer interactions to drive personalization in apps, insights, and experiences from app logs, clickstreams, or any event source in order to deliver omni-channel experiences and sell more. Streaming data connectors and Apache Kafka for Heroku make it easier than ever to combine streaming event data into a single event bus, and turn transactional data into an event stream.
  3. Build real-time, responsive consumer experiences, apps, notifications, and insights with streaming data and event-driven architecture unified with Customer 360 in order to increase customer acquisition, engagement, adoption, and retention. Host streaming data on Apache Kafka for Heroku and use streaming data connectors to turn transactional data into an event stream and to integrate these experiences with your Customer 360 instance.
  4. Bridge legacy apps to modern app experiences without a rewrite to increase IT agility. Use streaming data connectors to turn transactional data from Heroku Postgres into an event stream and integrate with customer 360.
  5. Drive hyper-automation with streaming triggers across the application ecosystem. Imagine that your product fires an event into the event bus (Apache Kafka on Heroku) whenever a new user signs up. This event would trigger account creation in Salesforce, billing in CPQ, a marketing journey in Marketing Cloud, and onboarding processes in Service Cloud.

5) Make DevOps easier with Heroku Pipelines

DevOps is an important aspect of a developer’s work because it is a software development and operations approach that enables faster development of new products and easier maintenance of existing deployments. Heroku makes DevOps extremely easy with Heroku Pipelines.

A pipeline is a group of Heroku apps that share the same code base. Each app in the pipeline represents one of the following stages in a continuous delivery workflow: Development, Review, Staging, and Production.

The overview page of a pipeline illustrates the stages of this flow and provides information about the status of each stage. With one glance, developers can see in this dashboard that the staging environment is running differently than production. For example, the hashes 95961120 and 749f1b2c are different. The overview page also allows developers to easily promote to production with just one click, without causing any downtime to the app!

A screenshot showing the Heroku Pipelines dashboard
Furthermore, if developers are collaborating using GitHub, they can enable Heroku Review Apps to make the DevOps experience even better:

  1. When a developer creates a pull request to make a change to the code base on GitHub, Heroku automatically creates a review app for the pull request, allowing developers to test the change.
  2. When the change is determined to be ready, it’s merged into the code base’s master branch, and developers can choose to destroy stale review apps automatically.
  3. The master branch is automatically deployed to the pipeline’s staging app for further testing.
  4. When the change on staging environment is certified to be ready, a developer promotes the staging app to production, making it available to their intended users.

What else can I do with Heroku as a Salesforce Developer?

While these are my top five favorite features of Heroku, there’s so much more exciting stuff which Heroku has to offer, especially for Salesforce developers! With Salesforce Functions (launched recently), developers now have the option to execute code and extend the Customer 360 Platform with custom elastically scalable business logic. With Salesforce Functions, developers are also given the option to easily leverage Heroku data across the suite of Heroku data services, which include Heroku’s Postgres, Redis, and Kafka offerings.

Salesforce developers can create a function to easily iterate across data in Heroku Postgres, including data managed by Heroku Connect. Other use cases include producing messages into an Apache Kafka on Heroku stream, making it easier to deploy Apache Kafka on Heroku as an orchestration layer for microservices on the Heroku Platform, or sharing a job queue or cache based on Heroku Data for Redis!

Conclusion

Heroku was designed for developers, by developers. This means that its user interface and experience is simple and easy to use — just like a developer would expect. We hope that by utilizing some of these lesser known features within the Heroku Platform, developers can increase their productivity and create engaging applications that meet today’s demands.

About the author

Terence Lim

Terence Lim is a Salesforce Developer Evangelist with a focus on mobile app development and the Salesforce Platform. Known for his highly-energetic nature, he loves working with people, and nothing excites him more than to be able to inspire and empower others through technology. He has frequently spoken at conferences around the world. He loves meeting new people and learning new things, and he has lots of amazing stories from his travels to share. He’d absolutely love to hear your story too! Check out his GitHub projects @terlim-sfdc.

Get the latest Salesforce Developer blog posts and podcast episodes via Slack or RSS.

Add to Slack Subscribe to RSS