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
36
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
62
DDDモデリング勉強会 #7
jurabi
0
22
Deep Learning勉強会 逆伝播の仕組み
jurabi
0
44
RDBの世界をぬりかえていくモデルグラフDB〜truncus graphによるモデルファースト開発〜
jurabi
0
400
Other Decks in Programming
See All in Programming
Creating Composable Callables in Contemporary C++
rollbear
0
120
Hunting Vulnerabilities in Symfony with LLMs
vinceamstoutz
0
540
運用エージェントは "作る" から "育てる" へ - 記憶と自己進化の3層設計パターン / self-evolving-agents-three-layer-agent-design
gawa
12
3.6k
Lemonade + Foundry Toolkit でお手軽アプリ開発
seosoft
1
330
RTSPクライアントを自作してみた話
simotin13
0
600
Snowflake Summitでの新機能 CoCo / CoWork / snowflake-summit-2026-overall-what-new-coco
tatsuhiro
1
120
Vite+ Unified Toolchain for the Web
naokihaba
0
290
気づいたらRubyで100作品 ー クリエイティブコーディングが生活の一部になるまで / 100 Ruby Sketches Later: How Creative Coding Became Part of My Life
chobishiba
3
570
Javaの型とAI時代に型が大事な理由 / java types and type in AI era
kishida
2
130
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
270
AIだと陥りがちなJakarta EE最新技術への移行時の落とし穴と解決策
tnagao7
0
110
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
230
Featured
See All Featured
A better future with KSS
kneath
240
18k
ラッコキーワード サービス紹介資料
rakko
1
3.6M
Believing is Seeing
oripsolob
1
140
Statistics for Hackers
jakevdp
799
230k
Making Projects Easy
brettharned
120
6.7k
Music & Morning Musume
bryan
47
7.2k
How GitHub (no longer) Works
holman
316
150k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
310
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.9k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Making the Leap to Tech Lead
cromwellryan
135
9.9k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
310
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 総括