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
440
PRODUCT HISTORY CONFERENCE 2024の裏側
krpk1900
0
35
Kaigi on Rails 2024 〜運営の裏側〜
krpk1900
1
920
【Kaigi on Rails 2024】YOUTRUST スポンサーLT
krpk1900
1
650
今日で分かる!カスタムコップの作り方
krpk1900
2
1k
SNS特有のタイムライン機能におけるYOUTRUSTの工夫点
krpk1900
0
35
技術的負債に対してカスタムコップでできること
krpk1900
0
540
サービスを軌道に乗せるまで一人でやったすべてのこと
krpk1900
20
7.8k
RailsアプリでのCQSの運用を支える仕組みと文化
krpk1900
0
78
Featured
See All Featured
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
177
52k
Code Reviewing Like a Champion
maltzj
522
39k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
28
2k
Why Our Code Smells
bkeepers
PRO
336
57k
How STYLIGHT went responsive
nonsquared
99
5.4k
4 Signs Your Business is Dying
shpigford
183
22k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Docker and Python
trallard
44
3.3k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.4k
A Philosophy of Restraint
colly
203
16k
The Invisible Side of Design
smashingmag
299
50k
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ΑΓ͓ਃ͠ࠐΈ͍ͩ͘͞ʂ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