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
(10分版)モダンアプリケーションにおける分散トランザクションの動機と実装パターン
Search
Yuji Nomura
April 25, 2023
Programming
6.5k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
(10分版)モダンアプリケーションにおける分散トランザクションの動機と実装パターン
AWS Summit TokyoのLTでお話ししました!AWSサービスの話はほとんどないです。
Yuji Nomura
April 25, 2023
More Decks by Yuji Nomura
See All by Yuji Nomura
モダンアプリケーションにおける分散トランザクションの動機と実装 @ AWS Dev Day 2023 Tokyo
ugnom
14
6.5k
Other Decks in Programming
See All in Programming
ランチタイムLT会3周年!ランチタイムLT会を3年間続けられたお話
y0hgi
1
120
symfony/aiとlaravel/boost
77web
0
110
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
12
4.6k
Developing with AI Agents — Codex, Claude Code & Cowork Practical Guide
x5gtrn
PRO
0
1.3k
AI がコードを書く時代における新卒エンジニアの仕事風景 (2026) / New Graduate Engineers in the Era of AI Coding (2026)
sushichan044
0
190
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
180
「正の参照」と 「負の導出」で組む ハーネスエンジニアリング
cottpan
1
110
TAKTでAI駆動開発の品質を設計する
j5ik2o
7
1.6k
A2UI という光を覗いてみる
satohjohn
1
170
Language Server 使ってる? 〜VSCode と Zed の場合〜 / Are you using a Language Server? ~For VS Code and Zed~
handlename
0
820
Hunting Vulnerabilities in Symfony with LLMs
vinceamstoutz
0
570
PHPで使える日時の表現と、その知り方 #frontend_phpcon_do
o0h
PRO
0
280
Featured
See All Featured
Scaling GitHub
holman
464
140k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.7k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Navigating Weather and Climate Data
rabernat
0
270
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
2
280
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.1k
Designing for Timeless Needs
cassininazir
1
270
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.3k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
380
Transcript
© 2023, Amazon Web Services, Inc. or its affiliates. All
rights reserved. T O K Y O | A P R I L 2 1 , 2 0 2 3
© 2023, Amazon Web Services, Inc. or its affiliates. All
rights reserved. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. モダンアプリケーションにおける 分散トランザクションの 動機と実装パターン Yuji Nomura M I N I - 8 Sr. Solutions Architect, Enterprise Majority Focused Amazon Web Services Japan
© 2023, Amazon Web Services, Inc. or its affiliates. All
rights reserved. • モダンアプリケーションの⽬的とトランザクションへの影響 • トランザクション分割の⽅針 • (分散)トランザクション実装パターン ⽬次
© 2023, Amazon Web Services, Inc. or its affiliates. All
rights reserved. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. モダンアプリケーションの⽬的と トランザクションへの影響
© 2023, Amazon Web Services, Inc. or its affiliates. All
rights reserved. アプリケーションのモダン化 モダンなアプリケーションアーキテクチャといえば︓ • マイクロサービス • サーバーレス • コンテナ → ⽐較的⼩さなデプロイ単位で独⽴して運⽤するための仕組み
© 2023, Amazon Web Services, Inc. or its affiliates. All
rights reserved. デプロイ独⽴性のメリット • チームの⾃律 • 開発からリリースまでのスピード感 • 可⽤性・スケーラビリティ・弾⼒性
© 2023, Amazon Web Services, Inc. or its affiliates. All
rights reserved. サービスA サービスB A⽤ B⽤ ⾃分のエリアを跨いだ やりとり サービスAPI マイクロサービスの性質を考えてみる
© 2023, Amazon Web Services, Inc. or its affiliates. All
rights reserved. サービスA サービスB A⽤ B⽤ 変更が伝播 サービスAPI マイクロサービスの性質を考えてみる
© 2023, Amazon Web Services, Inc. or its affiliates. All
rights reserved. A⽤ B⽤ • 直接更新はできない • 要件⾃体は残る サービスA サービスB サービスAPI マイクロサービスの性質を考えてみる
© 2023, Amazon Web Services, Inc. or its affiliates. All
rights reserved. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. トランザクション分割の⽅針
© 2023, Amazon Web Services, Inc. or its affiliates. All
rights reserved. 開発者たちは、アトミックな変更が必須であると 洗脳されているのが⼀般的だ。 (しかし)ドメインエキスパートたちは整合性を 保つのに時間がかかったとしても、それが合理的な 遅延であれば受け⼊れてくれるものだ。 実践ドメイン駆動設計 / Vaughn Vernon 第⼗章 集約 10.5.「ルール︓境界の外部では結果整合性を⽤いる」
© 2023, Amazon Web Services, Inc. or its affiliates. All
rights reserved. 整合性の種類 同期 強整合性 ⾮同期 結果整合性
© 2023, Amazon Web Services, Inc. or its affiliates. All
rights reserved. まず結果整合性を検討する • 結果整合なトランザクション伝播の検討 § ビジネス整合性を保てるようにシステムの形を変更 • 結果整合性が受け⼊れられない場合 § トレードオフを受け⼊れて結合度の⾼い⽅法を選択 § サービス境界の⾒直し
© 2023, Amazon Web Services, Inc. or its affiliates. All
rights reserved. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. (分散)トランザクション 実装パターン
© 2023, Amazon Web Services, Inc. or its affiliates. All
rights reserved. トランザクションを分割するパターン コレオグラフィ オーケストレーション 同⼀DBの トランザクション処理 データの関係性 後続処理失敗の前段への影響 ⼀貫性 Saga パターン 疎 密 無し 多⼤ 強い 弱い ⼆相コミット 結果整合 強整合 情報共有的な データ伝播 Event
© 2023, Amazon Web Services, Inc. or its affiliates. All
rights reserved. トランザクションを分割するパターン コレオグラフィ オーケストレーション 同⼀DBの トランザクション処理 データの関係性 後続処理失敗の前段への影響 ⼀貫性 Saga パターン 疎 密 無し 多⼤ 強い 弱い ⼆相コミット 結果整合 強整合 情報共有的な データ伝播 Event
© 2023, Amazon Web Services, Inc. or its affiliates. All
rights reserved. トランザクションを分割するパターン コレオグラフィ 同⼀DBの トランザクション処理 データの関係性 後続処理失敗の前段への影響 ⼀貫性 Saga パターン 疎 密 無し 多⼤ 強い 弱い ⼆相コミット 結果整合 強整合 オーケストレーション 情報共有的な データ伝播 Event
© 2023, Amazon Web Services, Inc. or its affiliates. All
rights reserved. ⼆相コミットはトレードオフを気にする • ⼆相コミットのリスク︓ • ロックの待ち時間によるレイテンシーの増加 • 通信障害などによるロック状態の固定 第1フェーズ 第2フェーズ commit OK? OK! commit! 更新 更新
© 2023, Amazon Web Services, Inc. or its affiliates. All
rights reserved. CAP定理を思い出してみると 何かを犠牲にしなくてはならない • 一貫性(Consistency) • 可用性(Availability) • 分断耐性(Partition tolerance) マイクロサービス化において分断耐性は絶対に外せない 可用性も落とせない そうすると一貫性がどうしても犠牲になる
© 2023, Amazon Web Services, Inc. or its affiliates. All
rights reserved. トランザクションを分割するパターン コレオグラフィ 同⼀DBの トランザクション処理 データの関係性 後続処理失敗の前段への影響 ⼀貫性 Saga パターン 疎 密 無し 多⼤ 強い 弱い ⼆相コミット 結果整合 強整合 オーケストレーション 情報共有的な データ伝播 Event
© 2023, Amazon Web Services, Inc. or its affiliates. All
rights reserved. Saga パターン ユーザー リクエストサービ ス リクエストキュー サービスA サービスB サービスC サービスA サービスB サービスC
© 2023, Amazon Web Services, Inc. or its affiliates. All
rights reserved. トランザクションを分割するパターン 情報共有的な データ伝播 コレオグラフィ 同⼀DBの トランザクション処理 データの関係性 後続処理失敗の前段への影響 ⼀貫性 Saga パターン 疎 密 無し 多⼤ 強い 弱い ⼆相コミット 結果整合 強整合 Event オーケストレーション
© 2023, Amazon Web Services, Inc. or its affiliates. All
rights reserved. event [i-ʼvent] 名詞 状態が変更されたことを⽰す シグナル
© 2023, Amazon Web Services, Inc. or its affiliates. All
rights reserved. イベントは観察可能であり、指⽰ではない コマンドの指⽰ 請求書を 発⾏して ください。 承知 しました イベントの観察 Xさんが今 ⼩物を注⽂ しました 請求書を 送ります セールスレポート に追加します。
© 2023, Amazon Web Services, Inc. or its affiliates. All
rights reserved. 信頼性、弾⼒性、独⽴したスケール性 注⽂ サービス 請求 サービス ⼊⾦ サービス 販売予測 サービス プロデューサ コンシュー マ イベントルー ター ルーティング/ フィルタ/ ルール キュー キュー キュー
© 2023, Amazon Web Services, Inc. or its affiliates. All
rights reserved. まとめ • デプロイ独⽴性を考えるとデータベースの分割の観点から トランザクションが問題になってくることがある • 結果整合性を重視したアプリケーション設計を考える • 分散トランザクションの実装パターンは⾊々⽅法があるので 要件によって使い分ける
© 2023, Amazon Web Services, Inc. or its affiliates. All
rights reserved. Thank you! © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. Please complete the session survey in the mobile app Yuji Nomura
[email protected]
twitter: @ugnomura