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
非同期処理とは何なのか
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Ryoichi SEKIGUCHI
July 31, 2025
Technology
0
120
非同期処理とは何なのか
Ryoichi SEKIGUCHI
July 31, 2025
Tweet
Share
More Decks by Ryoichi SEKIGUCHI
See All by Ryoichi SEKIGUCHI
functionalなアプローチで動的要素を排除する
ryopeko
1
4.3k
Ruby makes everything
ryopeko
0
150
正しく失敗しながら進むプロダクト開発/railsdm2018
ryopeko
10
6.2k
CircleCI を使って自動(ほぼ)でセキュリティアップデート / circleci meetup
ryopeko
4
590
Kaizen Platform でやっている Kaizen Week というイベントについて / kaize week tokyurubykaigi 10
ryopeko
2
1.2k
mysql casual talks vol7
ryopeko
0
2.6k
rubyhiroba
ryopeko
6
1.4k
devsumi2014-dena-bootcamp2014
ryopeko
40
65k
jtrk02
ryopeko
0
5.8k
Other Decks in Technology
See All in Technology
20260320_JaSST26_Tokyo_登壇資料.pdf
mura_shin
0
120
AIエージェント×GitHubで実現するQAナレッジの資産化と業務活用 / QA Knowledge as Assets with AI Agents & GitHub
tknw_hitsuji
0
210
LLMに何を任せ、何を任せないか
cap120
10
4.7k
詳解 強化学習 / In-depth Guide to Reinforcement Learning
prinlab
0
370
スケールアップ企業でQA組織が機能し続けるための組織設計と仕組み〜ボトムアップとトップダウンを両輪としたアプローチ〜
qa
0
230
【PHPerKaigi2026】OpenTelemetry SDKを使ってPHPでAPMを自作する
fendo181
1
170
RGBに陥らないために -プロダクトの価値を届けるまで-
righttouch
PRO
0
110
FastMCP OAuth Proxy with Cognito
hironobuiga
3
180
大規模ECサイトのあるバッチのパフォーマンスを改善するために僕たちのチームがしてきたこと
panda_program
1
380
形式手法特論:SMT ソルバで解く認可ポリシの静的解析 #kernelvm / Kernel VM Study Tsukuba No3
ytaka23
1
770
契約書からの情報抽出を行うLLMのスループットを、バッチ処理を用いて最大40%改善した話
sansantech
PRO
2
230
ThetaOS - A Mythical Machine comes Alive
aslander
0
150
Featured
See All Featured
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
300
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
220
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
360
Bash Introduction
62gerente
615
210k
So, you think you're a good person
axbom
PRO
2
2k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
14k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
200
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Transcript
非同期処理とは何なのか 2025/07/31 @ryopeko 関口亮一
• 関口亮一 • @ryopeko • Backend Engineer
目次 • Batchと非同期処理 • Batch,非同期処理で考慮すること • 使い分け • スケールさせるためのポイント •
運用のためのポイント • もしものために
1 Batchと非同期処理
Batchとは
Batchとは • 特定の日、曜日、時間に起動し処理を行 うもの • 日次、週次、月次で実行したい何か
非同期処理とは
非同期処理とは • Queueなどを用いてメインのプロセスとは 別のプロセスで実行される処理 • 会員登録後に送信するメールの処理な ど、メインの処理をブロックしないで後で (並列に)処理していいものを処理する仕 組み
非同期処理とは • A → B → Cというような処理が連鎖するような 場合、ここでは非同期処理とは言わないことにす る •
そのようなものはWorkflowとかPipelneと言うも のになる。ここで述べるものより更に難しい内容 になるのでここでは扱わない
非同期処理とは • 順番実行はQueueの種類による • FIFO, LIFO とか、どう処理したいかは具体の話 なのでまあ何でも良い
2 Batch, 非同期処理で 考慮すること
Batchと非同期処理の使い分け
例で考える Batchと非同期処理の使い分け • 例: companies table からデータを取得し、 何らかの処理をして、結果をRDBに反映させる
Batchで実装する場合
Batchで実装する場合 1. 自動で決まった日時にあるいは手動で任意のタイミングで処理が起 動する 2. 起動した処理は companies table から対象となるデータを取得する 3.
取得したデータ全件に対して任意の順番でデータを処理する 4. 全ての処理が終わると処理後のデータを得る 5. 得られたデータをRDBに反映する
Batchで実装する場合
非同期処理で実装する場合
非同期処理で実装する場合 1. 自動で決まった日時にあるいは手動で任意のタイミングで処理が起 動する 2. 起動した処理は companies table から対象となるデータを取得する 3.
WorkerはQueueのpushを待っていて、入ってきたQueueをPopする 4. PopしたQueueを受け取ったWorkerはそのデータに対して何らかの 処理を行う
非同期処理で実装する場合 6. 処理が完了したデータに対する結果を得る 7. 得られた結果をRDBに反映させる 8. 全てのQueueが処理されたら処理全体として完了となる
非同期処理で実装する場合
3 使い分け
使い分け • Batch ◦ 1回の実行で完結させられるもの • 非同期処理 ◦ スケールメリットを得たい場合 ◦
処理が並列実行可能なもの
4 スケールさせるための ポイント
スケールさせるためのポイント • 何がボトルネックか見極める • 並列して処理可能な単位を見極める • 処理の境目を見つける
5 運用のための ポイント
運用のためのポイント • 再実行性を担保する(重要) => 処理は失敗するという前提に立つ
運用のためのポイント • 何が成功して何が失敗したかを端的にわ かるようにする => リカバリー、調査をするという前提
運用のためのポイント • 部分実行できるようにする => あらゆる箇所で失敗する可能性がある という前提
運用のためのポイント • 実装は実行時引数を必ず取る状態 (インスタンス)を生成する形で実装する => コンテキストをきちんと作る
運用のためのポイント • 破壊的な処理をメソッドを分けて実装す る => デバッグ、調査時に障壁となる
運用のためのポイント • 調査用のメソッドを用意する => 端的に短時間に状況を把握するため
6 もしものために
Runbookを整備する
Runbookを整備する • もしものことが起きた時の手順書 • 避難訓練的に事前実施
Dashboardを整備する
Dashboardを整備する • 何が起きているかを可視化 • 誰が見ても同じ観測結果になるように
7 まとめ
まとめ • 非同期処理の使い所 • スケールさせるポイントを見つける • 運用を考慮した機能、実装にする • もしものために用意しておくこと