Solid Queue
抱えていた課題
RedisとResqueを使ってきたが、要件を満たすにはpluginを含めて7つもgemをインストールする必要がありシンプルとは言い難い状況 速度のためにRedisを使用していたのでは?
システムが適切に設計されていればDBでも十分な性能を出せる
適切な設計とは
Solid Queue のワーカーは他ワーカーをロックせずにジョブをフェッチしてロックできる 処理中のジョブ、今後スケジュールされるのを待っているジョブ、失敗して手動介入が必要なジョブ、または同時実行制限のためにブロックされたジョブが、実行準備ができているジョブから分離する 現在、毎日約 560 万件のジョブが実行されており、平均クエリ時間は 110 μs、クエリあたり 0.02 行の検査で、1 秒あたり約 1,300 件のポーリング クエリを実行しています。
2024-09 v1.0
HEYではSolid Queue専用のDBを立てている 事例