$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ドメインイベント増えすぎ問題
Search
ほりしょー
December 21, 2024
Programming
2
820
ドメインイベント増えすぎ問題
ほりしょー
December 21, 2024
Tweet
Share
More Decks by ほりしょー
See All by ほりしょー
開発プロセスを継続的に改善する仕組み作り ~ 強いスクラムをいかに維持するか ~
h0r15h0
0
110
LLM(Copilot)を最大限活用するための取り組みとその副産物
h0r15h0
1
190
現実世界の事象から学ぶSOLID原則
h0r15h0
29
21k
集団意思決定の落とし穴と誰も望まない技術的負債
h0r15h0
1
5.1k
Goのパーサ作ってvscode拡張作ってみた!
h0r15h0
0
190
デザインパターンを学んだら世界が広がった話
h0r15h0
2
390
Other Decks in Programming
See All in Programming
新卒エンジニアのプルリクエスト with AI駆動
fukunaga2025
0
230
脳の「省エネモード」をデバッグする ~System 1(直感)と System 2(論理)の切り替え~
panda728
PRO
0
120
Findy AI+の開発、運用におけるMCP活用事例
starfish719
0
1.7k
これならできる!個人開発のすゝめ
tinykitten
PRO
0
130
AI前提で考えるiOSアプリのモダナイズ設計
yuukiw00w
0
190
Cell-Based Architecture
larchanjo
0
140
令和最新版Android Studioで化石デバイス向けアプリを作る
arkw
0
440
20251212 AI 時代的 Legacy Code 營救術 2025 WebConf
mouson
0
210
愛される翻訳の秘訣
kishikawakatsumi
3
340
組み合わせ爆発にのまれない - 責務分割 x テスト
halhorn
1
160
ゆくKotlin くるRust
exoego
1
160
gunshi
kazupon
1
120
Featured
See All Featured
Applied NLP in the Age of Generative AI
inesmontani
PRO
3
2k
How STYLIGHT went responsive
nonsquared
100
6k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
400
What the history of the web can teach us about the future of AI
inesmontani
PRO
0
370
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
The Curse of the Amulet
leimatthew05
0
4.7k
The untapped power of vector embeddings
frankvandijk
1
1.5k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.4k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
2
3.8k
Technical Leadership for Architectural Decision Making
baasie
0
180
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.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イベントの脳に凝り固まっていた イベントストーミング時点で気づきたかった 他に考慮すべき点がないか?