Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
DDDモデリング勉強会 #9
Search
株式会社Jurabi
October 01, 2024
Programming
41
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
DDDモデリング勉強会 #9
DDDモデリング勉強会#9 の発表資料
ドメインイベント、アグリゲーションルート、結果整合性に焦点を当てて、モデルを作成するハンズオン です。
株式会社Jurabi
October 01, 2024
More Decks by 株式会社Jurabi
See All by 株式会社Jurabi
DDDモデリング勉強会 #6
jurabi
0
72
DDDモデリング勉強会 #7
jurabi
0
28
Deep Learning勉強会 逆伝播の仕組み
jurabi
0
53
RDBの世界をぬりかえていくモデルグラフDB〜truncus graphによるモデルファースト開発〜
jurabi
0
430
Other Decks in Programming
See All in Programming
パスワード再設定メールのURLについて知っておこう
uyuki234
0
160
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
610
外から家のPCの電源入れたい!をPHPで解決する
kawashimo0
1
140
すこし踏み込む CancellationToken
htkym
2
1.7k
Workers Cache を知る
syumai
0
370
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
750
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
2
940
Jetpack Compose Mechanisms
skydoves
3
820
コードで差別化できない時代の ソフトウェアエンジニアリング / Software Engineering in an Era Where Code Doesn’t Differentiate
kishida
2
180
カツオ、ご期待ください
suneo3476
0
190
Next.js: The final boss of Web Performance
guaca
0
260
ジョジョの世界をXRで再現する
mofurune
0
170
Featured
See All Featured
Docker and Python
trallard
47
4.2k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
550
Exploring anti-patterns in Rails
aemeredith
4
540
Mind Mapping
helmedeiros
1
400
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
460
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
Marketing to machines
jonoalderson
1
5.9k
GitHub's CSS Performance
jonrohan
1033
470k
For a Future-Friendly Web
brad_frost
184
10k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
580
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
270
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 総括