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
プラットフォーム型SaaSにおけるマルチテナント設計
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
doyaaaaaken
April 18, 2022
Programming
5
2.9k
プラットフォーム型SaaSにおけるマルチテナント設計
SaaS.tech #2
『SaaSにおけるマルチテナント設計の悩みと勘所』
doyaaaaaken
April 18, 2022
Tweet
Share
More Decks by doyaaaaaken
See All by doyaaaaaken
コンパウンドスタートアップの“疎結合すぎない”チーム設計
doyaaaaaken
5
1.6k
スマートラウンドで試してみた ChatGPT活用成功/失敗事例8選!
doyaaaaaken
3
4.4k
Kotlin製自作OSSの普及戦略 ~kotlin-csvの実例を元に~ @Kotlin Fest 2022
doyaaaaaken
3
930
20220721 小規模フルリモート組織における入社者オンボーディング設計
doyaaaaaken
0
420
エンジニアによる事業指標計測のススメ
doyaaaaaken
1
460
考えることを仕組み化する
doyaaaaaken
1
740
プルリクへのセルフコメントという小技
doyaaaaaken
0
660
先取りKtor2.0
doyaaaaaken
1
690
Kotlinを研究する
doyaaaaaken
0
1.3k
Other Decks in Programming
See All in Programming
Apache Iceberg V3 and migration to V3
tomtanaka
0
210
Geminiの機能を調べ尽くしてみた
naruyoshimi
0
120
[KNOTS 2026登壇資料]AIで拡張‧交差する プロダクト開発のプロセス および携わるメンバーの役割
hisatake
0
330
2026/02/04 AIキャラクター人格の実装論 口 調の模倣から、コンテキスト制御による 『思想』と『行動』の創発へ
sr2mg4
0
540
Rails Girls Tokyo 18th GMO Pepabo Sponsor Talk
yutokyokutyo
0
150
今、アーキテクトとして 品質保証にどう関わるか
nealle
0
170
AIコーディングの理想と現実 2026 | AI Coding: Expectations vs. Reality 2026
tomohisa
0
360
Agent Skills Workshop - AIへの頼み方を仕組み化する
gotalab555
9
4.2k
Lambda のコードストレージ容量に気をつけましょう
tattwan718
0
190
JPUG勉強会 OSSデータベースの内部構造を理解しよう
oga5
2
200
その「common」ディレクトリ、腐っていませんか?
kinocoboy2
1
100
生成AIを使ったコードレビューで定性的に品質カバー
chiilog
1
300
Featured
See All Featured
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
The Spectacular Lies of Maps
axbom
PRO
1
560
Site-Speed That Sticks
csswizardry
13
1.1k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
0
150
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Between Models and Reality
mayunak
1
210
Building Applications with DynamoDB
mza
96
6.9k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
450
エンジニアに許された特別な時間の終わり
watany
106
230k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
810
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
0
440
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.7k
Transcript
2022/04/20 @SaaS.tech #2 খࢁ ݈ଠ(Koyama Kenta) @doyaaaaaken ϓϥοτϑΥʔϜܕSaaSʹ͓͚Δ Ϛϧνςφϯτઃܭ
ࣗݾհ • ࣄ • גࣜձࣾεϚʔτϥϯυ CTO / ۀϝϯόʔ • αʔόαΠυKotlinɾVueJSΛར༻
• “Server-Side Kotlin Meetup” ͱ͍͏ΠϕϯτΛओ࠵ • OSS׆ಈ • kotlin-csvͷ࡞ऀʢ⭐: 400ʣ • KtorɾExposedɾkotestͷίϯτϦϏϡʔλ @doyaaaaaken
Ϛϧνςφϯτͷσʔλઃܭ 3ύλʔϯ AWS SaaS FactoryϗϫΠτϖʔύͩͱҎԼͷఆٛ 1. αΠϩ DBΠϯελϯεϨϕϧͰςφϯτ 2.
ϒϦοδ DBΠϯελϯεڞ༗͠ɺεΩʔϚϨϕϧͰςφϯτ 3. ϓʔϧ DBΠϯελϯεɾεΩʔϚڞ༻͠ɺςʔϒϧͰςφϯτIDΛ࠾൪͠ ࢀߟɿʰ1PTUHSF42-ͷߦϨϕϧͷηΩϡϦςΟΛඋ͑ͨϚϧνςφϯτσʔλͷʱIUUQTBXTBNB[PODPNKQCMPHTOFXTNVMUJUFOBOUEBUBJTPMBUJPOXJUIQPTUHSFTRMSPXMFWFMTFDVSJUZ
Ϛϧνςφϯτͷσʔλઃܭ 3ύλʔϯ AWS SaaS FactoryϗϫΠτϖʔύͩͱҎԼͷఆٛ 1. αΠϩ DBΠϯελϯεϨϕϧͰ 2.
ϒϦοδ DBΠϯελϯεڞ༗ɺεΩʔϚΛ 3. ϓʔϧ DBΠϯελϯεɾεΩʔϚڞ༻ɺ֤ςʔϒϧͰςφϯτIDΛ࠾൪͠ ࢀߟɿʰ1PTUHSF42-ͷߦϨϕϧͷηΩϡϦςΟΛඋ͑ͨϚϧνςφϯτσʔλͷʱIUUQTBXTBNB[PODPNKQCMPHTOFXTNVMUJUFOBOUEBUBJTPMBUJPOXJUIQPTUHSFTRMSPXMFWFMTFDVSJUZ εϚʔτϥϯυ͜ͷઃܭ👇
Q. ͳͥϓʔϧܕʹͨ͠ͷʁ🤔
A. ϓϥοτϑΥʔϜܕSaaS͔ͩΒ
A. ϓϥοτϑΥʔϜܕSaaS͔ͩΒ 👀
લఏɿϏδωεϞσϧ ελʔτΞοϓ͕ձࣾܦӦ͢Δ্ͰͷඞਢۀΛαϙʔτ͢ΔSaaS • גओ૯ձ • ূ݊ཧʢגࣜɾετοΫΦϓγϣϯཧʣ • ࢿຊࡦ • ܦӦཧ
• גओ໊ཧ • …etc
લఏɿϏδωεϞσϧ SaaSͳͷͰελʔτΞοϓʢ2,500ࣾʣ֤ࣾͷσʔλಠཱ ελʔτΞοϓ ελʔτΞοϓ ελʔτΞοϓ ελʔτΞοϓ ελʔτΞοϓ ελʔτΞοϓ גओ૯ձ
גࣜɾSO ܾࢉใ BS/PL ࢿຊࡦ ݄࣍ܦӦࢦඪ ֤ࣾಠཱͨ͠σʔλΛ࣋ͭ גओ໊
͜͜·ͰSaaS😌
લఏɿϏδωεϞσϧ ࢿՈʢVCΤϯδΣϧʣ͕ελʔτΞοϓͷσʔλΛӾཡՄೳ ελʔτΞοϓ ελʔτΞοϓ ελʔτΞοϓ ελʔτΞοϓ ελʔτΞοϓ ελʔτΞοϓ ࢿՈ
ࢿՈ ࢿՈ ࢿՈ ࢿઌཧɾࢿҊ݅ཧ4BB4 ձࣾܦӦαϙʔτ4BB4
લఏɿϏδωεϞσϧ ࢜ۀʢหޢ࢜ɾ੫ཧ࢜ɾࠪ๏ਓͳͲʣ͕ଞࣾʹΞΫηεՄೳ ελʔτΞοϓ ελʔτΞοϓ ελʔτΞοϓ ελʔτΞοϓ ελʔτΞοϓ ελʔτΞοϓ ࢿՈ
ࢿՈ ࢿՈ ࢿՈ ࢜ۀ ࢜ۀ ࢜ۀ
SaaS͚ͩͲϓϥοτϑΥʔϜ😲
ϓϥοτϑΥʔϜܕSaaSͷ2ͭͷಛ ಛᶃɿςφϯτΛލ͍ͩσʔλΞΫηε͕͋Δ ྫʣࢿՈ͕ෳͷࢿઌελʔτΞοϓͷࢿύϑΥʔϚϯεΛԣ۲ͰධՁ
ϓϥοτϑΥʔϜܕSaaSͷ2ͭͷಛ ಛᶃɿςφϯτΛލ͍ͩσʔλΞΫηε͕͋Δ ϓʔϧܕͰͳ͍߹ʢDBΠϯελϯεεΩʔϚΛͨ͠߹ʣͷ՝ ɹෳࣾσʔλͷҰׅऔಘ͕͍͠ ʢSQLΛεΩʔϚ͝ͱΠϯελϯε͝ͱʹ࣮ߦ͢Δඞཁ͋Γʣ ϓʔϧܕʢΠϯελϯεɾεΩʔϚڞ༗ܕʣ͕ϕλʔ
ϓϥοτϑΥʔϜܕSaaSͷ2ͭͷಛ ಛᶄɿςφϯτ͕ଟ͍ͨΊɺϚΠάϨʔγϣϯʹ͕͔͔࣌ؒΔ ࢀߟɿʰͭΒ͘ͳ͍ϚϧνςφϯγʔΛٻΊͯશͯݟͤ·͢ʂ4NBSU)3σʔλϕʔεҠߦϓϩδΣΫτͷཪଆCVJMEFSTDPOʱIUUQTTQFBLFSEFDLDPNQVSJOUBJCVJMEFSTDPO ྫʣSmartHR͞Μ͕ϚϧνςφϯτϚΠάϨʔγϣϯ100࣌ؒΛղܾͨ͠
ϓϥοτϑΥʔϜܕSaaSͷ2ͭͷಛ ಛᶄɿςφϯτ͕ଟ͍ͨΊɺϚΠάϨʔγϣϯʹ͕͔͔࣌ؒΔ ϓʔϧܕͰͳ͍߹ʢDBΠϯελϯεεΩʔϚΛͨ͠߹ʣͷ՝ ΠϯελϯεεΩʔϚΛ͢ΔͱϚΠάϨʔγϣϯ͕࣌ؒ͘ͳΔ ʢ1ςφϯτͷϚΠάϨʔγϣϯ͕30ඵͱ͢Δͱ10,000ςφϯτͰ83࣌ؒ…ʣ ࢀߟɿʰͭΒ͘ͳ͍ϚϧνςφϯγʔΛٻΊͯશͯݟͤ·͢ʂ4NBSU)3σʔλϕʔεҠߦϓϩδΣΫτͷཪଆCVJMEFSTDPOʱIUUQTTQFBLFSEFDLDPNQVSJOUBJCVJMEFSTDPO ϓʔϧܕʢΠϯελϯεɾεΩʔϚڞ༗ܕʣ͕ϕλʔ
ʲ݁ʳϓϥοτϑΥʔϜܕSaaS Ͱϓʔϧܕ͕͍͍ͯΔ😉
εϚʔτϥϯυ͚ͩͷ ٕज़త՝Ͱʁ😓
ଞͷձࣾͰϓϥοτϑΥʔϜܕ ʹͳΔ͜ͱ͋Γ͑·͢😉
ϓϥοτϑΥʔϜܕʹͳΓͦ͏ͳྫ • ςφϯτاۀෳΛαϙʔτ͢ΔΑ͏ͳ৬ۀ͕͋Δ߹ • SmartHR͞ΜͰ͍͏ࣾ࿑࢜ • freee͞ΜͰ͍͏੫ཧ࢜ɾձܭ࢜ ࣗ͝ͷSaaSͷۀքʹͯΊͯఆͯ͠ΈΔͱ͍͍͔͠Ε·ͤΜ
͕࣌ؒ༨ͬͨͷͰ😉
Q. ϓʔϧܕͩͱηΩϡϦςΟ ා͘ͳ͍ʁͲΜͳͯ͠Δͷʁ😲
A. ΞϓϦέʔγϣϯϨΠϠͰ ଟޚ 💪
ଟޚͱͯͬͯ͠Δ͜ͱͬ͘͟Γઆ໌ • ίϯτϩʔϥ • URLʹೖͬͨςφϯτIDΛνΣοΫ • υϝΠϯϞσϧ • υϝΠϯϞσϧΛར༻͢ΔͱςφϯτͷऔΓҧ͕͑ͳ͘ͳΔΑ͏ͳ্࣮ͷΛ͍ͯ͠Δ •
σʔλΞΫηε • શͯͷࢀরɾ࡞ɾߋ৽ɾআॲཧʹʢෆཁͰ͋ͬͯʣඞͣςφϯτIDͷνΣοΫΛೖΕΔ • ผͷIDͱऔΓҧ͑ͳ͍Α͏ઐ༻ͷܕʢྫɿStartupIdܕʣΛఆٛ • ςʔϒϧઃܭ • શͯͷςʔϒϧʹςφϯτIDΛೖΕΔʢͨͱ͑ෆཁͰ͋ͬͯҰԠೖΕΔʣ
DBϨΠϠͷޚҊ • ΞϓϦϨΠϠ͚ͩͩͱා͍ͷͰRow-Level Securityͱ͔ؾʹͳ͍ͬͯΔ ʰϚϧνςφϯτ4BB4ͷςφϯτΛ3PX-FWFM4FDVSJUZʹҠߦͨ͠ʱIUUQTCVJMEFSTCPYDPSQTBOTBODPNFOUSZ
(࠷ޙʹ) εϚʔτϥϯυઈࢍ࠾༻தͰ͢ ελʔτΞοϓ2,500͕ࣾొ͢Δσʔλڞ༗ɾཧϓϥοτϑΥʔϜΛ Ұॹʹ࡞ͬͯ͘ΕΔํΛ୳͍ͯ͠·͢ ˞·ͣΧδϡΞϧ໘ஊ͔Βʂ5XJUUFS%.ɾ8BOUFEMZͳͲ͔Β͓ؾܰʹ͝࿈བྷ͍ͩ͘͞ɻ