SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler offline
background jobで

気をつけないといかんところ
@threetreeslight
Repro Inc.
shinjukurb #37
May 25, 2016
※注意※
こういうときどうしました?
話です。sidekiq寄りです。
@treetreeslight
Repro
What’s Repro?
マーケティングツール
カジュアルな改善アクション
献立
• 優先順位の制御
• 並列実行数・リソースの制御
• 実行順序の制御
• 信頼性の担保
優先順位の制御
background jobにまわしてユーザー体
験改善しまくりヒャッハー!
重要じゃないjobが積まれてす
ぎて消化しきれない、、、
さらに
• SidekiqなんでQueueで分けるが、、、
• でも共通処理として定義されたjob、呼び出
し元によって優先順位かわるんだけどどうす
る?
そんなQueueのPrioritize
どうします?
例えば
• 突っ込むQueueを動的に変える
• sidekiq起動条件変えてプロセスレベルで割
る
• こういうのを使う
• https://github.com/socialpandas/
sidekiq-priority
並列実行数・リソースの制御
jobで並列化しまくれば無限に
スケール!!
connection数, deadlock,
OOM…
そんなときどうやって
並列実行数を制御します?
例えば
• サービス全体で並列実行数を制御するのであれば
• redisでsemaphoreを管理したり
• こういうやつも(時間があったら読む)
• https://github.com/dv/redis-semaphore
• https://github.com/brainopia/sidekiq-
limit_fetch
• プロセス毎の同時実行数は管理したいのであれば
• プロセス内にsemaphore作ってQueueのpopをblock
して積み直しになるのかな?
実行順序の制御
処理を高速化するためにjobを分割
して並列実行するべさ!
job間の依存関係どうしよう
そんなときどうやって
実行順序を制御します?
例えば
• 複数のjob完了を待って発火するもの
• 特定のjob郡が完了していることを待つwaiting jobづく
り
• 逐次にjobが発火するstyle
• continuation passing styleで次のjob渡す
依存関係の定義が自明で集約されており、全体感がつかみやすい
ものが良い。
例えば
• background jobにworkflowでかいけつする
• https://github.com/chaps-io/gush
• https://github.com/thebadmonkeydev/
sidekiq-workflow
• そもそも別の仕組み使う
• rundeck
• http://rundeck.org/
• rukawa
• https://github.com/joker1007/rukawa
信頼性の担保
background job
だいぶこなれてきた!!
process downや
中断に強くしなければ
そんなときどうやって
job実行の信頼性
を担保しますか?
例えば
• sidekiq使ってたらsidekiq proにしちゃう
• やっているのは別のqueueにコピーしてるだけ(多分)
• Proのお話はsumyappさんのslide参照が良さそう
• http://www.slideshare.net/SumiKoichiro/
sidekiq-pro1-rb-29th-shinjukurb
• 処理の冪等性担保する
• けどPush Notificationとかできないので、jobの中で
途中実行できるようにする
• 依存関係のあるJobはどう途中再開させるか?
• daemon作って監視させるしか無いか?
そんなつらみを乗り越えたい
そんなアタナに
WE ARE 

HIRING NOW!!!
https://www.wantedly.com/companies/repro/projects

Mais conteúdo relacionado

Semelhante a background jobで
気をつけないといかんところ

アジャイルソフトウェア開発の道具箱
アジャイルソフトウェア開発の道具箱アジャイルソフトウェア開発の道具箱
アジャイルソフトウェア開発の道具箱Koichi ITO
 
勉強会:設定管理について
勉強会:設定管理について勉強会:設定管理について
勉強会:設定管理についてWataru Sato
 
明治大学講演資料「機械学習と自動ハイパーパラメタ最適化」 佐野正太郎
明治大学講演資料「機械学習と自動ハイパーパラメタ最適化」  佐野正太郎明治大学講演資料「機械学習と自動ハイパーパラメタ最適化」  佐野正太郎
明治大学講演資料「機械学習と自動ハイパーパラメタ最適化」 佐野正太郎Preferred Networks
 
QA teamを組成した話
QA teamを組成した話QA teamを組成した話
QA teamを組成した話Akira Miki
 
第2回 モデリング勉強会
第2回 モデリング勉強会第2回 モデリング勉強会
第2回 モデリング勉強会hakoika-itwg
 
AgileJapan2012島根サテライト ワークショップ
AgileJapan2012島根サテライト ワークショップAgileJapan2012島根サテライト ワークショップ
AgileJapan2012島根サテライト ワークショップTakenori Takaki
 
サービス改善はログデータ分析から
サービス改善はログデータ分析からサービス改善はログデータ分析から
サービス改善はログデータ分析からKenta Suzuki
 
