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
6
500
PRODUCT HISTORY CONFERENCE 2024の裏側
krpk1900
0
60
Kaigi on Rails 2024 〜運営の裏側〜
krpk1900
1
1.2k
【Kaigi on Rails 2024】YOUTRUST スポンサーLT
krpk1900
1
790
今日で分かる!カスタムコップの作り方
krpk1900
2
1.2k
SNS特有のタイムライン機能におけるYOUTRUSTの工夫点
krpk1900
0
48
技術的負債に対してカスタムコップでできること
krpk1900
0
600
サービスを軌道に乗せるまで一人でやったすべてのこと
krpk1900
20
7.9k
RailsアプリでのCQSの運用を支える仕組みと文化
krpk1900
0
110
Featured
See All Featured
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Designing for Performance
lara
610
69k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.4k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Into the Great Unknown - MozCon
thekraken
40
1.9k
Site-Speed That Sticks
csswizardry
10
700
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
5.9k
Automating Front-end Workflow
addyosmani
1370
200k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Art, The Web, and Tiny UX
lynnandtonic
299
21k
Adopting Sorbet at Scale
ufuk
77
9.5k
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ΑΓ͓ਃ͠ࠐΈ͍ͩ͘͞ʂ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