Since April 2021, the Heroku Runtime team has been working to deploy upgrades to the infrastructure powering Common Runtime apps, and we’re excited to formally announce the performance improvements that customers are already seeing.
When this Changelog post was published in May introducing the changes, almost all Common Runtime apps had been migrated from what we internally called the “classic“ infrastructure to the new “sharded” architecture. In addition to performance enhancements, this migration is expected to result in lower latency across the platform.
Around 99.9% of customers didn’t have to make any changes to their Heroku apps to benefit from these upgrades, and dyno prices are unchanged.
Common Runtime Improvements
The new sharded architecture includes two major performance improvements:
First, we’ve upgraded to newer generation infrastructure instances, similar to the improvements we made to Heroku Private Spaces in 2020.
Second, we’ve updated our routing infrastructure and services. With this comes several improvements such as automatic TLS 1.2+ enforcement. More importantly, the new routing infrastructure will help us unlock further product enhancements in the coming months and years.
Thank You!
We tried (and mostly succeeded) to make the migration seamless for Heroku customers. As expected with any sweeping architecture change, we did uncover some unique use cases and situations that required assistance from customers to properly migrate.
If you’re subscribed to the Heroku Changelog you might have seen mention of a few of the DNS and SSL Endpoint changes. Those changes were required to let Heroku properly support apps on the improved platform without causing any downtime or degraded experience for you or your end users. We sincerely appreciate your patience and help as we made these changes in order to modernize and improve Heroku.
Customer Impact
Rolling out a massive change to millions of apps has taken many months. As apps have come online on the new infrastructure, we’ve seen improvements from both Heroku customers and their apps’ users.
When reading these graphs, keep in mind that every app is different and Common Runtime use cases are varied. In some cases, we’ve been able to see roughly 30% percent improvement in latency and CPU utilization. While such dramatic improvements are not guaranteed, we expect every customer to see improvements.
Check out a few of the examples below:
The changes @heroku have been rolling out to their standard runtime are legit. @railsautoscale was routinely running up to 20 std-1x web dynos. Now it's mostly just 3 dynos.
— Adam McCrea (@adamlogic) August 26, 2021
Can you tell when they made the switch? pic.twitter.com/BHfzXxK8Pg
And from Reddit:
Some quotes from support tickets:
Request Latency Decrease
Since Wednesday June 2nd at 11pm GMT + 7 we experienced a lot of performance improvements, can be seen in ScoutAPM, Librato or Heroku metrics itself.
Dyno Performance Improved
It seems that our dynos are really FAST this morning, and it all started between 00:10 and 00:20 UTC+2... we are glad to know that this is the new normal for the platform. The performance we are obtaining right now are very good, and they improve the experience for our customers.
Faster Heroku Review Apps and Heroku CI
...our tests got much faster! [Test 1] ran on August 9th and took about 11 minutes [Test 2] ran on August 13th and took about 8 minutes
Summary
The Common Runtime performance enhancements rolled out over the summer are a great example of the benefits of relying on a managed PaaS like Heroku rather than running apps directly on un-managed infrastructure that has to be laboriously maintained and updated. Most Heroku Common Runtime customers should see meaningful performance improvements with no customer-action required.