13
DDD モモモモモモモモ モ9モ 2016/9/2 ( モ ) 19:00 – 20:30

DDDモデリング勉強会 #9

  • Upload
    jurabi

  • View
    87

  • Download
    0

Embed Size (px)

Citation preview

Page 1: DDDモデリング勉強会 #9

DDD  モデリング勉強会第 9回2016/9/2 (金 )19:00 – 20:30

Page 2: DDDモデリング勉強会 #9

アジェンダ

• ドメインイベント、アグリゲーションルート、結果整合性• モデリングのお題• モデリング• 総括

Page 3: DDDモデリング勉強会 #9

ドメインイベント、アグリゲーションルート、結果整合性1トランザクションのシステムの例

受注から在庫確認、注文確定、在庫引当など、全部1トランザクションで整合性を保って処理

<Root>販売管理 在庫管理

同一トランザクションで処理する範囲

Page 4: DDDモデリング勉強会 #9

ドメインイベント、アグリゲーションルート、結果整合性システムが分散する例

• ドメインイベントでアグリゲーションルート間の連携をとる• 完全な一貫性を実現することは困難

<Root>販売管理<Root>在庫管理

別々のトランザクションで処理複数のアグリゲーションルート

Page 5: DDDモデリング勉強会 #9

ドメインイベント、アグリゲーションルート、結果整合性ドメインイベントとは• ドメインエキスパートが気に掛ける何かの出来事• ドメイン内で発生する何かの出来事

• 「・・・・するときに、」• 「もしそうなったら、・・・」• 「・・・の場合は、通知してほしい」• 「・・・が発生した場合、・・」• 「もし、こうなったら、・・・・」

Page 6: DDDモデリング勉強会 #9

ドメインイベント、アグリゲーションルート、結果整合性ドメインイベントの特徴• ドメイン全体にまたがる概念

• 単一の境界づけられたコンテキストで閉じない• 発生した出来事既に発生した出来事を表す(不変)(例)実行コマンド  BacklogItem#commitTo(Sprint s)発生イベント  BacklogItemCommittedコミットされた(成功した)ことを示している

Page 7: DDDモデリング勉強会 #9

ドメインイベント、アグリゲーションルート、結果整合性一貫性がなくても業務は成り立つ

• 販売管理側の在庫数は、いわゆるキャッシュ• それぞれの在庫数は常に一致しているわけではない

• 受注( 1        個) 販売管理: 29  個 在庫管理: 30個• 受注( 2        個) 販売管理: 27  個 在庫管理: 30個• 在庫引当( 3    個) 販売管理: 27  個 在庫管理: 27個•           在庫数更新 販売管理: 27  個 在庫管理: 27個

<Root>販売管理 <Root>在庫管理在庫数: 30個 在庫数: 30個

Page 8: DDDモデリング勉強会 #9

モデリングのお題ハンバーガーの注文を管理するシステム• 全店舗、倉庫を一括管理するアーキテクチャ

Page 9: DDDモデリング勉強会 #9

モデリングのお題

Page 10: DDDモデリング勉強会 #9

モデリングのお題

Page 11: DDDモデリング勉強会 #9

モデリングのお題チェーンの成長にともない問題発生!

店舗、倉庫が増加

注文、在庫の引き当てが大量に発生

レコードのロックにより、一定数以上の注文を受け付けられなくなった

Page 12: DDDモデリング勉強会 #9

モデリングのお題課題ドメインイベント、結果整合性を使って、問題が解決可能となるようにドメインモデルを修正してください業務要件、制限•商品の製造中に材料の在庫切れ等が発生した場合は、製造途中の商品は廃棄してよいこととします•物流にかかる時間、コストは 0とし、発注をまとめる必要はありません

Page 13: DDDモデリング勉強会 #9

総括