Upgrade to Pro — share decks privately, control downloads, hide ads and more …

モノリスにおけるビジネスロジックの設計 ~アグリゲートパターン~ / aggregate-pa...

モノリスにおけるビジネスロジックの設計 ~アグリゲートパターン~ / aggregate-pattern-for-domain-modeling-on-monolithic

新規サービスをマイクロサービスで構築するのはアンチパターンと言われていますが、サービスが大きくなった時のことを考えるとサービス分割しやすい設計が求められます。
モノリシックな仕組みの中でサービス分割しやすい設計とするためにアグリゲートパターンを紹介します。

2020.7.6スライド修正:「集約についてDDD本に記載がない」という部分が誤りだったので訂正しています。

moomoo-ya

June 26, 2020
Tweet

More Decks by moomoo-ya

Other Decks in Programming

Transcript

  1. #ooltjp 鈴木 勇 @moomooya • 株式会社ラクス • ガンプラ部部長(社内サークル) • かつて勉強会レポート最速おじさんでした

    • Javaの人でしたが、最近はJavaScript, Python, TypeScript • 趣味でゲームデザイナー ◦ 代表作は「5分で要件定義 Fat Project」
  2. #ooltjp 注文アグリゲート 店舗情報アグリゲート 顧客アグリゲート 注文 配達先 支払情報 注文商品 配達先 支払情報

    顧客 店舗情報 「とあるレストランのドメインモデル」(第 5章参照) ・ルートとなるドメインが操作を受付 ・アグリゲート内の整合性を担保する
  3. #ooltjp 店舗情報アグリゲート 顧客アグリゲート 注文アグリゲート 注文 配達先 支払情報 注文商品 配達先 支払情報

    顧客 店舗情報 「とあるレストランのドメインモデル」(第 5章参照) 正規化されていない   ↓
 アグリゲート単位で整合性を保つため
  4. #ooltjp 店舗情報アグリゲート 顧客アグリゲート 注文アグリゲート <アグリゲートルート> 注文 配達先 支払情報 注文商品 配達先

    支払情報 <アグリゲートルート> 顧客 <アグリゲートルート> 店舗情報 アグリゲートルート 値オブジェクト アグリゲート
  5. #ooltjp アグリゲートパターンの要素 • アグリゲート ◦ 操作単位をまとめたもの • アグリゲートルート ◦ アグリゲートの窓口

    ◦ 外部からの操作を受け付ける • 値オブジェクト ◦ 業務知識の観点で説明的な型のオブジェクト ▪ 「String型」ではなく「氏名型」であること
  6. #ooltjp 店舗情報アグリゲート 顧客アグリゲート 注文アグリゲート <アグリゲートルート> 注文 配達先 支払情報 注文商品 配達先

    支払情報 <アグリゲートルート> 顧客 <アグリゲートルート> 店舗情報 アグリゲートルート 値オブジェクト アグリゲート
  7. #ooltjp 店舗情報サービス 顧客サービス 注文サービス <アグリゲートルート> 注文 配達先 支払情報 注文商品 配達先

    支払情報 <アグリゲートルート> 顧客 <アグリゲートルート> 店舗情報 アグリゲートルート 値オブジェクト サービス