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
730
ドメインイベント増えすぎ問題
ほりしょー
December 21, 2024
Tweet
Share
More Decks by ほりしょー
See All by ほりしょー
開発プロセスを継続的に改善する仕組み作り ~ 強いスクラムをいかに維持するか ~
h0r15h0
0
82
LLM(Copilot)を最大限活用するための取り組みとその副産物
h0r15h0
1
160
現実世界の事象から学ぶSOLID原則
h0r15h0
28
19k
集団意思決定の落とし穴と誰も望まない技術的負債
h0r15h0
1
4.9k
Goのパーサ作ってvscode拡張作ってみた!
h0r15h0
0
150
デザインパターンを学んだら世界が広がった話
h0r15h0
2
310
Other Decks in Programming
See All in Programming
すべてのコンテキストを、 ユーザー価値に変える
applism118
2
1.1k
Hypervel - A Coroutine Framework for Laravel Artisans
albertcht
1
110
Azure AI Foundryではじめてのマルチエージェントワークフロー
seosoft
0
150
GoのGenericsによるslice操作との付き合い方
syumai
3
720
LINEヤフー データグループ紹介
lycorp_recruit_jp
0
1.7k
dbt民主化とLLMによる開発ブースト ~ AI Readyな分析サイクルを目指して ~
yoshyum
2
250
VS Code Update for GitHub Copilot
74th
1
560
WebViewの現在地 - SwiftUI時代のWebKit - / The Current State Of WebView
marcy731
0
110
Is Xcode slowly dying out in 2025?
uetyo
1
240
Node-RED を(HTTP で)つなげる MCP サーバーを作ってみた
highu
0
120
deno-redisの紹介とJSRパッケージの運用について (toranoana.deno #21)
uki00a
0
170
Code as Context 〜 1にコードで 2にリンタ 34がなくて 5にルール? 〜
yodakeisuke
0
120
Featured
See All Featured
Art, The Web, and Tiny UX
lynnandtonic
299
21k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.3k
Building a Modern Day E-commerce SEO Strategy
aleyda
42
7.4k
Site-Speed That Sticks
csswizardry
10
670
Gamification - CAS2011
davidbonilla
81
5.3k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.7k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.9k
Bash Introduction
62gerente
614
210k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
48
5.4k
Documentation Writing (for coders)
carmenintech
72
4.9k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
720
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.5k
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イベントの脳に凝り固まっていた イベントストーミング時点で気づきたかった 他に考慮すべき点がないか?