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
69
非同期処理とは何なのか
Ryoichi SEKIGUCHI
July 31, 2025
Tweet
Share
More Decks by Ryoichi SEKIGUCHI
See All by Ryoichi SEKIGUCHI
functionalなアプローチで動的要素を排除する
ryopeko
1
4.1k
Ruby makes everything
ryopeko
0
120
正しく失敗しながら進むプロダクト開発/railsdm2018
ryopeko
10
6k
CircleCI を使って自動(ほぼ)でセキュリティアップデート / circleci meetup
ryopeko
4
560
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
AI駆動開発を推進するためにサービス開発チームで 取り組んでいること
noayaoshiro
0
220
Azure Well-Architected Framework入門
tomokusaba
1
330
VCC 2025 Write-up
bata_24
0
180
BtoBプロダクト開発の深層
16bitidol
0
380
10年の共創が示す、これからの開発者と企業の関係 ~ Crossroad
soracom
PRO
1
550
GA technologiesでのAI-Readyの取り組み@DataOps Night
yuto16
0
280
社内お問い合わせBotの仕組みと学び
nish01
0
460
Oracle Cloud Infrastructure:2025年9月度サービス・アップデート
oracle4engineer
PRO
0
470
LLM時代にデータエンジニアの役割はどう変わるか?
ikkimiyazaki
4
910
E2Eテスト設計_自動化のリアル___Playwrightでの実践とMCPの試み__AIによるテスト観点作成_.pdf
findy_eventslides
1
490
空間を設計する力を考える / 20251004 Naoki Takahashi
shift_evolve
PRO
3
400
【Oracle Cloud ウェビナー】クラウド導入に「専用クラウド」という選択肢、Oracle AlloyとOCI Dedicated Region とは
oracle4engineer
PRO
3
120
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
64
7.9k
Mobile First: as difficult as doing things right
swwweet
224
10k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
189
55k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
19
1.2k
Being A Developer After 40
akosma
91
590k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Side Projects
sachag
455
43k
How STYLIGHT went responsive
nonsquared
100
5.8k
How to train your dragon (web standard)
notwaldorf
96
6.3k
RailsConf 2023
tenderlove
30
1.2k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
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 まとめ
まとめ • 非同期処理の使い所 • スケールさせるポイントを見つける • 運用を考慮した機能、実装にする • もしものために用意しておくこと