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
CSC307 Lecture 17
javiergs
PRO
0
320
DynamoDBには集計系のクエリがないけどなんとかしたい
musan
1
130
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
190
Inside Stream API
skrb
1
690
jQueryをバージョンアップする前に使いたいjQuery Migrate
matsuo_atsushi
0
200
スマートグラスで並列バイブコーディング
hyshu
0
120
IBM Bobを活用したレガシーアプリの最新化
oniak3ibm
PRO
1
190
不変条件と整合性境界—ビジネスが決める設計判断と実現パターン / Invariants and Consistency Boundaries
nrslib
13
3.6k
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
210
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
270
その問い、本当に正しいですか?AI時代のエンジニアに必要な哲学と認知科学 / ai-philosophy-cognitive-science
minodriven
6
4k
代数的データ型って何が嬉しいの? #frontend_phpcon_do
kajitack
8
3.3k
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
The Limits of Empathy - UXLibs8
cassininazir
1
350
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
770
GraphQLとの向き合い方2022年版
quramy
50
15k
Ethics towards AI in product and experience design
skipperchong
2
310
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
170
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
610
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
1.7k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
610
We Are The Robots
honzajavorek
0
240
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
330
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