スタック更新ポリシー
この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。
最終更新日 2024年03月22日(金)
Table of Contents
このドキュメントでは、Heroku が既存のスタックをいつどのように更新するかについてのポリシーと、新しいスタックを導入するスケジュールについて説明します。
既存のスタックの更新
Heroku では、現在利用可能なスタックのパッケージを月にほぼ 2 回更新します。スタックのベースイメージ内のパッケージに関して、上流で緊急のセキュリティ修正があった場合は、さらに頻繁な更新によって対応します。ベースイメージが更新されるたびに、変更されたパッケージのリストを含む Changelog エントリが公開されます。
スタックを更新するとき、Heroku は更新されるスタックが現在のスタックとバイナリ互換となるように努め、一般的にはスタックの使用期間全体で変更ができるだけ少なくなるようにします。これは、Heroku 上で実行するアプリの安定性と連続性を最大限に高めるためです。一度追加されると、パッケージはスタックの有効期間中は削除されません。
更新をスタックのベースイメージにロールアウトする前に、社内アプリを使用して広範囲にわたって更新をテストします。その後、更新をプラットフォームに徐々にロールアウトします。
Heroku のデフォルトの buildpack を利用したビルドシステムとスタックを使用している場合は、これらの変更を反映するためにアプリを再デプロイする必要はありません。アプリケーションの slug は、dyno が起動するたびに、スタックの最新のベースイメージの上に適用されます。実行中の dyno は自動的に再起動されるため、アプリを手動で再起動する必要はありません。
代わりにアプリが Heroku の container
スタックを使用する場合 (ほとんどのアプリは使用しません))、アプリの Docker image を再構築して、Dockerfile
で指定されたベースイメージの更新を取得する必要があります。
新しいスタックの追加
Heroku のスタックは、現在 Canonical からの Ubuntu Linux に基づいています。Heroku では、長期サポート (LTS) バージョンが上流でリリースされるごとに (偶数年の 4 月頃)、スタックの更新バージョンを導入するよう努めています。Heroku スタックのリリースは、パッケージが安定したことを確認し、Heroku が新しいスタックを構築してテストするための時間を確保するために、一般的に Ubuntu のリリースの数か月後に後追いでリリースされます。
古いスタックの廃止
古いスタックは、Canonical からサポートを受けなくなったときに廃止されます (Canonical が当該 LTS リリースを最初に導入してから通常 5 年です。各スタックのサポート終了日については、スタックのページを参照してください)。Heroku は古いスタックが廃止される前に、古いスタック上でアプリを使用しているユーザーに通知します。通知の形式は、Changelog へのエントリと、廃止予定のスタック上で実行しているアプリの所有者および共同作業者への直接メールとなります。
スタックが廃止されても、そのスタック上のビルドされたアプリは影響を受けず、その後も無期限に実行できます。しかし、廃止されたスタックがサポート終了になると、最初に新しいスタックにアップグレードしない限りデプロイできなくなります。
お使いのアプリケーションの安定性とセキュリティの更新を受け取るために、アプリを常に最新のスタックに更新しておくことをお勧めします。