$30 off During Our Annual Pro Sale. View Details »

プラットフォーム型SaaSにおけるマルチテナント設計

 プラットフォーム型SaaSにおけるマルチテナント設計

SaaS.tech #2
『SaaSにおけるマルチテナント設計の悩みと勘所』

doyaaaaaken

April 18, 2022
Tweet

More Decks by doyaaaaaken

Other Decks in Programming

Transcript

  1. 2022/04/20 @SaaS.tech #2 খࢁ ݈ଠ(Koyama Kenta) @doyaaaaaken ϓϥοτϑΥʔϜܕSaaSʹ͓͚Δ Ϛϧνςφϯτઃܭ 

  2. ࣗݾ঺հ • ࢓ࣄ • גࣜձࣾεϚʔτϥ΢ϯυ CTO / ૑ۀϝϯόʔ • αʔόαΠυKotlinɾVueJSΛར༻

    • “Server-Side Kotlin Meetup” ͱ͍͏ΠϕϯτΛओ࠵ • OSS׆ಈ • kotlin-csvͷ࡞ऀʢ⭐: 400ʣ • KtorɾExposedɾkotest౳ͷίϯτϦϏϡʔλ  @doyaaaaaken
  3. Ϛϧνςφϯτͷσʔλ෼཭ઃܭ 3ύλʔϯ AWS SaaS FactoryϗϫΠτϖʔύͩͱҎԼͷఆٛ 1. αΠϩ 
 DBΠϯελϯεϨϕϧͰςφϯτ෼཭ 2.

    ϒϦοδ 
 DBΠϯελϯε͸ڞ༗͠ɺεΩʔϚϨϕϧͰςφϯτ෼཭ 3. ϓʔϧ 
 DBΠϯελϯεɾεΩʔϚ͸ڞ༻͠ɺςʔϒϧͰςφϯτIDΛ࠾൪͠෼཭  ࢀߟɿʰ1PTUHSF42-ͷߦϨϕϧͷηΩϡϦςΟΛඋ͑ͨϚϧνςφϯτσʔλͷ෼཭ʱIUUQTBXTBNB[PODPNKQCMPHTOFXTNVMUJUFOBOUEBUBJTPMBUJPOXJUIQPTUHSFTRMSPXMFWFMTFDVSJUZ
  4. Ϛϧνςφϯτͷσʔλ෼཭ઃܭ 3ύλʔϯ AWS SaaS FactoryϗϫΠτϖʔύͩͱҎԼͷఆٛ 1. αΠϩ 
 DBΠϯελϯεϨϕϧͰ෼཭ 2.

    ϒϦοδ 
 DBΠϯελϯε͸ڞ༗ɺεΩʔϚΛ෼཭ 3. ϓʔϧ 
 DBΠϯελϯεɾεΩʔϚ͸ڞ༻ɺ֤ςʔϒϧͰςφϯτIDΛ࠾൪͠෼཭  ࢀߟɿʰ1PTUHSF42-ͷߦϨϕϧͷηΩϡϦςΟΛඋ͑ͨϚϧνςφϯτσʔλͷ෼཭ʱIUUQTBXTBNB[PODPNKQCMPHTOFXTNVMUJUFOBOUEBUBJTPMBUJPOXJUIQPTUHSFTRMSPXMFWFMTFDVSJUZ εϚʔτϥ΢ϯυ͸͜ͷઃܭ👇
  5. Q. ͳͥϓʔϧܕʹͨ͠ͷʁ🤔 

  6. A. ϓϥοτϑΥʔϜܕSaaS͔ͩΒ 

  7. A. ϓϥοτϑΥʔϜܕSaaS͔ͩΒ  👀

  8. લఏɿϏδωεϞσϧ ελʔτΞοϓ͕ձࣾܦӦ͢Δ্Ͱͷඞਢۀ຿Λαϙʔτ͢ΔSaaS • גओ૯ձ • ূ݊؅ཧʢגࣜɾετοΫΦϓγϣϯ؅ཧʣ • ࢿຊ੓ࡦ • ܦӦ؅ཧ

    • גओ໊฽؅ཧ • …etc 
  9. લఏɿϏδωεϞσϧ SaaSͳͷͰελʔτΞοϓʢ2,500ࣾʣ֤ࣾͷσʔλ͸ಠཱ  ελʔτΞοϓ ελʔτΞοϓ ελʔτΞοϓ ελʔτΞοϓ ελʔτΞοϓ ελʔτΞοϓ גओ૯ձ

    גࣜɾSO ܾࢉ৘ใ BS/PL ࢿຊ੓ࡦ ݄࣍ܦӦࢦඪ ֤ࣾಠཱͨ͠σʔλΛ࣋ͭ גओ໊฽
  10. ͜͜·Ͱ͸SaaS😌 

  11. લఏɿϏδωεϞσϧ ౤ࢿՈʢVC΍ΤϯδΣϧʣ͕ελʔτΞοϓͷσʔλΛӾཡՄೳ  ελʔτΞοϓ ελʔτΞοϓ ελʔτΞοϓ ελʔτΞοϓ ελʔτΞοϓ ελʔτΞοϓ ౤ࢿՈ

    ౤ࢿՈ ౤ࢿՈ ౤ࢿՈ ౤ࢿઌ؅ཧɾ౤ࢿҊ݅؅ཧ4BB4 ձࣾܦӦαϙʔτ4BB4
  12. લఏɿϏδωεϞσϧ ࢜ۀʢหޢ࢜ɾ੫ཧ࢜ɾ؂ࠪ๏ਓͳͲʣ͕ଞࣾʹΞΫηεՄೳ  ελʔτΞοϓ ελʔτΞοϓ ελʔτΞοϓ ελʔτΞοϓ ελʔτΞοϓ ελʔτΞοϓ ౤ࢿՈ

    ౤ࢿՈ ౤ࢿՈ ౤ࢿՈ ࢜ۀ ࢜ۀ ࢜ۀ
  13. SaaS͚ͩͲϓϥοτϑΥʔϜ😲 

  14. ϓϥοτϑΥʔϜܕSaaSͷ2ͭͷಛ௃ ಛ௃ᶃɿςφϯτΛލ͍ͩσʔλΞΫηε͕͋Δ  ྫʣ౤ࢿՈ͕ෳ਺ͷ౤ࢿઌελʔτΞοϓ΁ͷ౤ࢿύϑΥʔϚϯεΛԣ۲ͰධՁ

  15. ϓϥοτϑΥʔϜܕSaaSͷ2ͭͷಛ௃ ಛ௃ᶃɿςφϯτΛލ͍ͩσʔλΞΫηε͕͋Δ ϓʔϧܕͰͳ͍৔߹ʢDBΠϯελϯε΍εΩʔϚΛ෼཭ͨ͠৔߹ʣͷ՝୊ 
 ɹෳ਺ࣾσʔλͷҰׅऔಘ͕೉͍͠ 
 ʢSQLΛεΩʔϚ͝ͱ΍Πϯελϯε͝ͱʹ࣮ߦ͢Δඞཁ͋Γʣ  ϓʔϧܕʢΠϯελϯεɾεΩʔϚڞ༗ܕʣ͕ϕλʔ

  16. ϓϥοτϑΥʔϜܕSaaSͷ2ͭͷಛ௃ ಛ௃ᶄɿςφϯτ਺͕ଟ͍ͨΊɺϚΠάϨʔγϣϯʹ͕͔͔࣌ؒΔ  ࢀߟɿʰͭΒ͘ͳ͍ϚϧνςφϯγʔΛٻΊͯશͯݟͤ·͢ʂ4NBSU)3σʔλϕʔεҠߦϓϩδΣΫτͷཪଆCVJMEFSTDPOʱIUUQTTQFBLFSEFDLDPNQVSJOUBJCVJMEFSTDPO ྫʣSmartHR͞Μ͕ϚϧνςφϯτϚΠάϨʔγϣϯ100࣌ؒΛղܾͨ͠࿩

  17. ϓϥοτϑΥʔϜܕSaaSͷ2ͭͷಛ௃ ಛ௃ᶄɿςφϯτ਺͕ଟ͍ͨΊɺϚΠάϨʔγϣϯʹ͕͔͔࣌ؒΔ ϓʔϧܕͰͳ͍৔߹ʢDBΠϯελϯε΍εΩʔϚΛ෼཭ͨ͠৔߹ʣͷ՝୊ 
 Πϯελϯε΍εΩʔϚΛ෼཭͢ΔͱϚΠάϨʔγϣϯ͕࣌ؒ௕͘ͳΔ ʢ1ςφϯτͷϚΠάϨʔγϣϯ͕30ඵͱ͢Δͱ10,000ςφϯτͰ83࣌ؒ…ʣ  ࢀߟɿʰͭΒ͘ͳ͍ϚϧνςφϯγʔΛٻΊͯશͯݟͤ·͢ʂ4NBSU)3σʔλϕʔεҠߦϓϩδΣΫτͷཪଆCVJMEFSTDPOʱIUUQTTQFBLFSEFDLDPNQVSJOUBJCVJMEFSTDPO ϓʔϧܕʢΠϯελϯεɾεΩʔϚڞ༗ܕʣ͕ϕλʔ

  18. ʲ݁࿦ʳϓϥοτϑΥʔϜܕSaaS 
 Ͱ͸ϓʔϧܕ͕޲͍͍ͯΔ😉 

  19. εϚʔτϥ΢ϯυ͚ͩͷ 
 ٕज़త՝୊Ͱ͸ʁ😓 

  20. ଞͷձࣾͰ΋ϓϥοτϑΥʔϜܕ ʹͳΔ͜ͱ͸͋Γ͑·͢😉 

  21. ϓϥοτϑΥʔϜܕʹͳΓͦ͏ͳྫ • ςφϯτاۀෳ਺Λαϙʔτ͢ΔΑ͏ͳ৬ۀ͕͋Δ৔߹ • SmartHR͞ΜͰ͍͏ࣾ࿑࢜ • freee͞ΜͰ͍͏੫ཧ࢜ɾձܭ࢜  ࣗ͝਎ͷSaaSͷۀքʹ౰ͯ͸Ίͯ૝ఆͯ͠ΈΔͱ͍͍͔΋͠Ε·ͤΜ

  22. ͕࣌ؒ༨ͬͨͷͰ😉 

  23. Q. ϓʔϧܕͩͱηΩϡϦςΟ 
 ා͘ͳ͍ʁͲΜͳ޻෉ͯ͠Δͷʁ😲 

  24. A. ΞϓϦέʔγϣϯϨΠϠͰ 
 ଟ૚๷ޚ 💪 

  25. ଟ૚๷ޚͱͯ͠΍ͬͯΔ͜ͱͬ͘͟Γઆ໌ • ίϯτϩʔϥ૚ • URL಺ʹೖͬͨςφϯτIDΛνΣοΫ • υϝΠϯϞσϧ૚ • υϝΠϯϞσϧΛར༻͢ΔͱςφϯτͷऔΓҧ͕͑ͳ͘ͳΔΑ͏ͳ࣮૷্ͷ޻෉Λ͍ͯ͠Δ •

    σʔλΞΫηε૚ • શͯͷࢀরɾ࡞੒ɾߋ৽ɾ࡟আॲཧʹ͸ʢෆཁͰ͋ͬͯ΋ʣඞͣςφϯτIDͷνΣοΫΛೖΕΔ • ผͷIDͱऔΓҧ͑ͳ͍Α͏ઐ༻ͷܕʢྫɿStartupIdܕʣΛఆٛ • ςʔϒϧઃܭ • શͯͷςʔϒϧʹςφϯτIDΛೖΕΔʢͨͱ͑ෆཁͰ͋ͬͯ΋ҰԠೖΕΔʣ 
  26. DBϨΠϠͷ๷ޚҊ • ΞϓϦϨΠϠ͚ͩͩͱා͍ͷͰRow-Level Securityͱ͔͸ؾʹͳ͍ͬͯΔ  ʰϚϧνςφϯτ4BB4ͷςφϯτ෼཭Λ3PX-FWFM4FDVSJUZʹҠߦͨ͠ʱIUUQTCVJMEFSTCPYDPSQTBOTBODPNFOUSZ

  27. (࠷ޙʹ) εϚʔτϥ΢ϯυઈࢍ࠾༻தͰ͢ ελʔτΞοϓ2,500͕ࣾొ࿥͢Δσʔλڞ༗ɾ؅ཧϓϥοτϑΥʔϜΛ 
 Ұॹʹ࡞ͬͯ͘ΕΔํΛ୳͍ͯ͠·͢  ˞·ͣ͸ΧδϡΞϧ໘ஊ͔Βʂ5XJUUFS%.ɾ8BOUFEMZͳͲ͔Β͓ؾܰʹ͝࿈བྷ͍ͩ͘͞ɻ