Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
プラットフォーム型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.6k
Kotlin製自作OSSの普及戦略 ~kotlin-csvの実例を元に~ @Kotlin Fest 2022
doyaaaaaken
3
1k
20220721 小規模フルリモート組織における入社者オンボーディング設計
doyaaaaaken
0
470
エンジニアによる事業指標計測のススメ
doyaaaaaken
1
500
考えることを仕組み化する
doyaaaaaken
1
780
プルリクへのセルフコメントという小技
doyaaaaaken
0
690
先取りKtor2.0
doyaaaaaken
1
730
Kotlinを研究する
doyaaaaaken
0
1.3k
Other Decks in Programming
See All in Programming
コードレビューのボトルネックを"する側"と"される側"の両面から解消する
yub0n
2
1.5k
【加筆修正版】Laravel のアプリケーションをどこにデプロイするか #phpcon_ehime
akase244
0
150
モジュールの視点からSwiftを読み解く #iosdc
s_shimotori
0
350
Rでドレミ/Do-Re-Mi_with_R
florets1
0
120
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
440
Jetpack Compose Mechanisms
skydoves
2
450
Starting & Sustaining Code-Based E2E Testing for Non-Coding QA Teams( #jasstniigata )
teyamagu
PRO
1
910
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.8k
[ハンズオン]AIへの指示だけで「五目並べ」を作ってみよう
satoshi256kbyte
1
350
Turning Architecture into Unit Tests in the AI Era (NSSpain XIV)
steliosf
PRO
1
130
20260914 AIエージェント時代のPlatform Engineering LLM基盤とプロダクトの責務境界線
kanfab1
7
2.4k
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
480
Featured
See All Featured
Into the Great Unknown - MozCon
thekraken
41
2.8k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
20k
[SF Ruby Conf 2025] Rails X
palkan
3
1.4k
Google's AI Overviews - The New Search
badams
0
1.6k
WENDY [Excerpt]
tessaabrams
14
40k
Are puppies a ranking factor?
jonoalderson
2
4k
Agile that works and the tools we love
rasmusluckow
331
22k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.7k
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
250
Mind Mapping
helmedeiros
1
390
Color Theory Basics | Prateek | Gurzu
gurzu
1
480
Building AI with AI
inesmontani
PRO
1
1.3k
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ͳͲ͔Β͓ؾܰʹ͝࿈བྷ͍ͩ͘͞ɻ