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
doyaaaaaken
April 18, 2022
Programming
3k
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
プラットフォーム型SaaSにおけるマルチテナント設計
SaaS.tech #2
『SaaSにおけるマルチテナント設計の悩みと勘所』
doyaaaaaken
April 18, 2022
More Decks by doyaaaaaken
See All by doyaaaaaken
コンパウンドスタートアップの“疎結合すぎない”チーム設計
doyaaaaaken
5
1.7k
スマートラウンドで試してみた ChatGPT活用成功/失敗事例8選!
doyaaaaaken
3
4.5k
Kotlin製自作OSSの普及戦略 ~kotlin-csvの実例を元に~ @Kotlin Fest 2022
doyaaaaaken
3
980
20220721 小規模フルリモート組織における入社者オンボーディング設計
doyaaaaaken
0
450
エンジニアによる事業指標計測のススメ
doyaaaaaken
1
480
考えることを仕組み化する
doyaaaaaken
1
760
プルリクへのセルフコメントという小技
doyaaaaaken
0
680
先取りKtor2.0
doyaaaaaken
1
720
Kotlinを研究する
doyaaaaaken
0
1.3k
Other Decks in Programming
See All in Programming
PHPで使える日時の表現と、その知り方 #frontend_phpcon_do
o0h
PRO
0
260
Hatena Engineer Seminar #37「言語モデルの活用に関する研究」
slashnephy
0
150
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
12
4.4k
Developing with AI Agents — Codex, Claude Code & Cowork Practical Guide
x5gtrn
PRO
0
1.3k
Javaの型とAI時代に型が大事な理由 / java types and type in AI era
kishida
2
150
LLM本来の能力を解き放つサンドボックス技術とAI民主化への適用
yukukotani
3
4.5k
Observability in Practice:Grafana 與 Edge Device SRE 的那些事
blueswen
0
180
なぜ型を書くのか? TSKaigi2026で改めて考える #tskaigi_smarthr
kajitack
0
160
Spec Driven Development | AI Summit Lisbon
danielsogl
PRO
0
210
ランチタイムLT会3周年!ランチタイムLT会を3年間続けられたお話
y0hgi
1
110
LaravelLive Japan の裏方のすべて — 第188回 PHP勉強会@東京 (2026-06-24)
suguruooki
2
120
Dataformのリポジトリを立ち上げるときにまずやること / dataform-day0-2026
snhryt
0
190
Featured
See All Featured
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1k
Writing Fast Ruby
sferik
630
63k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
170
How to Ace a Technical Interview
jacobian
281
24k
Building the Perfect Custom Keyboard
takai
2
800
First, design no harm
axbom
PRO
2
1.2k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.7k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
HDC tutorial
michielstock
2
720
Building an army of robots
kneath
306
46k
SEO for Brand Visibility & Recognition
aleyda
0
4.6k
Visualization
eitanlees
152
17k
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ͳͲ͔Β͓ؾܰʹ͝࿈བྷ͍ͩ͘͞ɻ