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
Sagaパターン入門
Search
nikawa2161
January 11, 2026
40
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Sagaパターン入門
nikawa2161
January 11, 2026
More Decks by nikawa2161
See All by nikawa2161
Node.js Subpath imports
nikawa2161
0
21
Sagaパターン入門(続編)
nikawa2161
0
30
沖縄観光とPostgreSQL排他制約の話
nikawa2161
0
35
20251209_プログラミング原則の学び
nikawa2161
0
25
自分のコードを数年ぶりに読んだら
nikawa2161
0
19
ユーザーインタビュー分析に参加して得られたことと気づき
nikawa2161
0
24
oEmbedとは?
nikawa2161
0
93
はじめまして、にかわです
nikawa2161
0
20
課題を映す問題空間と、答えを描く解決空間
nikawa2161
0
16
Featured
See All Featured
Music & Morning Musume
bryan
47
7.2k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
370
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
Visualization
eitanlees
152
17k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Google's AI Overviews - The New Search
badams
0
1k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
840
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
350
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
Paper Plane
katiecoart
PRO
1
51k
Transcript
Saga パターン入門 2026.01.06 技術勉強会 1
本日のアジェンダ 1. ACID 特性の基礎 2. 分散システムにおける課題 3. Saga パターンとは 4.
Saga の実装方法 5. 分散環境での問題点 2
ACID 特性の基礎 データベースの 4 つの基本特性 3
単一 DB でのトランザクション シンプルで確実な処理 複数のアクションが同一 DB 内で実行 エラー発生時のロールバックが容易 ACID 特性が完全に保証される
問題点 → 複数サービスにまたがる場合はどうする? 4
分散システムの課題 マイクロサービスアーキテクチャ 課題: 各サービスの DB が分かれている 5
Saga パターンとは 分散トランザクションを実現する設計パターン 3 つの特徴 1. ステップごとの分割 トランザクションを独立した操作に分解 2. 補償トランザクション
失敗時は逆向きに実行して初期状態に戻す 3. 手動設計が必要 各ステップと補償処理を明示的に定義 6
Saga の実装方法 2 つのアプローチ 7
コレオグラフィー方式 各サービスが自律的に判断 メリット 柔軟性が高い サービス間の疎結合 単一障害点がない デメリット 全体の流れが把握しにくい デバッグが困難 イベントの設計が複雑
8
オーケストレーション方式 中央コーディネーターが全体を制御 メリット 全体の流れを把握しやすい デバッグが容易 シンプルな設計 デメリット 単一障害点になりやすい コーディネーターの負荷が高い サービス間が密結合になりがち
9
Saga と ACID 特性 分散環境での特性の変化 Isolation(分離性)は完全には保証されない 10
Isolation 問題の具体例 途中状態が見えてしまう シナリオ 1. ゴーヤー注文を受付(在庫確保完了) 2. 決済処理中...(まだ完了していない) 3. この時点で他のユーザーが在庫を閲覧
問題点 決済前なのに在庫が減って見える 最終的に決済が失敗する可能性もある 不整合な状態が外部に露出 11
Lost Update 問題 更新内容が上書きされる 必要な対策: 楽観的ロック、バージョン管理 12
Dirty Read 問題 コミット前の変更が見えてしまう 必要な対策: セマンティックロック、コミュータティブ更新 13
まとめ Saga パターンの要点 分散システムでのトランザクション管理に有用 コレオグラフィーとオーケストレーションの 2 方式 ACID 特性のうち Isolation
に課題あり Lost Update や Dirty Read への対策が必要 次回予告 → 具体的な対策方法(ロック戦略など)を解説 14
ご清聴ありがとうございました 15