非開発者のためのアジャイル開発入門
非開発者のためのアジャイル開発入門非開発者のためのアジャイル開発入門
非開発者のためのアジャイル開発入門Kiro Harada
 
アジャイルとスクラムとは 原則、価値、プラクティス
アジャイルとスクラムとは 原則、価値、プラクティスアジャイルとスクラムとは 原則、価値、プラクティス
アジャイルとスクラムとは 原則、価値、プラクティスYasui Tsutomu
 
Azure Machine Leaning Workbench の使い方
Azure Machine Leaning Workbench の使い方Azure Machine Leaning Workbench の使い方
Azure Machine Leaning Workbench の使い方Yoshitaka Seo
 
Chainerで学ぶdeep learning
Chainerで学ぶdeep learningChainerで学ぶdeep learning
Chainerで学ぶdeep learningRetrieva inc.
 
20160215 04 java ee7徹底入門 jbatch
20160215 04 java ee7徹底入門 jbatch20160215 04 java ee7徹底入門 jbatch
20160215 04 java ee7徹底入門 jbatchJun Inose
 
なぜSharepointの導入を見送ったのか
なぜSharepointの導入を見送ったのかなぜSharepointの導入を見送ったのか
なぜSharepointの導入を見送ったのかShu Yamada
 
Chainerと実験管理と私
Chainerと実験管理と私Chainerと実験管理と私
Chainerと実験管理と私Toshinori Hanya
 
Google Cloud Platformでソーシャルゲームを1本出してみた!
Google Cloud Platformでソーシャルゲームを1本出してみた!Google Cloud Platformでソーシャルゲームを1本出してみた!
Google Cloud Platformでソーシャルゲームを1本出してみた!Hasegawa Yusuke
 
2015-03-27 ザ・運用 ~ 運用とは何か、運用とはどのようであるべきか
2015-03-27 ザ・運用 ~ 運用とは何か、運用とはどのようであるべきか2015-03-27 ザ・運用 ~ 運用とは何か、運用とはどのようであるべきか
2015-03-27 ザ・運用 ~ 運用とは何か、運用とはどのようであるべきかOperation Lab, LLC.
 
サイボウズQAの働き方
サイボウズQAの働き方サイボウズQAの働き方
サイボウズQAの働き方Cy1DayCy1Day
 
運用管理を楽にしたいという話
運用管理を楽にしたいという話運用管理を楽にしたいという話
運用管理を楽にしたいという話Hisashi HATAKEYAMA
 
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜Katsuhiro Miura
 
パフォーマンステストいつやる??
パフォーマンステストいつやる??パフォーマンステストいつやる??
パフォーマンステストいつやる??Shuichi Takaku
 

Semelhante a background jobで
気をつけないといかんところ (20)

アジャイルソフトウェア開発の道具箱
アジャイルソフトウェア開発の道具箱アジャイルソフトウェア開発の道具箱
アジャイルソフトウェア開発の道具箱
 
勉強会:設定管理について
勉強会:設定管理について勉強会:設定管理について
勉強会:設定管理について
 
明治大学講演資料「機械学習と自動ハイパーパラメタ最適化」 佐野正太郎
明治大学講演資料「機械学習と自動ハイパーパラメタ最適化」  佐野正太郎明治大学講演資料「機械学習と自動ハイパーパラメタ最適化」  佐野正太郎
明治大学講演資料「機械学習と自動ハイパーパラメタ最適化」 佐野正太郎
 
QA teamを組成した話
QA teamを組成した話QA teamを組成した話
QA teamを組成した話
 
第2回 モデリング勉強会
第2回 モデリング勉強会第2回 モデリング勉強会
第2回 モデリング勉強会
 
AgileJapan2012島根サテライト ワークショップ
AgileJapan2012島根サテライト ワークショップAgileJapan2012島根サテライト ワークショップ
AgileJapan2012島根サテライト ワークショップ
 
サービス改善はログデータ分析から
サービス改善はログデータ分析からサービス改善はログデータ分析から
サービス改善はログデータ分析から
 
非開発者のためのアジャイル開発入門
非開発者のためのアジャイル開発入門非開発者のためのアジャイル開発入門
非開発者のためのアジャイル開発入門
 
アジャイルとスクラムとは 原則、価値、プラクティス
アジャイルとスクラムとは 原則、価値、プラクティスアジャイルとスクラムとは 原則、価値、プラクティス
アジャイルとスクラムとは 原則、価値、プラクティス
 
Azure Machine Leaning Workbench の使い方
Azure Machine Leaning Workbench の使い方Azure Machine Leaning Workbench の使い方
Azure Machine Leaning Workbench の使い方
 
