@kyanny's blog

My thoughts, my life. Views/opinions are my own.

resque の哲学

resque の README と Introducing Resque - GitHub を読んだ。後者は GibHub における非同期処理の歴史を紐解いたうえで「なぜ resque なのか」に触れられていて、読み応えがあった。

彼らが必要とした非同期処理システムの要件はいろいろ挙げられているが、その背景に「管理・運用を楽にしたい」という思惑を感じた。キューの「タグづけ」や優先度はシステムの全容を把握しやすくするためだろうし、処理の統計を見るために専用のウェブアプリケーションを内包するほどだし、「刺さった」ワーカーを kill -9 できたり、失敗するジョブを繰り返さないことや失敗したジョブを破棄しないことは不具合が発生したときリカバリ・調査する手間を減らすための実際的な要求からきたものだろう。

上記のような要件定義をした上で、それを満たせる既存のミドルウェアとして Redis を採用した、というくだりは非常に説得力があり、「単に流行りの NoSQL を採用したかっただけじゃないの?」とばかり思い込んでいた自分の無知が恥ずかしくなった (いや、実際には、単に使ってみたかった部分も多少はあるのだろうけど)

最も印象深かったのは、このフレーズだった。

I highly recommend DelayedJob to anyone whose site is not 50% background work.

But GitHub is 50% background work.

GitHub は自分たちのサイトに何が必要なのかを見極め、それを作った。ちゃんと見極めること、技術を使い、技術に使われないこと、それが技術的な成功をおさめる秘訣なのかな、と思った。