Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ドメインイベント増えすぎ問題
Search
ほりしょー
December 21, 2024
Programming
2
680
ドメインイベント増えすぎ問題
ほりしょー
December 21, 2024
Tweet
Share
More Decks by ほりしょー
See All by ほりしょー
LLM(Copilot)を最大限活用するための取り組みとその副産物
h0r15h0
1
150
現実世界の事象から学ぶSOLID原則
h0r15h0
28
18k
集団意思決定の落とし穴と誰も望まない技術的負債
h0r15h0
1
4.8k
Goのパーサ作ってvscode拡張作ってみた!
h0r15h0
0
130
デザインパターンを学んだら世界が広がった話
h0r15h0
2
290
Other Decks in Programming
See All in Programming
ノーコードツールの裏側につきまとう「20分岐」との戦い
oguemon
0
110
PsySHから紐解くREPLの仕組み
muno92
PRO
1
530
海外のアプリで見かけたかっこいいTransitionを真似てみる
shogotakasaki
1
140
PHPでお金を扱う時、終わりのない 謎の1円調査の旅にでなくて済む方法
nakka
4
1.4k
新卒から4年間、20年もののWebサービスと 向き合って学んだソフトウェア考古学
oguri
8
7k
複数ドメインに散らばってしまった画像…! 運用中のPHPアプリに後からCDNを導入する…!
suguruooki
0
450
趣味全開のAITuber開発
kokushin
0
150
データベースエンジニアの仕事を楽にする。PgAssistantの紹介
nnaka2992
9
4.4k
体得しよう!RSA暗号の原理と解読
laysakura
3
550
RubyKaigiで手に入れた HHKB Studioのための HIDRawドライバ
iberianpig
0
1.1k
ローコードサービスの進化のためのモノレポ移行
taro28
1
350
snacks.nvim内のセットアップ不要なプラグインを紹介 / introduce_snacks_nvim
uhooi
0
370
Featured
See All Featured
Making Projects Easy
brettharned
116
6.1k
Designing Experiences People Love
moore
141
23k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
4
490
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Raft: Consensus for Rubyists
vanstee
137
6.9k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.8k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
40
2.1k
Measuring & Analyzing Core Web Vitals
bluesmoon
6
360
A Modern Web Designer's Workflow
chriscoyier
693
190k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
Fontdeck: Realign not Redesign
paulrobertlloyd
83
5.5k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.4k
Transcript
2024/12/21 CQRS+ES カンファレンス 2024 ドメインイベント増えすぎ問題
ほりしょー ハコベル株式会社 サーバーサイドエンジニア @H0R15H0 https://youtu.be/ZFTW6Ete9eE?feature=shared https://zenn.dev/hacobell_dev/articles/131cbcb873e8ba https://zenn.dev/hacobell_dev/articles/4bf484a360d343
お話しすること ES運用から2年が経ち、 、 、 気がついたら似たようなドメインイベントが増えすぎていた 具体例を紹介 ドメインイベントを分割できたのでは?という気づき
トラックA トラックB 地点A 地点B 地点C ドメインイベント増えすぎ問題 トラックのルート組みを例に考える ルート組み全体で1集約
トラックA トラックB 地点A 地点B 地点C ドメインイベント増えすぎ問題 トラックのルート組みを例に考える ユーザはルートの最適化を行う ルートの組み替え=ドメインイベント
ドメインイベント増えすぎ問題 イベントパターン1:別のトラックにルートを組み替える トラックA トラックB 地点A 地点B 地点C
ドメインイベント増えすぎ問題 イベントパターン1:別のトラックにルートを組み替える トラックA トラックB 地点A 地点B 地点C
ドメインイベント増えすぎ問題 イベントパターン2:同一トラック内でルートを組み替える トラックA トラックB 地点A 地点B 地点C
ドメインイベント増えすぎ問題 イベントパターン2:同一トラック内でルートを組み替える トラックA 地点A トラックB 地点B 地点C
ドメインイベント増えすぎ問題 イベントパターン3:新しいトラックを用意してルートを組み替える トラックA トラックB 地点A 地点B 地点C
ドメインイベント増えすぎ問題 イベントパターン3:新しいトラックを用意してルートを組み替える トラックA トラックB 地点A 地点B 地点C トラックC
ドメインイベント増えすぎ問題 イベントパターン4:全地点同じトラックでルートを組む トラックA トラックB 地点A 地点B 地点C
ドメインイベント増えすぎ問題 イベントパターン4:全地点同じトラックでルートを組む トラックB 地点A 地点B 地点C トラックA
本当にバリエーションが必要だったのか? イベントパターン1:別のトラックにルートを組み替える イベントパターン2:同一トラック内でルートを組み替える イベントパターン3:新しいトラックを用意してルートを組み替える イベントパターン4:トラックを削除しルートを組み変える 💡ドメインイベントを分割するのはどうだろうか?
本当にバリエーションが必要だったのか? イベントパターン1:別のトラックにルートを組み替える イベントパターン2:同一トラック内でルートを組み替える イベントパターン3:新しいトラックを用意してルートを組み替える イベントパターン4:トラックを削除しルートを組み変える ↓ イベントパターンA:移動対象の地点をルートから削除する イベントパターンB:移動対象の地点をルートに追加する この2パターンの組み合わせで 1〜4
を表せないか?
ドメインイベント増えすぎ問題 イベントパターン1:別のトラックにルートを組み替える トラックA トラックB 地点A 地点B 地点C
ドメインイベント増えすぎ問題 イベントパターン1:別のトラックにルートを組み替える トラックA トラックB 地点A 地点B 地点C
ドメインイベント増えすぎ問題 イベントパターン1:別のトラックにルートを組み替える トラックA トラックB 地点A 地点B 地点C イベントA イベントB
ドメインイベント増えすぎ問題 イベントパターン2:同一トラック内でルートを組み替える トラックA トラックB 地点A 地点B 地点C
ドメインイベント増えすぎ問題 イベントパターン2:同一トラック内でルートを組み替える トラックA 地点A トラックB 地点B 地点C
ドメインイベント増えすぎ問題 イベントパターン2:同一トラック内でルートを組み替える トラックA 地点A トラックB 地点B 地点C イベントA イベントB
ドメインイベント増えすぎ問題 イベントパターン3:新しいトラックを用意してルートを組み替える トラックA トラックB 地点A 地点B 地点C
ドメインイベント増えすぎ問題 イベントパターン3:新しいトラックを用意してルートを組み替える トラックA トラックB 地点A 地点B 地点C トラックC
ドメインイベント増えすぎ問題 イベントパターン3:新しいトラックを用意してルートを組み替える トラックA トラックB 地点A 地点B 地点C トラックC イベントA イベントB
ドメインイベント増えすぎ問題 イベントパターン4:全地点同じトラックでルートを組む トラックA トラックB 地点A 地点B 地点C
ドメインイベント増えすぎ問題 イベントパターン4:全地点同じトラックでルートを組む トラックB 地点A 地点B 地点C トラックA
ドメインイベント増えすぎ問題 イベントパターン4:全地点同じトラックでルートを組む トラックB 地点A 地点B 地点C トラックA イベントA イベントB
バリエーションを削減できた イベントパターン1:別のトラックにルートを組み替える イベントパターン2:同一トラック内でルートを組み替える イベントパターン3:新しいトラックを用意してルートを組み替える イベントパターン4:トラックを削除しルートを組み変える ↓ イベントパターンA:移動対象の地点をルートから削除する イベントパターンB:移動対象の地点をルートに追加する
一方で、分割することによるデメリットも イベント単体情報量は減ってしまう 移動したのか・削除されただけなのか不明瞭に 読み取りの結果整合性を考慮しなければならない 見えてはいけない状況ではないか? 実際のビジネスプロセスと乖離しすぎないか
まとめ・感想 ドメインイベントを分割するという発想 1ユーザ操作=1イベントの脳に凝り固まっていた イベントストーミング時点で気づきたかった 他に考慮すべき点がないか?