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
45
background jobで 気をつけないといかんところ
@threetreeslight
Repro Inc.
shinjukurb #37
May 25, 2016
threetreeslight
June 22, 2016
Tweet
Share
More Decks by threetreeslight
See All by threetreeslight
Bottleneck is You
threetreeslight
0
75
Japan Office Society オフィスはスタートアップの成長を助長するのか?阻害するのか?
threetreeslight
0
79
スタートアップは見極められたくない
threetreeslight
0
24
VPoEの責務とは
threetreeslight
0
40
CiecleCIでもくもく会を支える技術
threetreeslight
0
24
Ego vs higher self
threetreeslight
0
29
Performance Hack 101
threetreeslight
0
67
複数のスタートアップを 通して得た失敗と学び
threetreeslight
0
44
How to probe prometheus & grafana. What is helm
threetreeslight
0
21
Other Decks in Technology
See All in Technology
反実仮想機械学習とは何か
usaito
PRO
6
1.7k
「手動オペレーションに定評がある」と言われた私が心がけていること / phpcon_odawara2024
blue_goheimochi
2
320
検証を通して見えてきたTiDBの性能特性
lycorptech_jp
PRO
5
2.9k
[PlatformCon 24] Platform Orchestrators: The Missing Middle of Internal Developer Platforms?
danielbryantuk
1
170
Postman v10リリース後を振り返る
nagix
0
120
LLM とプロンプトエンジニアリング/チューターをビルドする / LLM and Prompt Engineering and Building Tutors
ks91
PRO
0
220
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs (QCon London)
inesmontani
PRO
1
150
"好き"との生活/Regularly update profile with GitHub Actions
judeeeee
0
150
長期間TiDBを使ってきた話 @ 私たちはなぜNewSQLを使うのかTiDB選定5社が語る選定理由と活用LT / Experiences with TiDB Over Time
chibiegg
2
650
SPI原点回帰論:事業課題とFour Keysの結節点を見出す実践的ソフトウェアプロセス改善 / DevOpsDays Tokyo 2024
visional_engineering_and_design
4
1.5k
最近たまに見かけるTiDBってなんだ? - Findy
pingcap0315
2
540
レガシーをぶっ壊せ。AEONで始めるDevRelの話 / Qiita Night 2024-2-22
aeonpeople
3
150
Featured
See All Featured
Building a Modern Day E-commerce SEO Strategy
aleyda
16
6.3k
Happy Clients
brianwarren
91
6.4k
Keith and Marios Guide to Fast Websites
keithpitt
408
22k
Designing the Hi-DPI Web
ddemaree
276
33k
Done Done
chrislema
178
15k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
1
1.3k
Infographics Made Easy
chrislema
237
18k
Mobile First: as difficult as doing things right
swwweet
216
8.6k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
24
2.3k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
19
1.9k
Making Projects Easy
brettharned
108
5.5k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
13
1.5k
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