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
Rails engineを用いたゆるふわモジュラーモノリス のご紹介
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
free_world21
June 07, 2024
Programming
490
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Rails engineを用いたゆるふわモジュラーモノリス のご紹介
Omotesando.rb #98でLT発表した資料です。
https://omotesandorb.connpass.com/event/319813/
free_world21
June 07, 2024
More Decks by free_world21
See All by free_world21
RubyとGoでゼロから作る証券システム: 高信頼性が求められるシステムのコードの外側にある設計と運用のリアル
free_world21
1
6.1k
DjangoとRailsを使って趣味として政治資金を透明化するプロダクトを作ってる話
free_world21
0
98
Ruby on Rails on Kubernetesってどうなの?
free_world21
0
39
大事なデータを守りたい!ActiveRecord Encryptionと、より安全かつ検索可能な暗号化手法の実装例の紹介
free_world21
0
63
Ruby on Rails と Django を比較してみる
free_world21
1
310
Shinjuku.rb#95:心の技術書紹介
free_world21
1
350
『Railsオワコン』と言われる時代に、なぜブルーモ証券はRailsを選ぶのか
free_world21
3
1.6k
東証障害報告書を読み解く
free_world21
0
340
Ruby/Railsの勉強会のおかげでブルーモ証券起業した
free_world21
2
550
Other Decks in Programming
See All in Programming
KotlinConf Extended South Korea 2026 Keynote
l2hyunwoo
0
120
「人を評価する AI」の設計と実装
ryoyanara
0
240
書籍「プロフェッショナルAI駆動開発」紹介スライド
juntaromatsumoto
0
540
S3 を使うアプリケーションをローカル完結で動かすことに全力を注いでみた / Running S3 Apps Offline
contour_gara
0
610
人間の目はかわらない、だからJPEGは30年もつ
yuzneri
12
19k
freeeにおけるEvalsの実践例の紹介
freee
PRO
0
150
AI Engineeringは、AIプロダクトだけのものか? 〜AIがソフトウェアを作る時代の新しい当たり前〜 / No AI in your product. AI Engineering in your development.
rkaga
5
530
typoなんかねぇよ
raspython3
0
540
DynamoDBの基礎を振り返りながらベクトル検索機能を理解する
musan
2
200
Dockerfile CMD for Node.js
grazie1999
0
120
リアルな遅延を測る仕様
kota_yata
1
130
言葉の格闘技のススメ~紙とペンと言葉から始める、キャリアの描き方~
progresscicada
2
170
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Building the Perfect Custom Keyboard
takai
2
850
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
290
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
57k
Code Reviewing Like a Champion
maltzj
528
40k
The Curious Case for Waylosing
cassininazir
1
480
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.2k
Utilizing Notion as your number one productivity tool
mfonobong
4
550
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Odyssey Design
rkendrick25
PRO
2
780
How to train your dragon (web standard)
notwaldorf
97
6.8k
Transcript
3BJMTFOHJOFΛ༻͍ͨ ΏΔ;ΘϞδϡϥʔϞϊϦε ͷ͝հ 5IV খྛޛ࢙ OPFM ϒϧʔϞূ݊גࣜձࣾ 0NPUFTBOEPSC
▪ খྛ ޛ࢙ʢখྛ ϊΤϧʣ ▪ ຊۀɿϒϧʔϞূ݊גࣜձࣾ औక$50 – ถࠃגɾถࠃ&5'ઐۀͷظࢿ࢈ܗಛԽ ܕͷࢿΞϓϦΛ࡞ͬͯΔ'JOUFDIελʔ
τΞοϓ ▪ ΄ͲϑϦʔϥϯεΤϯδχΞ – ్தࣄۀձࣾͷதͷਓͬͨ ▪ ʙɿϒϧʔϞΠϯϕετϝϯτגࣜձࣾ ΛڞಉۀʢޙʹϒϧʔϞূ݊גࣜձࣾʹ߸ มߋʣ ▪ झຯɿཱྀߦɾੈքͷίϫʔΩϯάεϖʔεΊ͙ ΓʢϫʔέʔγϣϯతͳԿ͔ʣ @free_world21 THE FARM@NY CARR WORKPLACE@Chicago https://bloomo.co.jp/
એɿҰൠެ։͠·ͨ͠ʂ
એɿҰൠެ։͠·ͨ͠ʂ
ຊ
େΞʔΩςΫνϟʢʁʣ ϞϊϦεΞʔΩςΫνϟ ▪ ͍ΘΏΔຕؠ ▪ ͭͷϦϙδτϦʢϓϩδΣΫτʣ ʹͯ͢ͷίʔυ͕ೖͬͯΔ ▪ ݸਓ։ൃখن։ൃͰΔͳΒ͜ Ε
▪ ৫తʹ͍ͬͯ͘߹ɺਆͷ Λ࣋ͭγϯɾΤϯδχΞ͕ඞཁʹ ͳͬͯ͘Δؾ͕͢Δ ϚΠΫϩαʔϏεΞʔΩςΫνϟ ▪ ෳͷখ͞ͳαʔϏεʢσϓϩΠ Մೳͳ୯Ґ㲈ϓϩηεɺίϯς φʣ͕ڠௐ͋ͬͯͭ͠ͷେ͖ͳ αʔϏεΛ࣮ݱ͢Δ ▪ ,VCFSOFUFTͱηοτͰޠΒΕΔ ͜ͱ͕ଟ͍ʢಛʹ(Pք۾ʣ ▪ ਓۚ͋Δڧऀͷઓུʢͩͱ ࢥͬͯΔʣ ϞδϡϥʔϞϊϦεΞʔΩςΫνϟ ▪ ͦͦ͜͜େ͖͍մΛෳΈ߹Θͤ ͯͭͷେ͖ͳαʔϏεΛ࣮ݱ͢Δ ▪ ϞϊϦεͱϚΠΫϩαʔϏεͷதؒ ʢʁʣɻਖ਼֬ͳఆٛͳ͍ʢʁʣͱ ࢥͬͯΔ ▪ ϕετϓϥΫςΟεJTͲΕʁ
ΤϰΝϯήϦΦϯʹྫ͑Δͱ ϞϊϦεΞʔΩςΫνϟ ʹΩʔϧٞ ϚΠΫϩαʔϏεΞʔΩςΫνϟ ʹୈెΠϩϧ ϞδϡϥʔϞϊϦεΞʔΩςΫνϟ ʹθʔϨ
ϚΠΫϩαʔϏεͷىݯ ▪ +BNFT-FXJT BOE.BSUJO'PXMFS l.JDSPTFSWJDFT zNBSUJOGPXMFSDPN ▪ ϚΠΫϩαʔϏεͷରൺͱͯ͠ϞϊϦε͕ޠΕΔ
▪ ͦͷޙ֓೦ͱͯ͠ఆண͠ɺଟ͘ͷॻ੶ࣄྫ͕ग़൛ ͞ΕΔ https://martinfowler.com/articles/microservices.html
ϞϊϦεΞʔΩςΫνϟ https://www.atlassian.com/microservices/microservices-architecture/microservices-vs-monolith
ϚΠΫϩαʔϏεΞʔΩςΫνϟ https://www.atlassian.com/microservices/microservices-architecture/microservices-vs-monolith
ϚΠΫϩαʔϏεΞʔΩςΫνϟ https://www.atlassian.com/microservices/microservices-architecture/microservices-vs-monolith
ϞδϡϥʔϞϊϦεJTԿʁ https://arxiv.org/pdf/2401.11867 https://www.milanjovanovic.tech/blog/what-is-a-modular-monolith https://speakerdeck.com/shunsugai/railsdemodular- monolithwoxuan-ze-saretayu-she-nizhi-wen-sitainge-noyi-wen
ϞδϡϥʔϞϊϦεJTԿʁ ▪ దʹׂ͞Ε͍ͯΔ ▪ σϓϩΠ͢Δ࣌ʹ݁߹ͯͭ͠ͷαʔϏεʢϞϊϦ εʣʹ͢Δ ▪ ʰϚΠΫϩαʔϏεʹࢸΔ·Ͱͷલஈ֊ͱͯ͠༗༻ʱ ▪ ϑϨʔϜϫʔΫࣄྫ
– (PPHMF4FSJWDF8FBWFS (P – 4IPQJGZQBDXFSL 3BJMT – %KBOHP 1ZUIPO ࣮ϞδϡϥʔϞϊϦεͳؾ ͕͢Δ খྛͷཧղ ϞϊϦεͱϚΠΫϩαʔϏεͷ྆ํͷྑ͞ΛڗडͰ͖Δ Α͏ʹ͍͍ײ͡ʹׂͨ͠ͷ https://arxiv.org/pdf/2401.11867
ϒϧʔϞͷΏΔ;ΘϞδϡϥʔϞϊϦε ΞϓϦ༻"1*αʔό DPNNPO@NPEFMT DPOUSPMMFS BENJO༻SBJMTΞϓϦ DPNNPO@NPEFMT BENJO@NPEFMT BENJOଆDPOUSPMMFST BENJOଆWJFXT "1*ݺͼग़͠
"1*ݺͼग़͠
ϒϧʔϞͷΏΔ;ΘϞδϡϥʔϞϊϦε ΞϓϦ༻"1*αʔό DPNNPO@NPEFMT DPOUSPMMFS BENJO༻SBJMTΞϓϦ DPNNPO@NPEFMT BENJO@NPEFMT BENJOଆDPOUSPMMFST BENJOଆWJFXT "1*ݺͼग़͠
"1*ݺͼग़͠ • ڞ௨෦SBJMTFOHJOFͱ࣮ͯ͠ʢFOHJOF໊ɿ commonʣ • جຊతʹNPEFMͷΈΛஔ • BQJଆɺBENJOଆͷ(FNGJMFʹcommonΛهࡌ͢Δ • BQJଆͷNPEFMͯ͢BENJOଆͰѻ͑Δ • BQJଆͷapp/modelsҎԼʹಠࣗNPEFMఆٛ ͠ͳ͍ • BENJOଆapp/modelsҎԼʹBENJOଆͰ͔͠ Θͳ͍NPEFMΛఆٛ͢Δ
ϒϧʔϞͷΏΔ;ΘϞδϡϥʔϞϊϦε ΞϓϦ༻"1*αʔό DPNNPO@NPEFMT DPOUSPMMFS BENJO༻SBJMTΞϓϦ DPNNPO@NPEFMT BENJO@NPEFMT BENJOଆDPOUSPMMFST BENJOଆWJFXT "1*ݺͼग़͠
"1*ݺͼग़͠ • ϚΠάϨʔγϣϯBENJOଆͰҰׅͰߦ͏ • BQJଆʹςʔϒϧ͝ͱʹඞཁͳݖݶͷΈΛ༩͑Δ GRANT SELECT, INSERT ON on database_name.users; GRANT SELECT, INSERT, UPDATE ON on database_name.personal_infos; GRANT SELECT, INSERT, DELETE on database_name.likes;
ϒϧʔϞͷΏΔ;ΘϞδϡϥʔϞϊϦε ΞϓϦ༻"1*αʔό DPNNPO@NPEFMT DPOUSPMMFS BENJO༻SBJMTΞϓϦ DPNNPO@NPEFMT BENJO@NPEFMT BENJOଆDPOUSPMMFST BENJOଆWJFXT "1*ݺͼग़͠
"1*ݺͼग़͠ • BQJଆαʔόʢίϯςφʣʹapiͱcommonΛσϓ ϩΠ͢ΔσΟϨΫτϦҎԼʹฒྻʹஔ • BENJOଆαʔόʢίϯςφʣʹadminͱcommonΛ σϓϩΠ͢ΔσΟϨΫτϦҎԼʹฒྻʹஔ
ͬͯΈͨॴײ ▪ ྑ͔ͬͨ͜ͱ – ͷׂ͕໌֬ʹͳΓɺνʔϜͰ͖ͨ – ηΩϡΞʹͳͬͨ ▪ BQJଆͰʓʓͰ͖ͳ͍ɺΈ͍ͨͳSTQFDॻ͔ͳͯ͘͢Μͩ –
ʢ·ͩͬͯͳ͍͚ͲʣDPOUSPMMFSWJFXΖ͏ͱࢥ͑FOHJOFʹॻ͘͜ͱ͕ͰΔ ▪ ѱ͔ͬͨ͜ͱ – BQJଆͷػೳͳͷʹBENJOଆʹॻ͔ͳ͚Ε͍͚ͳ͍ͷ͕Ұ෦͋ͬͯɺ໌֬ͳ͕Ұ෦ Ͱ͖ͯͳ͍ – BQJɺBENJOͱ͚ͨͷͷɺͦΕͧΕ͕ڊେϞϊϦεʹͳΓͭͭ͋Δ
৽ͨͳ3BJMTϞδϡʔϧ͕ඞཁʹͳΓͭͭ͋Δ ΞϓϦ༻"1*αʔό DPNNPO@NPEFMT DPOUSPMMFS BENJO༻SBJMTΞϓϦ DPNNPO@NPEFMT BENJO@NPEFMT BENJOଆDPOUSPMMFST BENJOଆWJFXT "1*ݺͼग़͠
"1*ݺͼग़͠ ͚3BJMTϞδϡʔϧ DPNNPO@NPEFMT DPOUSPMMFS ︖
৽ͨͳ3BJMTϞδϡʔϧ͕ඞཁʹͳΓͭͭ͋Δ ΞϓϦ༻"1*αʔό DPNNPO@NPEFMT DPOUSPMMFS BENJO༻SBJMTΞϓϦ DPNNPO@NPEFMT BENJO@NPEFMT BENJOଆDPOUSPMMFST BENJOଆWJFXT "1*ݺͼग़͠
"1*ݺͼग़͠ ͚3BJMTϞδϡʔϧ DPNNPO@NPEFMT DPOUSPMMFS ︖
৽ͨͳ3BJMTϞδϡʔϧ͕ඞཁʹͳΓͭͭ͋Δ ΞϓϦ༻"1*αʔό DPNNPO@NPEFMT DPOUSPMMFS BENJO༻SBJMTΞϓϦ DPNNPO@NPEFMT BENJO@NPEFMT BENJOଆDPOUSPMMFST BENJOଆWJFXT "1*ݺͼग़͠
"1*ݺͼग़͠ .'͚3BJMTϞδϡʔϧ DPNNPO@NPEFMT DPOUSPMMFS ︖
৽ͨͳ3BJMTϞδϡʔϧ͕ඞཁʹͳΓͭͭ͋Δ ΞϓϦ༻"1*αʔό DPNNPO@NPEFMT DPOUSPMMFS BENJO༻SBJMTΞϓϦ DPNNPO@NPEFMT BENJO@NPEFMT BENJOଆDPOUSPMMFST BENJOଆWJFXT "1*ݺͼग़͠
"1*ݺͼग़͠ .'͚3BJMTϞδϡʔϧ DPNNPO@NPEFMT DPOUSPMMFS ︖ ͜͜࡞ͬͯ͘ΕΔਓΛ8FBSF)JSJOH