個人的メモ:Rails AntiPatterns(17)
Solution: Move Processing into Background Jobs
処理時間がwebでの応答に不適切なくらい掛かる場合はcronやキューイングといった。バックグラウンドJobの仕組みを検討した方がいい
cronの場合スクリプトを別に作ってそれを動かす。
例えば、テーブルのカウントをするのに毎回3分かかるような処理があるなら、事情が許すならcronで30分置きにカウントした結果を別のテーブルに格納する方がパフォーマンスの向上に繋がる。
cronは簡単だが、対象をcronスクリプト側で特定しなければならない。可能性であればキューイングを検討する方がいい
キューイングは画面からcsvをダウンロードする機能のような、バックグラウンドで纏まった処理をしなければならない物に向いている。
キューイングの機能としてはdelayed_jobとResqueが有名。
- Redisを使っているのでなければdelayed_jobを使った方がいい。
- ★Rails 4.2からはActive Jobがあるので、普通はそっちを使う。
- Redisを使っているのでなければdelayed_jobを使った方がいい。
キューイングやcronはは便利な機能だが、使い過ぎるとシステムが複雑になる。節度を持って使う事
- ★ 関係ないが「exercise restraint」で「抑止力を働かす」というのが面白い
Chapter9 Databasesの手間まで読了