ストックドッグ

KatoTakahiro。金融系の会社で働くSEが株やPython、その他諸々について書いています。サービスも運営してます→http://fmbrain.work

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を増やしたりと適宜変更しながら運用していきたいですね。