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
Fat Modelを解消するためのCQRSアーキテクチャ
Search
Terai Shogo
October 28, 2023
6
10k
Fat Modelを解消するためのCQRSアーキテクチャ
Kaigi on Rails 2023 (
https://kaigionrails.org/2023/talks/krpk1900/
) で発表した内容です。
Terai Shogo
October 28, 2023
Tweet
Share
More Decks by Terai Shogo
See All by Terai Shogo
富山発の個人開発サービスで日本中の学校の業務を改善した話
krpk1900
5
450
PRODUCT HISTORY CONFERENCE 2024の裏側
krpk1900
0
40
Kaigi on Rails 2024 〜運営の裏側〜
krpk1900
1
980
【Kaigi on Rails 2024】YOUTRUST スポンサーLT
krpk1900
1
690
今日で分かる!カスタムコップの作り方
krpk1900
2
1k
SNS特有のタイムライン機能におけるYOUTRUSTの工夫点
krpk1900
0
37
技術的負債に対してカスタムコップでできること
krpk1900
0
540
サービスを軌道に乗せるまで一人でやったすべてのこと
krpk1900
20
7.8k
RailsアプリでのCQSの運用を支える仕組みと文化
krpk1900
0
80
Featured
See All Featured
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
5
520
Rails Girls Zürich Keynote
gr2m
94
13k
Building Flexible Design Systems
yeseniaperezcruz
329
38k
Gamification - CAS2011
davidbonilla
81
5.2k
It's Worth the Effort
3n
184
28k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
390
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.6k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Java REST API Framework Comparison - PWX 2021
mraible
30
8.5k
GraphQLとの向き合い方2022年版
quramy
46
14k
Rebuilding a faster, lazier Slack
samanthasiow
80
8.9k
A better future with KSS
kneath
239
17k
Transcript
גࣜձࣾ:0653645 ࣉҪলޗ ,BJHJPO3BJMT 'BU.PEFMΛղফ͢ΔͨΊͷ $234ΞʔΩςΫνϟ
ࣗݾհ w ࣉҪলޗ !LSQL@EFW w גࣜձࣾ:0653645 ʙ w
,BJHJPO3BJMT0SHBOJ[FS ʙ w झຯͰݸਓ։ൃ w ੮ସ͑ϝʔΧʔ w େ୩ϝʔλʔ w ੈքҰηΩϡϦςΟ͕ݎ࿚ͳΞϓϦͳͲ !LSQL@EFW
w ຊͷΩϟϦΞ4/4ʰ:0653645ʱ w ΩϟϦΞͷػձΛಘΒΕΔ4/4 w ޭใुͳ͠Ͱ࠾༻Ͱ͖Δ4BB4 αʔϏεհ
ຊηογϣϯͰ͓͢Δ͜ͱ w ίʔυͷݟ௨͠Λྑ͘͢ΔͨΊʹɺ࣮ࡍʹ:0653645Ͱ࠾༻͍ͯ͠Δ $234ΞʔΩςΫνϟΛհ
'BU.PEFM 'BU$POUSPMMFSʹ Μͩ͜ͱ͋Γ·ͤΜ͔ʁ
'BU.PEFMɺ'BU$POUSPMMFSͱʁ w .PEFM$POUSPMMFS͕ଟ͘ͷϩδοΫΛ࣋ͬͨ݁Ռɺ ίʔυ͕ංେԽ͠ɺՄಡੑϝϯςφϯεੑ͕͘ͳͬͯ͠·͏
'BU.PEFMɺ'BU$POUSPMMFSͱʁ w .PEFM$POUSPMMFS͕ଟ͘ͷϩδοΫΛ࣋ͬͨ݁Ռɺ ίʔυ͕ංେԽ͠ɺՄಡੑϝϯςφϯεੑ͕͘ͳͬͯ͠·͏ ωετ͕ਂ͘ͳͬͯ͠·͍ͬͯͨΓɺ
'BU.PEFMɺ'BU$POUSPMMFSͱʁ w .PEFM$POUSPMMFS͕ଟ͘ͷϩδοΫΛ࣋ͬͨ݁Ռɺ ίʔυ͕ංେԽ͠ɺՄಡੑϝϯςφϯεੑ͕͘ͳͬͯ͠·͏ ଟ͘ͷυϝΠϯ͕ݱΕɺ ϩδοΫ͕ෳࡶʹͳͬͯ͠·͍ͬͯΔ
'BU.PEFMɺ'BU$POUSPMMFSͱʁ w .PEFM$POUSPMMFS͕ଟ͘ͷϩδοΫΛ࣋ͬͨ݁Ռɺ ίʔυ͕ංେԽ͠ɺՄಡੑϝϯςφϯεੑ͕͘ͳͬͯ͠·͏ ॲཧͷશମ૾͕Ѳͮ͠Β͍ ӨڹൣғΛѲ͠ͳ͕Β ίʔυΛमਖ਼͢Δ͜ͱ͕ࠔ 😞
:0653645Ͱ $234ΞʔΩςΫνϟʹΑͬͯ ղܾ͍ͯ͠·͢
$234ΞʔΩςΫνϟͱʁ $PNNBOE 2VFSZ $MJFOU %# w ߋ৽ $PNNBOE ͱࢀর 2VFSZ
ͷΛ͢ΔΞʔΩςΫνϟ $PNNBOE2VFSZ3FTQPOTJCJMJUZ4FHSFHBUJPOίϚϯυɾΫΤϦύλʔϯ ߋ৽ ࢀর
:0653645ͷ߹ 6TF$BTF $PNNBOE .PEFM 2VFSZ $MJFOU %# w ಠࣗʹ6TF$BTFΛՃ͍ͯ͠Δ
6TF$BTFͱʁ w ෳͷ$PNNBOEΛΈ߹Θͤͯݺͼग़ׂ͢ w $POUSPMMFSͷߋ৽ܥΞΫγϣϯ DSFBUF VQEBUF EFTUSPZ ͔Βݺͼग़͞ΕΔ 1PTUT$POUSPMMFSSC
DSFBUFΞΫγϣϯ $SFBUF1PTU6TF$BTFSC $SFBUF1PTU$PNNBOESC %FTUSPZ1PTU%SBGU$PNNBOESC EFGDSFBUF ʜ FOE
6TF$BTFͱʁ w ෳͷ$PNNBOEΛΈ߹Θͤͯݺͼग़ׂ͢ w $POUSPMMFSͷߋ৽ܥΞΫγϣϯ DSFBUF VQEBUF EFTUSPZ ͔Βݺͼग़͞ΕΔ 1PTUT$POUSPMMFSSC
DSFBUFΞΫγϣϯ $SFBUF1PTU6TF$BTFSC $SFBUF1PTU$PNNBOESC %FTUSPZ1PTU%SBGU$PNNBOESC EFGDSFBUF ʜ FOE
6TF$BTFͱʁ w ෳͷ$PNNBOEΛΈ߹Θͤͯݺͼग़ׂ͢ w $POUSPMMFSͷߋ৽ܥΞΫγϣϯ DSFBUF VQEBUF EFTUSPZ ͔Βݺͼग़͞ΕΔ 1PTUT$POUSPMMFSSC
DSFBUFΞΫγϣϯ $SFBUF1PTU6TF$BTFSC $SFBUF1PTU$PNNBOESC %FTUSPZ1PTU%SBGU$PNNBOESC EFGDSFBUF ʜ FOE
࣮ࡍʹαϯϓϧίʔυͰղઆ
ߋ৽ܥͷαϯϓϧίʔυ $POUSPMMFS
ߋ৽ܥͷαϯϓϧίʔυ $POUSPMMFS ᶃ6TF$BTFΛݺͼग़͢
ߋ৽ܥͷαϯϓϧίʔυ $POUSPMMFS ᶄ6TF$BTFͷ݁ՌʹΑͬͯɺ ɹεςʔλείʔυΛग़͚͠Δ
ߋ৽ܥͷαϯϓϧίʔυ 6TF$BTF
ߋ৽ܥͷαϯϓϧίʔυ 6TF$BTF ϩοΫΛ͔͚ͨΓɺ τϥϯβΫγϣϯΛுΔॲཧ 6TF$BTFͰߦ͍ͬͯΔ
ߋ৽ܥͷαϯϓϧίʔυ 6TF$BTF ߘ࡞$PNNBOEΛ ݺͼग़͍ͯ͠Δ Լॻ͖আ$PNNBOEΛ ݺͼग़͍ͯ͠Δ 6TF$BTF͕ޭͨ͠Β ௨ॲཧΛݺͼग़͍ͯ͠Δ
ߋ৽ܥͷαϯϓϧίʔυ $PNNBOE
ߋ৽ܥͷαϯϓϧίʔυ $PNNBOE σʔλͷ߹ੑʹؔ͢Δ όϦσʔγϣϯΛߦ͍ͬͯΔ ˞ೝՄʹؔ͢ΔόϦσʔγϣϯ ɹ6TF$BTFͰߦ͍ͬͯΔ
ߋ৽ܥͷαϯϓϧίʔυ $PNNBOE όϦσʔγϣϯͰͳ͚Εɺ σʔλͷߋ৽Λߦ͍ͬͯΔ
ࢀরܥ 2VFSZ ͷ߹ w $POUSPMMFSϩδοΫΛ࣋ͨͣɺ2VFSZΛݺͼग़ͯ͠ಘΒΕͨ݁ՌΛ )551Ϩεϙϯεͱͯ͠ฦ͢ 1PTUT$POUSPMMFSSC JOEFYΞΫγϣϯ
1PTUT2VFSZSC EFGJOEFY ʜ FOE
ࢀরܥͷαϯϓϧίʔυ $POUSPMMFS
ࢀরܥͷαϯϓϧίʔυ $POUSPMMFS ᶃ2VFSZΛݺͼग़͢
ࢀরܥͷαϯϓϧίʔυ $POUSPMMFS ᶄ2VFSZͷ݁ՌΛฦ͢
ࢀরܥͷαϯϓϧίʔυ $POUSPMMFS ᶅσʔλιʔεΛϦʔυϨϓϦΧʹ ɹ͚Δ͜ͱͰෛՙΛࢄ
ࢀরܥͷαϯϓϧίʔυ 2VFSZ ߜΓࠐΈιʔτͳͲͷॲཧ 2VFSZͰߦ͍ͬͯΔ
$234ΞʔΩςΫνϟͷϝϦοτ w ࢀরܥͷϩδοΫ2VFSZʹɺߋ৽ܥͷϩδοΫ$PNNBOEʹ Γग़͢͜ͱʹΑͬͯɺ.PEFM$POUSPMMMFSͷංେԽΛ͛Δ w εέʔϧΞτʹΑͬͯύϑΥʔϚϯεΛ্ͤ͞ΔͨΊʹɺ ࢀরܥͱߋ৽ܥͷσʔλιʔεΛ͚Δ͜ͱ͕ΑΓ؆୯ʹͳΔ w
ͦΕͧΕͷΛ໌֬ʹ͠ɺదͳίʔυྔΛอͭ͜ͱͰɺ ୯ମςετ͕ॻ͖͘͢ͳΔ
$POUSPMMFSͷ w దͳεςʔλείʔυΛฦ͢͜ͱ w దͳҾͰ6TF$BTFΛݺͼग़͢͜ͱ
$POUSPMMFSͷςετ w దͳεςʔλείʔυΛฦ͢͜ͱ w దͳҾͰ6TF$BTFΛݺͼग़͢͜ͱ ϞοΫͨ͠6TF$BTF
6TF$BTFͷ w Τϥʔ͕ൃੜͤͣɺ6TF$BTF͕ޭ͢Δ͜ͱ w దͳҾͰ$PNNBOEΛݺͼग़͢͜ͱ
6TF$BTFͷςετ w Τϥʔ͕ൃੜͤͣɺ6TF$BTF͕ޭ͢Δ͜ͱ w దͳҾͰ$PNNBOEΛݺͼग़͢͜ͱ ิ ϞοΫͨ͠ $PNNBOE ϞοΫͨ͠ $PNNBOE
$PNNBOEͷ w Τϥʔ͕ൃੜͤͣɺ$PNNBOE͕ޭ͢Δ͜ͱ w σʔλͷߋ৽͕ߦΘΕΔ͜ͱ
$PNNBOEͷςετ w Τϥʔ͕ൃੜͤͣɺ$PNNBOE͕ޭ͢Δ͜ͱ w σʔλͷߋ৽͕ߦΘΕΔ͜ͱ
·ͱΊ w :0653645Ͱ࣮ࡍʹ࠾༻͍ͯ͠Δ$234ΞʔΩςΫνϟΛհͨ͠ w $PNNBOEɺ2VFSZɺ6TF$BTFͷΛ໌֬ʹ͠ɺίʔυΛΓग़͢͜ͱ ʹΑͬͯɺ$POUSPMMFS.PEFM͕ංେԽͯ͠͠·͏Λ͍Ͱ͍Δ
ऴΘΓʹ w ࠓαϯϓϧίʔυͰ͕ͨ͠ɺຊ൪ίʔυͰઆ໌͠·͢ w ਫ ͔Β։࠵ w ࢀՃDPOOQBTTΑΓ͓ਃ͠ࠐΈ͍ͩ͘͞ʂ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