PostgreSQL 10 Generally Available on Heroku

Today, we're happy to announce full support for PostgreSQL 10, opening our managed Postgres solution to the full slate of features released after a successful two-month Beta period. PostgreSQL 10 is now the default version for all new provisioned Heroku Postgres databases. All Postgres extensions, tooling, and integration with the Heroku developer experience are ready to use, giving you the power of PostgreSQL 10 with the ease and usability of Heroku for building data-centric applications.

We'd like to re-emphasize a few features – among the many released in Postgres 10 – that we are particularly excited about.

Native Table Partitioning

A pattern we often see in databases in our fleet is one or two tables growing at a rate that’s much larger and faster than the rest of the tables in the database. Query times within the application will start to rise, bulk loads will take longer, and creating indexes

Continue reading “PostgreSQL 10 Generally Available on Heroku”

Jekyll on Heroku

Jekyll, the static website generator written in Ruby and popularized by GitHub, is a great candidate for being run on Heroku. Originally built to run on GitHub Pages, running Jekyll on Heroku allows you to take advantage of Jekyll’s powerful plugin system to do more than convert Markdown to HTML. On my blog, I have plugins to download my Goodreads current and recently read books and to generate Open Graph images for posts. That said, it’s not straightforward to get up and running on Heroku without using jekyll serve to do the heavy lifting. jekyll serve uses Ruby’s built-in, single threaded web server WEBrick, but a public site should be using a web server more suited for production, like nginx.

We’ll start from the very beginning. You’ll need Ruby and Bundler installed.

I like ruby-install and chruby as my Ruby installer and switcher.

This is the platform-agnostic way

Continue reading “Jekyll on Heroku”

Announcing PCI Compliance for Heroku Shield

In June we announced Heroku Shield with new high compliance features for Heroku Private Spaces. Heroku Shield enables businesses like AlignTech to deploy apps that handle protected healthcare information (PHI) in accordance with government regulations.

Today, we are proud to announce that Heroku Shield Services have been validated as PCI Level 1 Service Provider compliant. This designation helps our customers understand how Heroku's systems and human processes work together to safeguard customer data. It helps security and audit teams in choosing Heroku as a platform for running a company's most critical apps.

Further Strengthening Trust with PCI

The Payment Card Industry Data Security Standard (PCI DSS) is one of the most widely known, industry-defined security standards. It mandates explicit security controls and requires certified organizations to be audited by a qualified security assessor. The combination of rigor and broad adoption makes PCI a valuable tool for building trust between Heroku

Continue reading “Announcing PCI Compliance for Heroku Shield”

Announcing Heroku Private Space Peering for AWS

Two years ago, we introduced Heroku Private Spaces as a new platform abstraction that combines powerful network isolation features with the seamless developer experience of Heroku.

Today we are announcing Heroku Private Space Peering, a new capability to connect the isolated Private Space network to apps and services in AWS VPCs controlled by you. Now you can build apps in Heroku that connect securely and privately to backend systems and workloads in AWS like a directory service, a search stack, a data warehouse, or a legacy SQL database.

How It Works

Private Space Peering is available to all Heroku Enterprise customers. Setting up a peering connection takes just a few simple actions. After you have initiated the peering connection on your AWS VPC, it will show up in the list of peerings for your Private Space in the Dashboard Network tab:

Pasted image at 2017_10_31 10_23 PM

Heroku will automatically route dyno network traffic

Continue reading “Announcing Heroku Private Space Peering for AWS”

Heroku Connect Update: Fast Writes, Global Deployment, and a Guided Management Experience

Today we are pleased to announce a significant update to Heroku Connect, one that is a culmination of two years of work to improve every aspect of the service. We’ve focused on three primary areas: improving write speed, geographically expanding the service, and intelligently guiding design and troubleshooting workflows. To that end, we’ve enabled bulk writes resulting in a 5x average increase in sync performance to Salesforce, deployed Connect in six global regions to be closer to customers’ databases, and built three guided management experiences that significantly increase user productivity.

Collectively, these enhancements will enable Heroku Connect to continue to meet the ever increasing demands of enterprise customers.

Enterprise Scale Data Integration

We’ve been fortunate to see rapid adoption of Connect amongst our largest enterprise customers. Not surprisingly, these customers tend to have large amounts of data, complex data models, and very high expectations when it comes to performance.


Continue reading “Heroku Connect Update: Fast Writes, Global Deployment, and a Guided Management Experience”

PostgreSQL 10 Now Available in Beta on Heroku Postgres

