IT-Q

キュー(queue)は何のために使いますか。

重い処理をリクエストの中で実行せず、ジョブとして積んで別プロセスに処理させるためです。ユーザーは待たされなくなる代わりに、完了がその場で分からなくなる点をセットで設計します。

面接官が見ているのは非同期処理の目的を理解しているか。

よくある答えと、面談でどう見られるか

  • 時間のかかる処理をリクエストから切り離し、あとで別プロセスに実行させるため
    その通りです。メール送信や外部API呼び出しが典型です。
  • 大量のリクエストを順番待ちさせてサーバー負荷を下げるため
    それはレート制限などの話です。
  • DB のトランザクションを順番に処理するため
    トランザクションの制御とは別の仕組みです。
  • ログを順番に書き出すため
    ログ出力とは関係ありません。

模範解答

重い処理をリクエストの中で実行せず、ジョブとして積んでおいて別プロセス(ワーカー)に後から処理させるための仕組みです。メール送信、外部API呼び出し、レポート生成などが典型です。

ユーザーは待たされなくなりますが、代わりに「終わったか」がその場では分かりません。処理中の表示や完了通知をセットで設計する必要があります。ワーカーは supervisor などで queue:work を常駐させます。