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
Ryoichi SEKIGUCHI
July 31, 2025
Technology
0
49
非同期処理とは何なのか
Ryoichi SEKIGUCHI
July 31, 2025
Tweet
Share
More Decks by Ryoichi SEKIGUCHI
See All by Ryoichi SEKIGUCHI
functionalなアプローチで動的要素を排除する
ryopeko
1
4k
Ruby makes everything
ryopeko
0
120
正しく失敗しながら進むプロダクト開発/railsdm2018
ryopeko
10
6k
CircleCI を使って自動(ほぼ)でセキュリティアップデート / circleci meetup
ryopeko
4
550
Kaizen Platform でやっている Kaizen Week というイベントについて / kaize week tokyurubykaigi 10
ryopeko
2
1.1k
mysql casual talks vol7
ryopeko
0
2.5k
rubyhiroba
ryopeko
6
1.3k
devsumi2014-dena-bootcamp2014
ryopeko
40
64k
jtrk02
ryopeko
0
5.7k
Other Decks in Technology
See All in Technology
ビジネス文書に特化した基盤モデル開発 / SaaSxML_Session_2
sansan_randd
0
260
【2025 Japan AWS Jr. Champions Ignition】点から線、線から面へ〜僕たちが起こすコラボレーション・ムーブメント〜
amixedcolor
1
120
【Λ(らむだ)】最近のアプデ情報 / RPALT20250729
lambda
0
230
dipにおけるSRE変革の軌跡
dip_tech
PRO
1
230
Jamf Connect ZTNAとMDMで実現! 金融ベンチャーにおける「デバイストラスト」実例と軌跡 / Kyash Device Trust
rela1470
0
120
相互運用可能な学修歴クレデンシャルに向けた標準技術と国際動向
fujie
0
200
Rubyの国のPerlMonger
anatofuz
3
730
Mambaで物体検出 完全に理解した
shirarei24
2
210
ホリスティックテスティングの右側も大切にする 〜2つの[はか]る〜 / Holistic Testing: Right Side Matters
nihonbuson
PRO
0
570
Claude Codeが働くAI中心の業務システム構築の挑戦―AIエージェント中心の働き方を目指して
os1ma
9
1.5k
Unson OS|48時間で「売れるか」を判定する AI 市場検証プラットフォーム
unson
0
170
ロールが細分化された組織でSREと協働するインフラエンジニアは何をするか? / SRE Lounge #18
kossykinto
0
150
Featured
See All Featured
Code Reviewing Like a Champion
maltzj
524
40k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.4k
RailsConf 2023
tenderlove
30
1.2k
How to Ace a Technical Interview
jacobian
278
23k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
50
5.5k
YesSQL, Process and Tooling at Scale
rocio
173
14k
It's Worth the Effort
3n
185
28k
Mobile First: as difficult as doing things right
swwweet
223
9.9k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Java REST API Framework Comparison - PWX 2021
mraible
32
8.8k
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 まとめ
まとめ • 非同期処理の使い所 • スケールさせるポイントを見つける • 運用を考慮した機能、実装にする • もしものために用意しておくこと