Earlier this month, PostgreSQL 10.0 was released. Today, we are excited to announce PostgreSQL 10 is available in beta on Heroku, bringing a number of notable feature and performance improvements to our managed PostgreSQL database service.

The beta provides customers who want to try out the new release an easy way to do so, while customers who are happy with the current version can continue to stay on version 9.6 until we make version 10 generally available. Also, new databases will continue to default to version 9.6 until we release version 10 to GA.

While PostgreSQL 10 has many feature and performance benefits, we’d like to highlight several that we are most looking forward to:

Performance Improvements

Most Heroku Postgres users will notice a performance boost when using PostgreSQL 10 for certain types of queries. The introduction of improved parallel queries, which optimize common types

Continue reading “PostgreSQL 10 Now Available in Beta on Heroku Postgres”

Container Registry & Runtime GA: Deploy Docker Images to Heroku

In the last few years Docker has emerged as a de facto standard for packaging apps for deployment. Today, Heroku Container Registry and Runtime is generally available, allowing you to deploy your Docker images directly to Heroku.

With Container Registry, you get all of the benefits of Docker — a great local development experience and flexibility to create your own stack — with the benefits of running on Heroku: maintained infrastructure, container orchestration, routing, the leading add-ons ecosystem, and a world-class security & operations team.

To deploy your Docker image to Heroku, simply run one command in the directory of your Dockerfile:

$ heroku container:push web

=== Building web
Step 1 : FROM alpine:latest
Successfully built 74bab4bf0df3

=== Pushing web
The push refers to a repository []
c8821d626157: Pushed

Heroku Container Registry allows you to easily build your Docker image locally and deploy to Heroku. Both Common Runtime

Continue reading “Container Registry & Runtime GA: Deploy Docker Images to Heroku”

In the Cloud, No One Can Hear Your OutOfMemoryError

Pushing an app to the cloud can feel like launching a probe into space. Once your project is thousands of miles away you can't bang on it with a hammer or replace broken parts when there's a problem. Your debugging efforts must rely on the instrumentation, telemetry, and remote controls included with the app when it was deployed. On Heroku, we've gladly done some of that prep work for you.

Two new Heroku features, Heroku Exec and Language Runtime Metrics, improve your production monitoring, inspecting, and debugging experience on the platform. With Heroku Exec, you can create secure TCP and SSH tunnels into a dyno, which facilitate SSH sessions, port forwarding, remote debugging, and most popular diagnostic tools. Our Language Runtime Metrics feature supplements these tools by displaying detailed time series metrics in your Heroku dashboard.

You can try Heroku Exec right now by running the following command on any

Eclipse Mat

Continue reading “In the Cloud, No One Can Hear Your OutOfMemoryError”

Heroku Exec and Language Runtime Metrics GA: Runtime Debugging on Heroku

We’ve all been there — you push your code to production and a leak causes memory usage to grow out of control. To determine the root cause of the problem, you need to be able to monitor, inspect, and debug the production application, collecting detailed data at runtime.

Today we’re making it even easier to debug your applications on Heroku, with the general availability of Language Runtime Metrics, starting with JVM languages, and Heroku Exec. Language metrics surfaces key indicators of an issue, like garbage collection activity, and heap and non-heap memory usage, on a unified timeline in the Heroku Dashboard.

After you’ve identified an issue, you can use Exec to connect to a dyno at runtime, via SSH, for further inspection and remote debugging. When combined with Application Metrics, Language Runtime Metrics and Exec provide a robust set of tools for maintaining production application health.

Runtime Inspection with


Continue reading “Heroku Exec and Language Runtime Metrics GA: Runtime Debugging on Heroku”

Announcing the Dublin, Ireland Region for Heroku Private Spaces

We are excited to announce the Dublin region for Heroku Private Spaces is now generally available for Heroku Enterprise customers. Dublin joins the growing list of regions that Private Spaces supports: Sydney, Virginia, Oregon, Frankfurt, and Tokyo. With the Private Spaces Dublin region, organizations can build and deploy Heroku-style apps closer to their UK customers, reducing network latency and providing a better user experience.

Heroku Private Spaces, available as part of Heroku Enterprise, is a network isolated group of apps and data services with a dedicated runtime environment, provisioned by Heroku in a geographic region you specify. With Spaces you can build modern apps with the powerful Heroku developer experience and get enterprise-grade secure network topologies. This enables your Heroku applications to securely connect to on-premise systems on your corporate network and other cloud services, including Salesforce.


