purucat’s blog

寿司よ止まれっ!

"「実践ドメイン駆動設計」から学ぶDDDの実装入門" 8 章感想 (全14章)

"「実践ドメイン駆動設計」から学ぶDDDの実装入門"

「実践ドメイン駆動設計」から学ぶDDDの実装入門 (CodeZine Digital First)

「実践ドメイン駆動設計」から学ぶDDDの実装入門 (CodeZine Digital First)

のレビューをこまめに記載していく


ドメインイベント」〜出来事を記録して活用〜

気になった所

  • イベントpublishの前に集約というキーワードが出てきているが説明が後の章(10章)なのでわかりにくい。
  • p.102 分散トランザクションの導入は製品固有の知識が必要ないため<=むしろ必要では。多分書き間違え。

学んだ事

  • ドメインイベント::= ドメインモデルの一部であり、ドメイン内で発生する何かの出来事
    • モデリングには、イベント発生元のコンテキストのユビキタス言語に従う。
    • IDDDでは Pub/Sub型でドメインイベントを処理する例をあげている。 Subscriberでは次の3つの処理パターンがある。
      • 同期処理::=イベントに応じた処理をイベント発行と同一トランザクションで行う。(おそらくこれが、「軽量なオブザーバー(<ーpublisher/subscriberが同じプロセススレッドで動作し、イベント発行と同じトランザクションで処理される特徴を持つ)」。)
      • イベント格納処理::=イベントと同一トランザクションではイベントの記録だけ。
      • 分散処理::=イベントをリアルタイムで別のシステム(境界付けられたコンテキスト)に転送し、処理を行う。
    • Domain Eventに「一意な識別子」はないが、必要になる場合は導入する。(この場合、Event classはValue Objectで設計するということ?)

分からないこと

  • Domain Eventを用いると、集約の制約(単一のトランザクションでは単一の集約の塊だけを変更するという推奨ルール)から開放して結果整合性を保てる。