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
DDDモデリング勉強会 #9
Search
株式会社Jurabi
October 01, 2024
Programming
0
22
DDDモデリング勉強会 #9
DDDモデリング勉強会#9 の発表資料
ドメインイベント、アグリゲーションルート、結果整合性に焦点を当てて、モデルを作成するハンズオン です。
株式会社Jurabi
October 01, 2024
Tweet
Share
More Decks by 株式会社Jurabi
See All by 株式会社Jurabi
DDDモデリング勉強会 #6
jurabi
0
28
DDDモデリング勉強会 #7
jurabi
0
12
Deep Learning勉強会 逆伝播の仕組み
jurabi
0
24
RDBの世界をぬりかえていくモデルグラフDB〜truncus graphによるモデルファースト開発〜
jurabi
0
340
Other Decks in Programming
See All in Programming
Discover Metal 4
rei315
2
110
なぜ「共通化」を考え、失敗を繰り返すのか
rinchoku
1
620
NPOでのDevinの活用
codeforeveryone
0
660
Composerが「依存解決」のためにどんな工夫をしているか #phpcon
o0h
PRO
1
250
データの民主化を支える、透明性のあるデータ利活用への挑戦 2025-06-25 Database Engineering Meetup#7
y_ken
0
340
設計やレビューに悩んでいるPHPerに贈る、クリーンなオブジェクト設計の指針たち
panda_program
6
1.8k
5つのアンチパターンから学ぶLT設計
narihara
1
140
Hypervel - A Coroutine Framework for Laravel Artisans
albertcht
1
110
XP, Testing and ninja testing
m_seki
3
220
VS Code Update for GitHub Copilot
74th
1
550
CursorはMCPを使った方が良いぞ
taigakono
1
210
ソフトウェア品質を数字で捉える技術。事業成長を支えるシステム品質の マネジメント
takuya542
0
400
Featured
See All Featured
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
20
1.3k
The World Runs on Bad Software
bkeepers
PRO
69
11k
The Cult of Friendly URLs
andyhume
79
6.5k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.9k
Stop Working from a Prison Cell
hatefulcrawdad
270
20k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
60k
Embracing the Ebb and Flow
colly
86
4.7k
A Tale of Four Properties
chriscoyier
160
23k
Mobile First: as difficult as doing things right
swwweet
223
9.7k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.5k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Optimising Largest Contentful Paint
csswizardry
37
3.3k
Transcript
DDDモデリング勉強会 第9回 2016/9/2 (金) 19:00 – 20:30
アジェンダ • ドメインイベント、アグリゲーションルート、結果整合性 • モデリングのお題 • モデリング • 総括 2
ドメインイベント、アグリゲーションルート、結果整合性 1トランザクションのシステムの例 受注から在庫確認、注文確定、在庫引当など、全部1トランザク ションで整合性を保って処理 3 <Root> 販売管理 在庫管理 同一トランザクションで 処理する範囲
ドメインイベント、アグリゲーションルート、結果整合性 システムが分散する例 • ドメインイベントでアグリゲーションルート間の連携をとる • 完全な一貫性を実現することは困難 4 <Root> 販売管理 <Root>
在庫管理 別々のトランザクションで処理 複数のアグリゲーションルート
ドメインイベント、アグリゲーションルート、結果整合性 ドメインイベントとは • ドメインエキスパートが気に掛ける何かの出来事 • ドメイン内で発生する何かの出来事 • 「・・・・するときに、」 • 「もしそうなったら、・・・」
• 「・・・の場合は、通知してほしい」 • 「・・・が発生した場合、・・」 • 「もし、こうなったら、・・・・」 5
ドメインイベント、アグリゲーションルート、結果整合性 ドメインイベントの特徴 • ドメイン全体にまたがる概念 • 単一の境界づけられたコンテキストで閉じない • 発生した出来事 既に発生した出来事を表す(不変) (例)
実行コマンド BacklogItem#commitTo(Sprint s) 発生イベント BacklogItemCommitted コミットされた(成功した)ことを示している 6
ドメインイベント、アグリゲーションルート、結果整合性 一貫性がなくても業務は成り立つ • 販売管理側の在庫数は、いわゆるキャッシュ • それぞれの在庫数は常に一致しているわけではない • 受注(1個) 販売管理:29個 在庫管理:30個
• 受注(2個) 販売管理:27個 在庫管理:30個 • 在庫引当(3個) 販売管理:27個 在庫管理:27個 • 在庫数更新 販売管理:27個 在庫管理:27個 7 <Root> 販売管理 <Root> 在庫管理 在庫数:30個 在庫数:30個
モデリングのお題 ハンバーガーの注文を管理するシステム • 全店舗、倉庫を一括管理するアーキテクチャ 8
モデリングのお題 9
モデリングのお題 10
モデリングのお題 チェーンの成長にともない問題発生! 11 店舗、倉庫が増加 注文、在庫の引き当てが大量に発生 レコードのロックにより、 一定数以上の注文を受け付けられなくなった
モデリングのお題 課題 12 ドメインイベント、結果整合性を使って、問題が解決可 能となるようにドメインモデルを修正してください 業務要件、制限 • 商品の製造中に材料の在庫切れ等が発生した場合は、製造 途中の商品は廃棄してよいこととします •
物流にかかる時間、コストは0とし、発注をまとめる必要 はありません
13 総括