Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
background jobで 気をつけないといかんところ
Search
threetreeslight
June 22, 2016
Technology
0
62
background jobで 気をつけないといかんところ
@threetreeslight
Repro Inc.
shinjukurb #37
May 25, 2016
threetreeslight
June 22, 2016
Tweet
Share
More Decks by threetreeslight
See All by threetreeslight
実録 採用一投入魂
threetreeslight
0
16
Bottleneck is You
threetreeslight
0
110
Japan Office Society オフィスはスタートアップの成長を助長するのか?阻害するのか?
threetreeslight
0
110
スタートアップは見極められたくない
threetreeslight
0
42
VPoEの責務とは
threetreeslight
0
71
CiecleCIでもくもく会を支える技術
threetreeslight
0
52
Ego vs higher self
threetreeslight
0
40
Performance Hack 101
threetreeslight
0
90
複数のスタートアップを 通して得た失敗と学び
threetreeslight
0
72
Other Decks in Technology
See All in Technology
Should Our Project Join the CNCF? (Japanese Recap)
whywaita
PRO
0
290
WordPressから ヘッドレスCMSへ! Storyblokへの移行プロセス
nyata
0
340
KubeCon + CloudNativeCon Japan 2025 Recap Opening & Choose Your Own Adventureシリーズまとめ
mmmatsuda
0
230
LangSmith×Webhook連携で実現するプロンプトドリブンCI/CD
sergicalsix
1
150
プロダクトエンジニアリング組織への歩み、その現在地 / Our journey to becoming a product engineering organization
hiro_torii
0
140
Tokyo_reInforce_2025_recap_iam_access_analyzer
hiashisan
0
140
登壇ネタの見つけ方 / How to find talk topics
pinkumohikan
6
600
AWS Organizations 新機能!マルチパーティ承認の紹介
yhana
1
220
FOSS4G 2025 KANSAI QGISで点群データをいろいろしてみた
kou_kita
0
250
より良いプロダクトの開発を目指して - 情報を中心としたプロダクト開発 #phpcon #phpcon2025
bengo4com
1
3.2k
作曲家がボカロを使うようにPdMはAIを使え
itotaxi
0
390
Tech-Verse 2025 Keynote
lycorptech_jp
PRO
0
1.3k
Featured
See All Featured
4 Signs Your Business is Dying
shpigford
184
22k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
940
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Building an army of robots
kneath
306
45k
A designer walks into a library…
pauljervisheath
207
24k
Fireside Chat
paigeccino
37
3.5k
Stop Working from a Prison Cell
hatefulcrawdad
270
20k
Embracing the Ebb and Flow
colly
86
4.7k
Designing for Performance
lara
609
69k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.8k
Practical Orchestrator
shlominoach
188
11k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
Transcript
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