To create a Private Space in Dublin, select the Spaces tab

Continue reading “Announcing the Dublin, Ireland Region for Heroku Private Spaces”

Kafka Everywhere: New Plans and Pricing for Apache Kafka on Heroku

Event-driven architectures are on the rise, in response to fast-moving data and constellations of inter-connected systems. In order to support this trend, last year we released Apache Kafka on Heroku – a gracefully integrated, fully managed, and carefully optimized element of Heroku's platform that is the culmination of years of experience of running many hundreds of Kafka clusters in production and contributing code to the Kafka ecosystem.

Today, we are excited to announce additional plans and pricing in our Kafka offering in order to make Apache Kafka more accessible, and to better support development, testing, and low volume production needs.

Apache Kafka on Heroku: Now With More Flexibility and Speed

Apache Kafka is a powerful, distributed streaming platform, and the dominant open source solution in managing high scale event streams. Kafka enables you to easily design and implement architectures for many important use cases, such as elastic queuing, data pipelines

Continue reading “Kafka Everywhere: New Plans and Pricing for Apache Kafka on Heroku”

Best of the Blogs: A Heroku Community Tour

Heroku is very fortunate to have a strong community of developers that are excited and passionate about our product. Every day we hear from customers who tell us how much easier Heroku has made their lives, and they frequently share stories about interesting technical projects we've helped them bring to life.

Our customers love us, and we love them right back. Today we'll take a look at a few blog posts and applications from Heroku users that illustrate what makes our community so special. We hope you enjoy the tour. If you have Heroku stories of your own you'd like to share, we'd love to hear them!

Dynos Spinning Other Dynos with Heroku

This article comes to us from Yoni Weisbrod, a JS & React Native developer from Ivy. Ivy makes a community and business management tool for interior designers. They ran into some challenges when their worker dynos

Continue reading “Best of the Blogs: A Heroku Community Tour”

Heroku Webhooks: Powering New Integrations and Real-time Notifications

We're happy to announce that Heroku app webhooks is now generally available for all Heroku customers.

App webhooks provide notifications when your Heroku app changes, including modifications to domain settings, releases, add-ons, and dyno formations. These notifications can empower your internal communications, dashboards, bots or anything else that can receive HTTP POST requests. Integrating with Heroku webhooks provides easy support for driving custom workflows and 3rd party tools.

Creating webhooks

With the webhooks CLI plugin, you can subscribe to events with a single command.

heroku plugins:install heroku-webhooks        
heroku webhooks:add -i api:release -l notify -u -a your-app  

In this example, after a new release is created for your-app, Heroku sends a POST request to your server endpoint with the details of the event. The example below shows the first section of a typical POST request:


Receiving webhooks

Webhooks are delivered by POST requests to a designated, publicly accessible URL.

Continue reading “Heroku Webhooks: Powering New Integrations and Real-time Notifications”

Evolution of the Heroku CLI: 2008-2017

Over the past decade, millions of developers have interacted with the Heroku CLI. In those 10 years, the CLI has gone through many changes. We've changed languages several times; redesigned the plugin architecture; and improved test coverage and the test framework. What follows is the story of our team's journey to build and maintain the Heroku CLI from the early days of Heroku to today.

  1. Ruby (CLI v1-v3)
  2. Go/Node (CLI v4)
  3. Go/Node (CLI v5)
  4. Pure Node (CLI v6)
  5. What's Next?

Ruby (CLI v1-v3)

Our original CLI (v1-v3) was written in Ruby and served us well for many years. Ruby is a great, expressive language for building CLIs, however, we started experiencing enough problems that we knew it was time to start thinking about some major changes for the next version.

For example, the v3 CLI performed at about half the speed on Windows as it did on Unix. It was

2017-07-20 09

Continue reading “Evolution of the Heroku CLI: 2008-2017”

Heroku Postgres Update: Configuration, Credentials, and CI

At the core of Heroku’s data services sits Postgres, and today, we are making it even easier to bend Heroku Postgres to the very unique needs of your application’s stack. With these new features, you can easily customize Postgres, making it more powerful and configurable, while retaining all the automation and management capabilities of Heroku Postgres you know and love. By changing Postgres settings, creating and working with database credentials, and providing tight integrations to Heroku and Heroku CI, you now have the ability to further tune your Postgres database to your team’s needs.

More Flexible Postgres with PGSettings

As we start peeling back the layers of Heroku Postgres, the ability to change the default behavior is the first step in making Heroku Postgres more flexible. Using the Heroku CLI, any developer can use the PGSettings feature to change portions of the default Heroku Postgres configuration. One of the more


