クローラーの運用について

データをウェブから自動で集めてきて保存するような、いわゆるクローラーを常時実行するにはどうすればいいのかを考えてみる。

まず、一つの例は「マジで常に動かしたい」パターン。グーグルのクローラなどがこれに当たるだろう。

この場合、2つの問題がある。当然1つだけじゃなくて複数のマシンを使うだろうから、

1. いくつものマシンをどうやって「仕事がかぶらないようにしながら」、対象となるURLに対してクローリングして行って情報を取得するか
2. どうやってそれぞれのクローラーが死なないようにするか

1に関しては、やはり全体を管理して監視するクローラーマネジャーのようなものが必要になるんじゃないだろうか。
2についてはそのクローラーマネジャーが監視するようにすればシンプルだ。また、トラブルやバグが発生した場合にきちんと報告できるようにしておく必要がある。

次の例は「1日1回など、定期的に動かしたい」パターン。この場合、数時間で全ての仕事が終わることを想定している(前のケースはエンドレス)。

この場合も実は1つ目の例と同じだ。複数クローラーを立ち上げるのであれ、一つだけであれ、その実行がうまくいったかどうかを監視する必要があるし、単にプロセスが死んだだけなら立ち上げ直さないといけない。だから、実行のトリガーがcronで行われるところ以外は実は同じ。