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
140
0
Share
非同期処理とは何なのか
Ryoichi SEKIGUCHI
July 31, 2025
More Decks by Ryoichi SEKIGUCHI
See All by Ryoichi SEKIGUCHI
functionalなアプローチで動的要素を排除する
ryopeko
1
4.4k
Ruby makes everything
ryopeko
0
170
正しく失敗しながら進むプロダクト開発/railsdm2018
ryopeko
10
6.2k
CircleCI を使って自動(ほぼ)でセキュリティアップデート / circleci meetup
ryopeko
4
600
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
海外カンファレンス「JavaOne」参加レポート ユーザー系IT企業における目的・成果/JavaOne Report Purpose and Results in the User IT Company
muit
0
120
組織の中で自分を経営する技術
shoota
0
230
long-running-tasks
cipepser
2
460
AI時代から振り返るTerraform drift運用の歴史 / AI Age Reflections on the History of Terraform Drift Operations
aeonpeople
2
630
脅威をエンジニアリングの糧にして:恐怖を乗り越えた先にあったもの / Turn threats into fuel for engineering: what lay beyond overcoming fear
nrslib
1
360
「嘘をつくテスト」の失敗例から学ぶ 良いテストコード #frontend_phpcon_do
asumikam
0
110
サプライチェーンセキュリティの空白地帯 - 信頼できる”依存性”の未来を考える
rung
PRO
2
600
エンジニアは生成AIと どのように向き合うべきか? ことばの意味という観点から
verypluming
3
310
APIテストとは?
nagix
0
160
Spring AI × MCP 入門〜AIエージェントへのツール公開、境界設計から始める最小構成 〜
yuyamiyamoto
0
190
個人AIからチームAIへ:開発における品質と生産性の再設計
moongift
PRO
0
340
「コーディング」しない人のための Claude Code 入門 ChatGPT の次の一歩 — 業務に組み込む 育成・共有・自動化
rfdnxbro
2
790
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
200
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
840
Claude Code のすすめ
schroneko
67
220k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
540
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.5k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
BBQ
matthewcrist
89
10k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
150
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 まとめ
まとめ • 非同期処理の使い所 • スケールさせるポイントを見つける • 運用を考慮した機能、実装にする • もしものために用意しておくこと