dddに関するyo_wakaのブックマーク (2)
-
昔書いた記事ですが、今回は続編です。 DDDのリポジトリのインターフェイスをどのように設計すべきか 過去の実装は一旦捨てて書き直してみました。 scala-ddd-base/reboot 前回と比べて改善した点は以下です。 Try, Futureなどの個別の型向けのtraitを作らないIO用コンテキストをリポジトリメソッドから追い出した 型パラメータの数を減らす 型クラスとTagless Final 同期版、非同期版というようにトレイトや実装を分けていくと複雑になりがちなので、以下のようしました(実装は???ですが、詳細はgithubを参照してください) 型パラメータはM[_]だけになります。高階型というやつです。ID型は抽象型メンバーにすることで型パラメータの数を減らしました。trait UserAccountRepository[M[_]] extends AggregateSin
-
タイトルに書かれていることで全てなのですが、DDDとCQRSの併用について強調している日本語の情報が少ないので、軽くまとめておきます。 CQRS+DDD CQRS(コマンドクエリ責務分離)とは、サーバの機能を﹁コマンド﹂︵副作用あり︶と﹁クエリ﹂︵副作用なし︶で完全に分けちゃおう、という考え方です。そもそも﹁コマンド﹂と﹁クエリ﹂ではあらゆる要件が異なります。 一貫性‥ ﹁コマンド﹂は整合性のある処理が必要、﹁クエリ﹂はあまり気にする必要なし ストレージ‥ ﹁コマンド﹂側は正規化してデータを保存したい、﹁クエリ﹂側は非正規な方が効率的 スケーラビリティ‥ ﹁コマンド﹂は全体の負荷の中で占める割合が少ない、﹁クエリ﹂は負荷が大きい なので分けちゃうわけですが、 コマンド側 複雑なビジネスロジックが絡むので、ドメイン駆動が活躍 クエリ側 複雑なビジネスロジックがないので、ドメイン層はスキップ
-
1