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
3
6.3k
(10分版)モダンアプリケーションにおける分散トランザクションの動機と実装パターン
AWS Summit TokyoのLTでお話ししました!AWSサービスの話はほとんどないです。
Yuji Nomura
April 25, 2023
Tweet
Share
More Decks by Yuji Nomura
See All by Yuji Nomura
モダンアプリケーションにおける分散トランザクションの動機と実装 @ AWS Dev Day 2023 Tokyo
ugnom
14
5.9k
Other Decks in Programming
See All in Programming
Denoでフロントエンド開発 2025年春版 / Frontend Development with Deno (Spring 2025)
petamoriken
1
1.3k
私の愛したLaravel 〜レールを超えたその先へ〜
kentaroutakeda
12
3.7k
snacks.nvim内のセットアップ不要なプラグインを紹介 / introduce_snacks_nvim
uhooi
0
370
Being an ethical software engineer
xgouchet
PRO
0
180
フロントエンドテストの育て方
quramy
11
2.8k
PHPでお金を扱う時、終わりのない 謎の1円調査の旅にでなくて済む方法
nakka
4
1.4k
マルチアカウント環境での、そこまでがんばらない RI/SP 運用設計
wa6sn
0
680
Django for Data Science (Boston Python Meetup, March 2025)
wsvincent
0
300
「影響が少ない」を自分の目でみてみる
o0h
PRO
1
110
Going Structural with Named Tuples
bishabosha
0
190
Building Scalable Mobile Projects: Fast Builds, High Reusability and Clear Ownership
cyrilmottier
1
140
SEAL - Dive into the sea of search engines - Symfony Live Berlin 2025
alexanderschranz
1
110
Featured
See All Featured
Writing Fast Ruby
sferik
628
61k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.7k
Being A Developer After 40
akosma
90
590k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Building Applications with DynamoDB
mza
94
6.3k
How to Ace a Technical Interview
jacobian
276
23k
Visualization
eitanlees
146
16k
Faster Mobile Websites
deanohume
306
31k
Fireside Chat
paigeccino
37
3.4k
Large-scale JavaScript Application Architecture
addyosmani
511
110k
Statistics for Hackers
jakevdp
798
220k
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