キュー(queue)は何のために使いますか。
重い処理をリクエストの中で実行せず、ジョブとして積んで別プロセスに処理させるためです。ユーザーは待たされなくなる代わりに、完了がその場で分からなくなる点をセットで設計します。
面接官が見ているのは非同期処理の目的を理解しているか。
よくある答えと、面談でどう見られるか
- 時間のかかる処理をリクエストから切り離し、あとで別プロセスに実行させるため
その通りです。メール送信や外部API呼び出しが典型です。 - 大量のリクエストを順番待ちさせてサーバー負荷を下げるため
それはレート制限などの話です。 - DB のトランザクションを順番に処理するため
トランザクションの制御とは別の仕組みです。 - ログを順番に書き出すため
ログ出力とは関係ありません。
模範解答
重い処理をリクエストの中で実行せず、ジョブとして積んでおいて別プロセス(ワーカー)に後から処理させるための仕組みです。メール送信、外部API呼び出し、レポート生成などが典型です。
ユーザーは待たされなくなりますが、代わりに「終わったか」がその場では分かりません。処理中の表示や完了通知をセットで設計する必要があります。ワーカーは supervisor などで queue:work を常駐させます。