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
5
2.7k
プラットフォーム型SaaSにおけるマルチテナント設計
SaaS.tech #2
『SaaSにおけるマルチテナント設計の悩みと勘所』
doyaaaaaken
April 18, 2022
Tweet
Share
More Decks by doyaaaaaken
See All by doyaaaaaken
コンパウンドスタートアップの“疎結合すぎない”チーム設計
doyaaaaaken
5
1.4k
スマートラウンドで試してみた ChatGPT活用成功/失敗事例8選!
doyaaaaaken
3
4.2k
Kotlin製自作OSSの普及戦略 ~kotlin-csvの実例を元に~ @Kotlin Fest 2022
doyaaaaaken
3
730
20220721 小規模フルリモート組織における入社者オンボーディング設計
doyaaaaaken
0
310
エンジニアによる事業指標計測のススメ
doyaaaaaken
1
350
考えることを仕組み化する
doyaaaaaken
1
640
プルリクへのセルフコメントという小技
doyaaaaaken
0
570
先取りKtor2.0
doyaaaaaken
1
590
Kotlinを研究する
doyaaaaaken
0
1.1k
Other Decks in Programming
See All in Programming
とにかくAWS GameDay!AWSは世界の共通言語! / Anyway, AWS GameDay! AWS is the world's lingua franca!
seike460
PRO
1
800
アジャイルを支えるテストアーキテクチャ設計/Test Architecting for Agile
goyoki
9
3.2k
Enabling DevOps and Team Topologies Through Architecture: Architecting for Fast Flow
cer
PRO
0
210
Jakarta Concurrencyによる並行処理プログラミングの始め方 (JJUG CCC 2024 Fall)
tnagao7
1
280
見せてあげますよ、「本物のLaravel批判」ってやつを。
77web
7
7.4k
リアーキテクチャxDDD 1年間の取り組みと進化
hsawaji
1
200
推し活の ハイトラフィックに立ち向かう Railsとアーキテクチャ - Kaigi on Rails 2024
falcon8823
6
2.8k
as(型アサーション)を書く前にできること
marokanatani
2
390
What’s New in Compose Multiplatform - A Live Tour (droidcon London 2024)
zsmb
1
460
Amazon Bedrock Agentsを用いてアプリ開発してみた!
har1101
0
310
From Subtype Polymorphism To Typeclass-based Ad hoc Polymorphism- An Example
philipschwarz
PRO
0
200
Jakarta EE meets AI
ivargrimstad
0
330
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
54
9k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
400
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
A Tale of Four Properties
chriscoyier
156
23k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
700
Agile that works and the tools we love
rasmusluckow
327
21k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
109
49k
Keith and Marios Guide to Fast Websites
keithpitt
409
22k
Imperfection Machines: The Place of Print at Facebook
scottboms
264
13k
[RailsConf 2023] Rails as a piece of cake
palkan
51
4.9k
Code Review Best Practice
trishagee
64
17k
Unsuck your backbone
ammeep
668
57k
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ͳͲ͔Β͓ؾܰʹ͝࿈བྷ͍ͩ͘͞ɻ