Chainerで学ぶdeep learning
Chainerで学ぶdeep learningChainerで学ぶdeep learning
Chainerで学ぶdeep learning
 
20160215 04 java ee7徹底入門 jbatch
20160215 04 java ee7徹底入門 jbatch20160215 04 java ee7徹底入門 jbatch
20160215 04 java ee7徹底入門 jbatch
 
なぜSharepointの導入を見送ったのか
なぜSharepointの導入を見送ったのかなぜSharepointの導入を見送ったのか
なぜSharepointの導入を見送ったのか
 
Chainerと実験管理と私
Chainerと実験管理と私Chainerと実験管理と私
Chainerと実験管理と私
 
Google Cloud Platformでソーシャルゲームを1本出してみた!
Google Cloud Platformでソーシャルゲームを1本出してみた!Google Cloud Platformでソーシャルゲームを1本出してみた!
Google Cloud Platformでソーシャルゲームを1本出してみた!
 
2015-03-27 ザ・運用 ~ 運用とは何か、運用とはどのようであるべきか
2015-03-27 ザ・運用 ~ 運用とは何か、運用とはどのようであるべきか2015-03-27 ザ・運用 ~ 運用とは何か、運用とはどのようであるべきか
2015-03-27 ザ・運用 ~ 運用とは何か、運用とはどのようであるべきか
 
サイボウズQAの働き方
サイボウズQAの働き方サイボウズQAの働き方
サイボウズQAの働き方
 
運用管理を楽にしたいという話
運用管理を楽にしたいという話運用管理を楽にしたいという話
運用管理を楽にしたいという話
 
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
 
パフォーマンステストいつやる??
パフォーマンステストいつやる??パフォーマンステストいつやる??
パフォーマンステストいつやる??
 

Mais de Akira Miki

performance hack 101
performance hack 101performance hack 101
performance hack 101Akira Miki
 
The bottleneck is you
The bottleneck is youThe bottleneck is you
The bottleneck is youAkira Miki
 
今だから言えるやらないほうが良かったこと
今だから言えるやらないほうが良かったこと今だから言えるやらないほうが良かったこと
今だから言えるやらないほうが良かったことAkira Miki
 
AWS Auroraよもやま話
AWS Auroraよもやま話AWS Auroraよもやま話
AWS Auroraよもやま話Akira Miki
 
1秒でも早くAutoScale
1秒でも早くAutoScale1秒でも早くAutoScale
1秒でも早くAutoScaleAkira Miki
 
決済って悩むことが多い
決済って悩むことが多い決済って悩むことが多い
決済って悩むことが多いAkira Miki
 
rails + serverengineで
お手軽daemon
rails + serverengineで
お手軽daemonrails + serverengineで
お手軽daemon
rails + serverengineで
お手軽daemonAkira Miki
 
what is_the_best_way_of_method_swizzling
what is_the_best_way_of_method_swizzlingwhat is_the_best_way_of_method_swizzling
what is_the_best_way_of_method_swizzlingAkira Miki
 
Microserviceなんて最初からやるもんじゃ無かった
Microserviceなんて最初からやるもんじゃ無かったMicroserviceなんて最初からやるもんじゃ無かった
Microserviceなんて最初からやるもんじゃ無かったAkira Miki
 

Mais de Akira Miki (9)

performance hack 101
performance hack 101performance hack 101
performance hack 101
 
The bottleneck is you
The bottleneck is youThe bottleneck is you
The bottleneck is you
 
今だから言えるやらないほうが良かったこと
今だから言えるやらないほうが良かったこと今だから言えるやらないほうが良かったこと
今だから言えるやらないほうが良かったこと
 
AWS Auroraよもやま話
AWS Auroraよもやま話AWS Auroraよもやま話
AWS Auroraよもやま話
 
1秒でも早くAutoScale
1秒でも早くAutoScale1秒でも早くAutoScale
1秒でも早くAutoScale
 
決済って悩むことが多い
決済って悩むことが多い決済って悩むことが多い
決済って悩むことが多い
 
rails + serverengineで
お手軽daemon
rails + serverengineで
お手軽daemonrails + serverengineで
お手軽daemon
rails + serverengineで
お手軽daemon
 
what is_the_best_way_of_method_swizzling
what is_the_best_way_of_method_swizzlingwhat is_the_best_way_of_method_swizzling
what is_the_best_way_of_method_swizzling
 
Microserviceなんて最初からやるもんじゃ無かった
Microserviceなんて最初からやるもんじゃ無かったMicroserviceなんて最初からやるもんじゃ無かった
Microserviceなんて最初からやるもんじゃ無かった
 

background jobで
気をつけないといかんところ