はじめに
仮。構想まとまってから書いてみる。
現実世界の例を使って説明すると、理解しやすくなるかもしれませんね。レストランの注文システムを例に挙げてみましょう:
レストランの注文システム:
Redis = キッチンの注文票ボード Sidekiq = キッチンスタッフ(シェフやコック) ジョブ = 料理の注文
プロセスの流れ: a. 注文(ジョブ)が入る:
お客さんが注文を出す(アプリケーションがジョブを作成)
- 注文票がボードに貼られる:
ウェイターが注文票をキッチンのボードに貼る(ジョブがRedisに保存される)
- シェフが注文を処理:
シェフがボードから注文票を取り、料理を作り始める(Sidekiqワーカーがジョブを取得して処理)
- 複数の注文を同時に調理:
複数のコックが異なる注文を同時に調理(Sidekiqの並列処理)
- 優先順位:
VIP客の注文を先に処理(優先度の高いキュー)
- 失敗した場合:
料理が失敗したら、もう一度作り直す(ジョブの再試行)
特徴:
ボード(Redis)は常に最新の注文状況を表示 シェフ(Sidekiq)は効率的に注文をこなす 複数の種類の注文(異なるキュー)を管理できる
この例では、注文票ボード(Redis)が全ての情報を保持し、キッチンスタッフ(Sidekiq)がそれを見ながら効率的に仕事を進めています。注文(ジョブ)は常にボード上にあり、スタッフがそこから取り出して処理する形になっています。