DDDを実践するときのアーキテクチャ

エリックエバンス本や実践ドメイン駆動を読んでも思想的なところは定義されているものの実際のプロジェクトの中でどう落とし込むのかについては、それぞれで考えないといけないです。

DDDと一緒に語られているアーキテクチャについてよくまとまっている記事がQiitaにあったので参考に。

今、進行中の案件ではKotlinでSpringBootを使ってバックエンドのAPIを開発していて、
普通にやるといわゆるMVCの三層アーキテクチャになってしまうのですがここにドメインモデル層を確立してドメインロジックを集約したいなと思っています。

Controller -> Presentation
Service -> Application

思想的なところでのマッピングとしてここまではよくて、
ドメインモデルとORマッパー実装を切り離しドメインモデル層を確立しないといけないです。
ORマッパーはMyBatisを採用しています。
model層にはモデルとMapperのinterfaceを定義しinfrastracture層にMyBatisに特化した実装を逃しています。

以下のようなinterfaceをmoodel層に定義し、

infrastracture層には以下を定義します。

Couponモデルに値オブジェクトとしてCouponCodeを定義していたり、Couponのビジネスロジックを集約するようにします。

こんな感じで三層アーキテクチャ+ドメインモデルを試みておりますがまだまだ色々と試行錯誤を繰り返しています。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください