Bundles Deprecation

Recently we announced the release of PG Backups, our new database backup service. Since then, PG Backups has seen rapid adoption and has been successfully managing the backups of a large and growing number of our production customers.

Today we are announcing the deprecation of Bundles. Although Bundles has served the Heroku community well, we have found that it doesn’t scale to adequately meet the needs of the larger, more complex applications running on Heroku today.

We encourage all of our users to migrate their application backup strategy to PG Backups as soon as possible.

Starting today (November 30, 2010) we will no longer allow the Bundles add-on to be added to applications. Applications that already have Bundles installed will continue to function normally.

On February 1, 2011, Bundles will cease capturing new backups. By this time all active applications on Heroku should have switched to using PG Backups to backup their data.

Backups made with Bundles will continue to be available until April 4, 2011. After that time users will no longer be able to download or restore from Bundles-based backups. Please download any backups that you wish to permanently archive prior to this date.

Release Management on Heroku

When a team of developers uses continous deployment to deploy to their Heroku staging and production apps multiple times per day, having a record of what was deployed and when can be very valuable. This is especially true when bad code gets deployed: being able to recover quickly from failure is a key part of any agile process.

Today, Heroku is announcing our release management add-on. When installed on an app, every code deploy is recorded in a ledger with information about who deployed, when, and what commit hash. And it’s not just code: anything that changes the app environment, such as adding or removing add-ons or changing config vars, creates an entry in the release ledger. It looks like this:

$ heroku releases
Rel   Change                By                  When
----  -------------------   ----------          ----------
v17   Deploy 38a0f41        julie@example.com   7 minutes ago
v16   Config add API_URL    steve@example.com   31 minutes ago
v15   Maintenance off       joe@example.com     6 hours ago

The audit trail for deploys is useful information, and you can use a releases:info command to zoom in and get exact details for each release. But what’s even better is being able to roll back from bad deploys, like a giant undo button for your app.

$ heroku rollback
Rolled back to v16

The rollback command restores the previous release (or any release that you specify). Rollbacks are a very quick operation, because unlike pushing up new code, your slug doesn’t need to be recompiled. This is particularly significant for large apps with many gem dependencies.

Release management isn’t terribly important for small apps; but for large production apps with many developers, frequent pushes, and lots of code, it’s vital. The basic release management add-on (two levels of release history, one level rollback) is free; the advanced add-on (unlimited history and rollbacks) will be premium priced.

Read the docs, then give it a spin and let us know how it works for you.

This is the second in a series of new features targeted at large production applications (the first being support for larger databases). More features in this vein are coming soon!

Announcing PG Backups

Heroku is launching a new database backup solution. Heroku PG Backups is available immediately and is the officially supported and recommended method of backing up your PostgreSQL database on Heroku.

PG Backups is a significant architectural improvement over Bundles and is designed to handle the large-scale, production databases that are being deployed to Heroku today. In addition to these backend improvements, PG Backups offers several new features:

  • Backups are captured using pg_dump’s -Fc compressed format. This is the most reliable, fastest way of capturing backups from PostgreSQL.
  • Data can be easily imported to your application – the pgbackups:restore command can restore from a URL containing a PostgreSQL export.
  • Backups captured with PG Backups can be made available as a time-limited URL for download and transfer.

The basic plan allows you to store two backups for free, and the plus plan allows you to store seven backups.

You can install PG backups on your application and capture your first backup immediately:

$ sudo gem install heroku
$ heroku addons:add pgbackups:basic
$ heroku pgbackups:capture

Announcing Heroku PostgreSQL Database Add-on

Today Heroku is releasing an update to our dedicated database service. Heroku PostgreSQL provides an improved upgrade path for our users as their applications grow by offering new features, new plans, and instant provisioning.

Product Improvements

  • Direct database connectivity through psql (the Postgres command-line tool) or libpq (the Postgres client library). Direct connectivity makes it easier to introspect the database directly and run ad-hoc queries. It also enables complex, multi-application architectures with shared data stores.
  • Instant provisioning and customer driven migrations. Previously, upgrading to our dedicated databases was a semi-manual procedure which required assistance from our support team and took several hours to schedule and complete. The process now takes only a few minutes and is completely user controlled.
  • PostgreSQL 8.4.4 support (Postgres 9 is coming soon…).
  • Stored procedures through the PL/pgSQL language.
  • Improved backup, restore, import and export through our new pgbackups add-on.

New Plans

In addition to these great new features, we’ve introduced several new plans:

  1. Ika: $800/month, 50 connections, 7.5 GB of RAM, 4 compute units
  2. Baku: $3200/month, 128 connections, 34 GB of RAM, 13 compute units
  3. Mecha: $6400/month, 256 connections, 68 GB of RAM, 26 compute units

We now provide a suggested number of connections for each database plan. These are the maximum number of dynos, workers, and other processes that we recommend connecting to your database simultaneously. The connection numbers are meant to serve as a guideline for architecting a performant application on the Heroku platform.

Legacy Dedicated Database Support

Customers of Heroku’s legacy dedicated database (anyone who provisioned a dedicated database before today) can take advantage of these new features by provisioning a new database and migrating their application data to it.

HUG Recap

Last night, we threw our first-ever Heroku Users Group meetup, and it was a hit!

Fifty Heroku users, add-on developers, entrepreneurs, and more gathered at our new office to get to know the Heroku team and swap stories with each other. We heard about some of the remarkable applications people are building on the platform, and we’re very excited to publicize those more — at future HUGs, in our newsletter, and here on the blog.

For this first meetup, though, we decided to open the curtains around Heroku’s inner workings a bit. Adam gave a great talk about five new features that should make life easier, particularly for people working on large-scale applications:

  • Logging enhancements
  • Release management
  • Postgres add-on
  • Custom error pages
  • Process inspection

While most of these are still in beta testing, you can use heroku ps right now to take a look at your processes. Rest assured that you’ll be hearing more about each of them shortly, though.

After Adam’s talk, we brought up several members of the team to sit on a panel and answer questions from the audience (and from our earlier call to #askheroku questions on Twitter) We heard excellent questions, and dug into some of the inner workings of our routing mesh, plans for the future, and more. See below for some of the questions and answers.

We wrapped up the night at Bloodhound, where our friends from Basho joined us to co-sponsor a drink-up, where we all got the chance to meet and speak with even more people doing great work.

All in all, we’re very happy with how the HUG turned out, and we’re looking forward to putting on more events in the future. Stay tuned to Twitter and the blog for more news.

Questions from #askheroku

@masonhale: @heroku When is PostgreSQL 9 support coming? #askheroku #pgsql

Soon! 9 is part of the Postgres add-on that Adam talked about, and is on track to be available within a month or so.

@im_a_muppet: Will you provide git push over http/https? Working behind corporate firewalls it is not possible to use Heroku. #askheroku

Git over http/https is something that we’ve investigated, but we don’t have a firm date for making it available yet.

@leinweber: @heroku when can i tell you to exclude groups in my gemfile, ie test gems #askheroku

You’ve been able to do this for a while now! Take a look at the docs for more details.

@zackchandler: I’m sure the Heroku rabbitmq routing mesh is very cool – wonder how it works exactly? #askheroku

This one’s a little more in-depth, so we’ll work on getting a blog post about it up in the near future.

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