Dyno formation
最終更新日 2025年03月24日(月)
Table of Contents
「Dyno formation」という用語は、特定の時間におけるアプリの dyno のレイアウトを指しています。フォーメーションの dyno は、アプリの通常の処理 (Web リクエストの処理やバックグラウンドジョブの処理など) を実行するために使用されます。
Heroku Dashboard にあるアプリの Resources
(リソース) タブ、heroku ps
CLI コマンド、またはフォーメーションの一覧 API エンドポイントで、いつでも現在のフォーメーションを確認できます。
Procfile と Dyno formation
シンプルなアプリのデフォルトのフォーメーションは 1 つの dyno で実行される web
プロセスタイプです。要求の厳しいアプリケーションは、web
、worker
、clock
および Procfile で宣言されたその他のプロセスタイプで構成されます。
Procfile はプロセスごとに実行する dyno の数を決定するものではありませんが、web
以外のプロセスタイプを実行する場合は必須のファイルです。Heroku では 1 つの web
dyno が自動的に起動されますが、他のプロセスタイプはデフォルトでは起動されません。プロセスタイプごとに個別に dyno をスケーリングできます。
Web または Worker dyno が起動すると、各プロセスタイプの実行中の dyno の数を反映してアプリの Dyno formation が変更されます。dyno ライフサイクルに従い、Dyno Manager は変更されるまでその Dyno formation を維持し続けます。
One-off dyno は Procfile で宣言されません。短時間のコマンドを実行してから終了することのみが想定されています。フォーメーションの一部でも、フォーメーションに何らかの影響を与えるものでもありません。
Dyno formation の変更
dyno のサイズまたは数を変更すると、dyno を水平方向または垂直方向にスケーリングできます。詳細は、「Dyno formation のスケーリング」を参照してください。
Dyno formation へのすべての変更がログに記録されます。
$ heroku logs | grep Scale
2024-05-30T22:19:43+00:00 heroku[api]: Scale to web=2, worker=1 by abc@example.com
ログ記録されたメッセージには、スケーリングした dyno のみではなく、すべての Dyno formation もあります。
フォーメーションへの冗長性の追加
重要なアプリの場合は、少なくとも 2 つの Web dyno をフォーメーションで実行することをお勧めします。複数の dyno が実行中のアプリケーションは、障害に対して冗長性が高くなります。一部の dyno が失敗しても、アプリケーションはリクエストの処理を続行でき、欠落している dyno は置き換えられます。通常、失敗した dyno はただちに再起動されますが、重大な障害の場合は時間がかかることがあります。複数の dyno が異なる物理インフラストラクチャ (個別の AWS アベイラビリティ―ゾーンなど) で実行される可能性も高く、さらに冗長性が増します。重大な web
以外のプロセスタイプがある場合は、それらのプロセスにも冗長性を追加することをお勧めします。