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
7.1k
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
0
330
サービスを軌道に乗せるまで一人でやったすべてのこと
krpk1900
20
7.2k
RailsアプリでのCQSの運用を支える仕組みと文化
krpk1900
0
24
Kaigi on Rails 2023 〜運営の裏側〜
krpk1900
0
830
【OPEN CODE】YOUTRUST サーバーサイド編
krpk1900
0
83
Rubyのハッシュとパスワードのハッシュ化、まったく別物だと思っていませんか?
krpk1900
0
24
【iCARE秘伝のアプリを初公開】GJ Carelyであなたの会社にも温かい文化を作ってみませんか?
krpk1900
0
19
What is ECS, EKS, EC2 and Fargate?
krpk1900
0
110
メソッド探しの旅
krpk1900
0
28
Featured
See All Featured
Designing Dashboards & Data Visualisations in Web Apps
destraynor
226
51k
Fashionably flexible responsive web design (full day workshop)
malarkey
398
65k
Making the Leap to Tech Lead
cromwellryan
125
8.5k
In The Pink: A Labor of Love
frogandcode
138
21k
The Straight Up "How To Draw Better" Workshop
denniskardys
228
130k
Side Projects
sachag
451
41k
Building a Modern Day E-commerce SEO Strategy
aleyda
22
6.4k
Unsuck your backbone
ammeep
664
57k
Rebuilding a faster, lazier Slack
samanthasiow
74
8.3k
A Philosophy of Restraint
colly
197
16k
Become a Pro
speakerdeck
PRO
13
4.6k
Facilitating Awesome Meetings
lara
43
5.6k
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ΑΓ͓ਃ͠ࠐΈ͍ͩ͘͞ʂ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