Heroku なら、アプリを実行している dyno(コンテナ)の動作を気にする必要がありません。dyno はプラットフォームによって自動的に管理されているからです。各 dyno は他の dyno から隔離された仮想ランタイム環境とファイルシステムから構成されています。dyno は永続的なものではなく、アプリとシステム全体の健全性を維持するため 1 日に 1 回以上再起動されます(再起動の時点で残っているリクエストは、問題なく処理されます)。複数の dyno を実行するアプリの場合、各 dyno は異なる間隔で再起動されます。

dyno の再起動は Dyno Manager によって自動的かつ透過的に行われ、ログに記録されます。スケジュールにもとづく再起動だけでなく、新しいコードがリリースされたり、アドオンが変更されたり、設定変数が変更されたりした場合も dyno は自動的に再起動されます。また、手動で dyno を再起動することもできます。

dyno の再起動の詳細はこちら >>

dyno ランタイム

Heroku には各 dyno のプロビジョニング、実行、モニタリング、ライフサイクル管理を担う 2 つの dyno ランタイムがあります。dyno がクラッシュした場合、これらのランタイムでは復旧処理も行われます。これら 2 つのランタイムの主な違いはネットワークトポロジと他のテナントからの隔離レベルです。

  • Common Runtime :デフォルトのランタイムです。地域ごとに 1 つのマルチテナントネットワークを使用して dyno を管理します。各 dyno は強力なファイアウォールルールで保護され、相互に隔離されています。現在、このランタイムを利用できる地域は EU と US の 2 箇所です。
  • Private Spaces ランタイムHeroku Private Spaces で dyno を管理するように設計されたランタイムです。Private Spaces ランタイムでは、お客様のテナントごとに 1 つまたは複数の「Private Space」が割り当てられます。それぞれの Private Space には、他の Space のアプリとは別のネットワーク、ルーティング層、コントロールプレーンが用意されます。このタイプのランタイムを使用できる地域は現在、ダブリン、フランクフルト、オレゴン、東京、シドニー、バージニアの 6 箇所です。

Dyno Manager

Dyno Manager は Heroku で稼働するあらゆるアプリの dyno を管理します。Dyno Manager は dyno の稼働を維持し、自動的に dyno を再起動するだけでなく、実行中のアプリで問題(メモリ不足による例外など)が検出されると、それに反応して dyno を再起動します。このため、開発者は、アプリの運用やメンテナンスに関わる多くの作業から解放されます。リージョンごとに 1 つずつ存在し、Private Spaces には専用のものが 1 つずつ割り当てられるという点は、Dyno ランタイムと同じです。

  • Heroku を使えば運用が非常にシンプルになるので、Heroku でできることは全部 Heroku で済ませるようにしていきたいと考えています。

    LendUp Jake Rosenberg LendUp 社 CTO お客様事例を読む >>
  • 当社のお客様は Heroku を採用することにより、巨大な運用環境を自社で管理することも、製品を運用するための人員を雇うべきかどうかを悩むこともなく、プロジェクトを進めています。

    Carbon Five Erik Ingenito Carbon Five 社パートナー お客様事例を読む >>