herokuのworker dynoとweb dynoの違いって何?
目次
dyno?
herokuでは、プロセスの処理はdynoによって行われます。
プロセスの処理とはHTTPのリクエストやレスポンス、バックグラウンド処理などです。
dynoは3種類あり、処理をするプロセスの種類によって使い分けられます。
- web dyno
- worker dyno
- one-off dyno
herokuを勉強していて、dynoはheroku内の独特の単位で一番はじめにつまづいたのでまとめておきます。
web dyno
HTTPのリクエスト・レスポンスを処理します。
ユーザーからのリクエストはweb dynoが処理するので、webアプリが行う処理の大半はweb dynoによって行われています。
worker dyno
バックグラウンド処理を行います。(ほぼweb dyno以外の処理)
バックグラウンド処理とは、例えばAPIsからのデータ取得やRSSフィードの読み込み、画像のリサイズ、S3へのデータ送信などが当てはまります。
one-off dyno
一時的な処理を行うためのdyno。
heroku run
などのherokuコマンドを実行したときに使用されるdynoです。
ログ
これらdynoの動作状況はログを見ることによって確認できます。
#ログの確認 heroku logs -t #見たい行数を指定する(最大1500行まで) heroku logs -n 200
Control+Cでログの出力を中止できます。
ログは直近の1500行のみしか表示されず、ログの保存を行う場合はアドオンを追加します。
使用中のdynoを確認する
heroku ps
このコマンドで現在、使用しているdynoを確認することができます。
まとめ
worker dynoとweb dynoの違いは、まとめると処理するプロセスの違い、ということになります。
Webアプリによって必要な処理は違ってくるので、アクセス数がひたすら多いWebアプリはweb dynoを増やしたり(=スケーリング)、バックグラウンドでの処理が多いならworker dynoを増やしたりと適宜変更しながら運用していきたいですね。