Deep-dive on the Next Gen Platform. Join the Webinar!

Skip Navigation
Show nav
Dev Center
  • Get Started
  • Documentation
  • Changelog
  • Search
  • Get Started
    • Node.js
    • Ruby on Rails
    • Ruby
    • Python
    • Java
    • PHP
    • Go
    • Scala
    • Clojure
    • .NET
  • Documentation
  • Changelog
  • More
    Additional Resources
    • Home
    • Elements
    • Products
    • Pricing
    • Careers
    • Help
    • Status
    • Events
    • Podcasts
    • Compliance Center
    Heroku Blog

    Heroku Blog

    Find out what's new with Heroku on our blog.

    Visit Blog
  • Log inorSign up
Hide categories

Categories

  • Heroku Architecture
    • Compute (Dynos)
      • Dyno Management
      • Dyno Concepts
      • Dyno Behavior
      • Dyno Reference
      • Dyno Troubleshooting
    • Stacks (operating system images)
    • Networking & DNS
    • Platform Policies
    • Platform Principles
  • Developer Tools
    • Command Line
    • Heroku VS Code Extension
  • Deployment
    • Deploying with Git
    • Deploying with Docker
    • Deployment Integrations
  • Continuous Delivery & Integration (Heroku Flow)
    • Continuous Integration
  • Language Support
    • Node.js
      • Working with Node.js
      • Node.js Behavior in Heroku
      • Troubleshooting Node.js Apps
    • Ruby
      • Rails Support
      • Working with Bundler
      • Working with Ruby
      • Ruby Behavior in Heroku
      • Troubleshooting Ruby Apps
    • Python
      • Working with Python
      • Background Jobs in Python
      • Python Behavior in Heroku
      • Working with Django
    • Java
      • Java Behavior in Heroku
      • Working with Java
      • Working with Maven
      • Working with Spring Boot
      • Troubleshooting Java Apps
    • PHP
      • PHP Behavior in Heroku
      • Working with PHP
    • Go
      • Go Dependency Management
    • Scala
    • Clojure
    • .NET
      • Working with .NET
  • Databases & Data Management
    • Heroku Postgres
      • Postgres Basics
      • Postgres Getting Started
      • Postgres Performance
      • Postgres Data Transfer & Preservation
      • Postgres Availability
      • Postgres Special Topics
      • Migrating to Heroku Postgres
    • Heroku Key-Value Store
    • Apache Kafka on Heroku
    • Other Data Stores
  • AI
    • Working with AI
  • Monitoring & Metrics
    • Logging
  • App Performance
  • Add-ons
    • All Add-ons
  • Collaboration
  • Security
    • App Security
    • Identities & Authentication
      • Single Sign-on (SSO)
    • Private Spaces
      • Infrastructure Networking
    • Compliance
  • Heroku Enterprise
    • Enterprise Accounts
    • Enterprise Teams
    • Heroku Connect (Salesforce sync)
      • Heroku Connect Administration
      • Heroku Connect Reference
      • Heroku Connect Troubleshooting
  • Patterns & Best Practices
  • Extending Heroku
    • Platform API
    • App Webhooks
    • Heroku Labs
    • Building Add-ons
      • Add-on Development Tasks
      • Add-on APIs
      • Add-on Guidelines & Requirements
    • Building CLI Plugins
    • Developing Buildpacks
    • Dev Center
  • Accounts & Billing
  • Troubleshooting & Support
  • Integrating with Salesforce
  • Extending Heroku
  • Building Add-ons
  • Add-on Guidelines & Requirements
  • Add-on Performance Expectations

Add-on Performance Expectations

English — 日本語に切り替える

Last updated February 06, 2024

Table of Contents

  • Stability
  • Latency

Stability

Reliable and transparent operation is key to the success of any cloud service, including those powering Heroku add-ons. That said, any service will occasionally experience operational issues that affect customers. Acting and communicating appropriately around such events is critical to emerging with the customer’s trust and patronage intact.

Status page

Maintaining a service status page or blog is a simple way to inform users of any operational issues that could affect their usage. Having an always-up-to-date status provides a great starting point for any customer experience a problem, and can alleviate unnecessary load on your team in situations where all hands are required to fix a problem.

Scheduled maintenance

Always provide advance notice on any scheduled maintenance that will affect the operation of your service. In general, 24 hours is the least notice you should give your customers. You should both post the maintenance notice on your status page, and also notify users by email.

Interruptions and downtime

Unexpected downtime happens. When it does, it’s critical that you:

  • Acknowledge the problem as soon as you know of it. Use the status page and email notifications.
  • Restore service as quickly as possible, and notify using the same channels.
  • Provide a post-mortem analysis explaining what went wrong, and what is being done to prevent a similar outage in the future.

Latency

Heroku is available in multiple geographic regions. As an add-on partner, your service may need to work under low-latency conditions, in which case it should be available in the same region as the app provisioning it. Read the Add-on Partner API overview to better understand what is expected of your service.

Latency considerations

Low-latency connections are critical for cloud services built to be consumed in realtime. These include:

  • Databases such MySQL, CouchDB, or Casandra
  • Cache stores such as Memcache
  • Search services such as Websolr or Cloudquery

On the other hand, many services can tolerate an extra few hundred milliseconds of latency. Usually these are asynchronous services. For example:

  • Email sending services such as Sendgrid and Authsmtp
  • Outbound message services such as Messagepub or Chatterous
  • Monitoring services like New Relic, Exceptional, or Airbrake
  • DNS management services such as Zerigo DNS

Provisioning with latency

If your add-on service requires low latency then you should provision resources for Heroku apps within the same region as specified in the provision request region attribute.

If your add-on is latency sensitive and does not support that region, you should not provision the resource and instead return an error.

If normal internet latency is acceptable, you can run your service anywhere with a public hostname/IP.

Keep reading

  • Add-on Guidelines & Requirements

Feedback

Log in to submit feedback.

The Add-on Ownership Model and User Authentication Guidelines for Add-on Partners Add-on Support

Information & Support

  • Getting Started
  • Documentation
  • Changelog
  • Compliance Center
  • Training & Education
  • Blog
  • Support Channels
  • Status

Language Reference

  • Node.js
  • Ruby
  • Java
  • PHP
  • Python
  • Go
  • Scala
  • Clojure
  • .NET

Other Resources

  • Careers
  • Elements
  • Products
  • Pricing
  • RSS
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku Blog
    • Heroku News Blog
    • Heroku Engineering Blog
  • Twitter
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku
    • Heroku Status
  • Github
  • LinkedIn
  • © 2025 Salesforce, Inc. All rights reserved. Various trademarks held by their respective owners. Salesforce Tower, 415 Mission Street, 3rd Floor, San Francisco, CA 94105, United States
  • heroku.com
  • Legal
  • Terms of Service
  • Privacy Information
  • Responsible Disclosure
  • Trust
  • Contact
  • Cookie Preferences
  • Your Privacy Choices