Continue reading “Heroku Postgres Update: Configuration, Credentials, and CI”

Announcing Heroku ChatOps for Slack

Today we’re making our Slack integration generally available to all Heroku customers through the release of Heroku ChatOps.

ChatOps is transforming the way dev teams work, replacing the asynchronous communication and context-switching of traditional operations processes with a shared conversational environment so teams can stay focused, communicate in real-time, gain visibility, and speed joint decision making.

Having seen the benefits of Slack integration for managing our own apps, we wanted to make ChatOps easier to use and accessible to every dev team. Heroku ChatOps handles the complexity of user onboarding, authentication, and accountability between Slack & Heroku, and provides users with an intuitive slash command interface and curated Slack notifications to improve your team’s efficiency and transparency. Heroku ChatOps is easy to set up and works out of the box with just a simple click installation.

Our initial release supports the integration of Heroku’s popular Pipelines continuous delivery workflow with


Continue reading “Announcing Heroku ChatOps for Slack”

Using Heroku’s Expensive Query Dashboard to Speed up your App

I recently demonstrated how you can use Rack Mini Profiler to find and fix slow queries. It’s a valuable tool for well-trafficked pages, but sometimes the slowdown is happening on a page you don't visit often, or in a worker task that isn't visible via Rack Mini Profiler. How can you find and fix those slow queries?

Heroku has a feature called expensive queries that can help you out. It shows historical performance data about the queries running on your database: most time consuming, most frequently invoked, slowest execution time, and slowest I/O.


Recently, I used this feature to identify and address some slow queries for a site I run on Heroku named CodeTriage (the best way to get started contributing to open source). Looking at the expensive queries data for CodeTriage, I saw this:

Code Triage Project Expensive Query Screenshot

On the right is the query, on the left are two graphs; one graph showing

Expensive Queries Screenshot 2

Continue reading “Using Heroku’s Expensive Query Dashboard to Speed up your App”

On the Rise of Kotlin

It’s rare when a highly structured language with fairly strict syntax sparks emotions of joy and delight. But Kotlin, which is statically typed and compiled like other less friendly languages, delivers a developer experience that thousands of mobile and web programmers are falling in love with.

The designers of Kotlin, who have years of experience with developer tooling (IntelliJ and other IDEs), created a language with very specific developer-oriented requirements. They wanted a modern syntax, fast compile times, and advanced concurrency constructs while taking advantage of the robust performance and reliability of the JVM. The result, Kotlin 1.0, was released in February 2016 and its trajectory since then has been remarkable. Google recently announced official support for Kotlin on Android, and many server-side technologies have introduced Kotlin as a feature.

The Spring community announced support for Kotlin in Spring Framework 5.0 last month and the Vert.x

Continue reading “On the Rise of Kotlin”

Habits of a Happy Node Hacker 2017

It’s been a little over a year since our last Happy Node Hackers post, and even in such a short time much has changed and some powerful new tools have been released. The Node.js ecosystem continues to mature and new best practices have emerged.

Here are 8 habits for happy Node hackers updated for 2017.

1. Lock Down Your Dependency Tree

In modern Node applications, your code is often only the tip of an iceberg. Even a small application could have thousands of lines of JavaScript hidden in node_modules. If your application specifies exact dependencies in package.json, the libraries you depend on probably don’t. Over time, you'll get slightly different code for each install, leading to unpredictability and potentially introducing bugs.

In the past year Facebook surprised the Node world when it announced Yarn, a new package manager that let you use npm's vast registry


Continue reading “Habits of a Happy Node Hacker 2017”

Announcing Release Phase: Automatically Run Tasks Before a New Release is Deployed

You’re using a continuous delivery pipeline because it takes the manual steps out of code deployment. But when a release includes updates to a database schema, the deployment requires manual intervention and team coordination. Typically, someone on the team will log into the database and run the migration, then quickly deploy the new code to production. It's a process rife with deployment risk.

Now with Release Phase, generally available today, you can define tasks you need to run before a release is deployed to production. Simply push your code and Release Phase will automatically run your database schema migration, upload static assets to a CDN, or any other task your app needs to be ready for production. If a Release Phase task fails, the new release is not deployed, leaving the production release unaffected.

To get started, view the release phase documentation.


A Release Phase Example

Let’s say you have

Screen Shot 2017-05-09 at 10

Continue reading “Announcing Release Phase: Automatically Run Tasks Before a New Release is Deployed”