Heroku には、需要に応じて dyno を瞬時にスケールできる便利なツールが用意されています。アプリのデプロイ後にトラフィックが増加したり、利用パターンにばらつきが生じたり、新機能が追加されたり、ビジネスの規模が拡大したりするなどして dyno フォーメーションの調整が必要になった場合でも、Heroku ダッシュボードや Heroku CLI から簡単に対応できます。
Heroku ダッシュボード
Heroku ダッシュボードは Heroku のコアとなる機能を利用するための Web ユーザーインターフェースです。Heroku ダッシュボードでは、アプリ、Heroku アドオン、デプロイのプロセス、メトリクスなどを簡単に管理できます。また、Heroku ダッシュボードのスライダーを使えば、dyno の数を簡単に変更できます。dyno の数を増やしたり、dyno タイプを変更したりすると、その結果が即座に dyno フォーメーションに反映されます。
Heroku CLI
dyno フォーメーションの管理はコマンドラインインターフェース(CLI)や Heroku プラットフォーム API からも行えます。Heroku CLI を使用すると、さまざまなオペレーティングシステムのシェルからアプリを作成して管理できます。簡単なコマンドを入力するだけで web dyno や worker dyno の数を増やすことができるほか、複数の dyno のタイプを一度に変更することもできます。たとえば、次のコマンドを使用すると、web dyno の数を 5 つにスケールすることができます。
$ heroku ps:scale web=5
Scaling dynos... done, now running web at 5:Standard-1X
スケールアウト:dyno の追加
特定のプロセスタイプの dyno の数を増やすと、アプリをスケールアウトできます。たとえば、web dyno の数を増やすと、着信 HTTP リクエストをルーティングできる Web サーバーインスタンスが増えるため、トラフィックが増えた場合のパフォーマンスが向上します。worker dyno の数を増やすと、アプリで並行処理できるジョブの数が増加し、より多くのジョブを処理できるようになります。ただし、バックエンドサービスでボトルネックが発生していたり、リクエストやジョブに時間がかかっていたりするような状況では、スケールアウトが効果を発揮しないこともあります。スケールアウトは Standard dyno、Performance dyno、および Private dyno のみ対応しています。
スケールアップ:容量の大きい dyno へのアップグレード
容量が大きいタイプの dyno へアップグレードすると、アプリで利用できるメモリと CPU リソースが増加します。dyno はタイプを問わず相互に隔離されていますが、Eco dyno、Standard dyno はマルチテナント型の dyno であるため、これらの dyno で実行されるアプリでは基本となるコンピューティングリソースが共有されます。そのため、パフォーマンスにある程度のばらつきが生じます。Performance dyno と Heroku Private Spaces で稼働する dyno は基本となるコンピューティングリソースを共有しないため、パフォーマンスのばらつきが少なくなります。
自動スケール
Heroku では、応答時間の 95 パーセンタイルが一定のしきい値を超えたときに自動的に web dyno の数を増やすことができます。自動スケール機能はアプリの既存のスループットにもとづいて自動的に作動するため、トラフィックの急増を事前に予測する必要がなくなります。Performance dyno と Private dyno では追加料金なしで自動スケール機能を利用できます。