sidekiq proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th...

20
[Confidential] © 2013 Actcat, Inc. 1 Sidekiq Proを1年ほど使ってみて 良かったところ、困ったところ

Upload: koichiro-sumi

Post on 16-Apr-2017

2.289 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurb

[Confidential] © 2013 Actcat, Inc. 1

Sidekiq Proを1年ほど使ってみて 良かったところ、困ったところ

Page 2: Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurb

[Confidential] © 2013 Actcat, Inc.

Sidekiqとは

n 1プロセスで大量のスレッドを作成、ジョブを処理できるジョブキューシステム  

n Sidekiq  -­‐  A  full-­‐featured  background  processing  framework  for  Ruby.  It  aims  to  be  simple  to  integrate  with  any  modern  Rails  application  and  much  higher  performance  than  other  existing  solutions.  https://github.com/markets/awesome-­‐ruby  

n http://sidekiq.org/  

2

Page 3: Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurb

[Confidential] © 2013 Actcat, Inc.

Sidekiq vs Delayed_job vs Resuqe

3

Page 4: Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurb

[Confidential] © 2013 Actcat, Inc.

うちの SideCI では Sidekiq を選択

n GitHub  Comments  APIを叩きまくるジョブを何個も同時に爆速で回したかった  

n 1プロセス当たり処理できるジョブ数・速度が早いらしいSidekiq使った  

n 処理数は少ないジョブしかないレポジトリもSidekiqに統一した  

4

Page 5: Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurb

[Confidential] © 2013 Actcat, Inc.

良かったところ

n 早い!  l タスクを小さく分割してあるタスク(ジョブ)などではスレッド数の多さによる速さが際立つ  

n 割りとデファクトで情報も多い  l ActiveJobのrailsguideなどでもbackendの設定サンプルに一番に書いてあったり  

n プラグインも充実  

5

Page 6: Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurb

[Confidential] © 2013 Actcat, Inc.

充実のプラグイン

n Sinatraで書かれたWebUI  n WebUIのDevise連携  n Nagios連携  n Queue  Latency用のエンドポイント  n Etc…

6

Page 7: Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurb

[Confidential] © 2013 Actcat, Inc. 7

困ったところ

Page 8: Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurb

[Confidential] © 2013 Actcat, Inc.

Sidekiqの困ったところ

n 1プロセスで最大100スレッドぐらいまで処理できるすごい子です。  l メモリやデータベース側などが100スレッドに耐えられるだけ強力であれば、まじ爆速で処理できます  

n でも、100ジョブ処理しているプロセスがDeadしたら…  l 100ジョブが永遠に失われます

8

Page 9: Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurb

[Confidential] © 2013 Actcat, Inc.

永遠に失われる  100ジョブ  

9

Page 10: Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurb

[Confidential] © 2013 Actcat, Inc.

sidekiq  workerはupstartとかが  立ち上げてくれるけれど、 ジョブは返ってこない  

10

Page 11: Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurb

[Confidential] © 2013 Actcat, Inc.

((ヾ(≧皿≦;)ノ_))きぃぃぃぃっ!  ジョブ返せよう!  

11

Page 12: Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurb

[Confidential] © 2013 Actcat, Inc.

+怖い話: あなたのジョブも実は 亡くなっているかも…

n 失われたジョブが失われたという情報は誰も持っていない(あなたが独自に管理していないかぎり)  

n Bugsnag,  Airbrake,  Sentryとかの例外通知系サービスも例外を通知してこない(Processがdeadした場合、多くの場合、例外を通知するまえにworkerがdeadした場合)  

n Sidekiqはupstartに自動再起動させてたのでサービス停止とかにはならず、気づきづらい  

12

Page 13: Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurb

[Confidential] © 2013 Actcat, Inc. 13

SIDEKIQ PRO : RELIABILITY

Page 14: Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurb

[Confidential] © 2013 Actcat, Inc.

RELIABILITY

n RedisのRPOPLPUSHを使っていて、キュー取り出し時にRedisにバックアップを作ってくれるので、キューを取り出し、処理している間に、プロセスが死亡したり、Redisが死亡しても、そこからキューを復元して処理してくれる  

14

Page 15: Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurb

[Confidential] © 2013 Actcat, Inc. 15

Page 16: Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurb

[Confidential] © 2013 Actcat, Inc.

困ったところ…

n Sidekiq  Proを買うと困ったところが低減  

n \(^o^)/ Sidekiq  Pro\(^o^)/

16

Page 17: Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurb

[Confidential] © 2013 Actcat, Inc. 17

おまけ / 他のPRO機能の紹介

Page 18: Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurb

[Confidential] © 2013 Actcat, Inc.

BATCHES ジョブをバッチにまとめ、バッチの管理

18

Page 19: Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurb

[Confidential] © 2013 Actcat, Inc.

SUPPORT 作者によるメールサポートが着く

19

n   知っていれば教えてくれる  

n 知らなければ知らないって教えてくれる  

Page 20: Sidekiq Proを1年ほど使ってみて良かったところ、困ったところ | 新宿.rb 29th #shinjukurb

[Confidential] © 2013 Actcat, Inc.

Sidekiqに関するまとめ

n 処理早い。デファクトで機能充実。ActiveJob対応  

n Redisとの接続が死んだり、Sidekiq  Workerが死んだりするとジョブが失われる  

n ジョブが失われるのが怖い人は年額$950払うと失われなくて済む(約11万4000円)

20