Threshold Alerting for Application Metrics Now Generally Available

Today we're announcing two new features that will help you better manage and run apps on Heroku: Threshold Alerting and Hobby dyno metrics. Threshold Alerting provides the ability to set notification thresholds for key performance and health indicators of your app. We’ve also extended basic Application Metrics to Hobby dynos to provide basic health monitoring and application guidance. Together these features allow you to stay focused on building functionality by letting the platform handle your app monitoring.

Threshold Alerting

There are many ways to measure the health of an application. The new alerting feature focuses on what is most important to the end users of your app:...

Read more →

Real-World Redis Tips

Redis might sound like it’s just a key/value store, but its versatility makes it a valuable Swiss Army knife for your application. Caching, queueing, geolocation, and more: Redis does it all. We’ve built (and helped our customers build) a lot of apps around Redis over the years, so we wanted to share a few tips that will ensure you get the most out of Redis, whether you’re running it on your own box or using the Heroku Redis add-on.

Use a Connection Pooler

By using a connection pooler, you'll reduce the connection overhead and therefore speed up operations while reducing the number of connections you use.

Most Redis libraries will provide you with a specific connection pooler...

Read more →

How Combatant Gentlemen Solved Service Discovery Using Heroku Private Spaces

Scott Raio is Co-Founder and CTO of Combatant Gentlemen, a design-to-delivery menswear e-commerce brand. Read our Combatant Gentlemen customer story to learn more about how Heroku helped them build a successful online business.

What microservices are you running in Heroku Private Spaces?

We’ve written an individual service for every business use case. For example, we have services for order processing, product catalog, account management, authentication, swatch display, POs, logistics, payments, etc.

With all these different services, we chose Heroku Private Spaces as a way to make service discovery easier. We’re currently running about 25 services, which is a relatively small number...

Read more →

Powering the Heroku Platform API: A Distributed Systems Approach Using Streams and Apache Kafka

We recently launched Apache Kafka on Heroku into beta. Just like we do with Heroku Postgres, our internal engineering teams have been using our Kafka service to power a number of our internal systems.

The Big Idea

The Heroku platform comprises a large number of independent services. Traditionally we’ve used HTTP calls to communicate between these services. While this approach is simple to implement and easy to reason about, it has a number of drawbacks. Synchronous calls mean that the top-level request time will be gated by the slowest backend component. Also, internal API calls create tight point-to-point couplings between services that can become very brittle over time.

Asynchronous...

Read more →

Neither self nor this: Receivers in Go

Andrey Petrov is the author of urllib3, the creator of Briefmetrics and ssh-chat, and a former Googler and Y Combinator alum. He’s back again to free us of our old ways of thinking, so that we can embrace what's really special about receivers in Go.

When getting started with Go, there is a strong temptation to bring baggage from your previous language. It’s a heuristic which is usually helpful, but sometimes counter-productive and inevitably results in regret.

Go does not have classes and objects, but it does have types that we can make many instances of. Further, we can attach methods to these types and they kind-of start looking like the classes we’re used to. When we attach a...

Read more →

Browse the blog archives, subscribe to the full-text feed, or visit the engineering blog.