結果整合性ができない開発者のドメインイベント活用例

location_city Online schedule Nov 7th 11:00 - 11:50 AM place Track C people 19 Interested

ドメイン駆動設計において「コードはユビキタス言語を語らなければならない」とされています。
そのためユビキタス言語をコード(モデル)で表現する表現力が重要です。
モデルの表現の幅を広げる手法として「ドメインイベント」の活用例を紹介します。
ドメインイベントはドメイン内で発生する「○○したら××になる」といった出来事を表現するドメインモデルですが、すぐには思い浮かばないモデル概念の一つです。

Webサービス開発において定番の処理である認証関連処理に適用した事例を紹介します。
以下のようなアプリケーション内に複数あるアクセストークンを削除するユースケースを、抽象化して一つのモデルにまとめることができた事例です。
* ログインIDを変更したらアクセストークンを削除する
* ログインパスワードを変更したらアクセストークンを削除する

複数の集約をまたがる処理で「結果整合性」とともに語られることが多い「ドメインイベント」ですが、「結果整合性」を厳密に担保しようとすると「べき等性」「リトライの仕組み」など乗り越えなければならない壁も多いです。
「結果整合性」をがんばりたいけどがんばる余裕のない開発者でも、ドメインイベントを活用してモデルの表現の幅を広げられればよいなと思います。

私たちのプロジェクトではとりあえず「結果整合性」は忘れてドメインイベントを活用できるようなコーディングのガイドラインを採用しています。
その取り組みについても併せて紹介します。

 
 

Outline/Structure of the BeginnerSpeaker

次のような構成でお話しする予定です
- ドメインイベントを使うことのうれしみ
  - DDD でよく見かけるモデル概念
  - ドメインイベントとは?
- ドメインイベント活用例
  - ドメインイベントを使わないコード
  - ドメインイベントを使ったコード
- 集約とドメインイベントの関係
  - 集約について
  - 集約とドメインイベントの関係
  - ドメインイベント導入の障害
- チーム内にドメインイベントを定着させるための取り組み

Learning Outcome

- モデル概念の選択肢にドメインイベントを加えることができ、モデリングの幅が広がる
- チームでドメインイベントを使い始めるためのきっかけ

Target Audience

モデラ―としてさらに高みを目指したい皆さん、ドメインイベントは分散システムでしか使い道がないと思ってスルーしていた皆さん

schedule Submitted 8 months ago
help