Upgrade to Pro — share decks privately, control downloads, hide ads and more …

B2Bクラウドサービスをゼロから立ち上げて、利用社数が1000社を超えるまでの道のり / a startup started B2B SaaS business from ground zero

920eef4c5c4eef5f6307c8492c54bed1?s=47 Kizashi Nagata
September 28, 2018

B2Bクラウドサービスをゼロから立ち上げて、利用社数が1000社を超えるまでの道のり / a startup started B2B SaaS business from ground zero

2018/9/28 デブサミ関西発表資料

920eef4c5c4eef5f6307c8492c54bed1?s=128

Kizashi Nagata

September 28, 2018
Tweet

Transcript

  1. ##Ϋϥ΢υαʔϏεΛθϩ͔Β ্ཱͪ͛ͯɺར༻ࣾ਺͕ࣾΛ ௒͑Δ·ͰͷಓͷΓ  %FWFMPQFST4VNNJU,"/4"* Ӭాɹஹ 1

  2. ࣗݾ঺հ w Ӭాɹஹʢ!LJ[BTIJʣ w גࣜձࣾΠϯήʔδ$50 w 4*FSɺ8FCܥͷձࣾΛܦͯɺݱࡏͷձࣾʹ w ࣇͷ෕ w

    ࠷ۙ΢ουύʔϜϨετΛࣗ࡞ͨ͠  
  3. !3

  4. Πϯήʔδ w גࣜձࣾΠϯήʔδʢ*/("(&*ODʣ w ॴࡏ஍ɿେࡕࢢ๺۠ w ೥ઃཱ w ໰͍߹Θͤ؅ཧΫϥ΢υαʔϏεʮ3FMBUJPOʯͷఏڙ !4

  5. 3FMBUJPO w ड৴ശΛνʔϜͰڞ༗͢ΔͨΊͷ໰͍߹Θͤ؅ཧαʔϏε w ར༻γʔϯɿTVQQPSU!FYBNQMFDPNͳͲͷ୅දϝʔϧ ΞυϨεΛෳ਺ਓͰରԠ͢Δ w (NBJMͱҧͬͯɺνʔϜͰڞ༗͢ΔͨΊʹඞཁͳػೳɺศ རͳػೳ͕౥ࡌ͞Ε͍ͯΔ w

    ϝʔϧɺ5XJUUFSɺ-*/&ͳͲෳ਺νϟωϧʹରԠ !5
  6. !6

  7. 3FMBUJPOػೳʢҰ෦ʣ w ঝೝػೳ w ೋॏૹ৴๷ࢭػೳ w ίϝϯτೖྗʢνʔϜ಺৘ใڞ༗ʣ w ༧໿ૹ৴ w

    ςϯϓϨʔτ w μογϡϘʔυ !7 ͳͲͳͲɺ νʔϜͰར༻͢ΔͨΊͷػೳ ͕ἧ͍ͬͯΔ w ݖݶ؅ཧ w मਖ਼಺༰ൺֱ w ܝࣔ൘ʢνʔϜ಺৘ใڞ༗ʣ
  8. 3FMBUJPOར༻ٕज़ w "84 &OHJOF:BSE  w 3PVUF 4 424 -BNCEB

    w 3VCZ 1FSM /PEF+4 1ZUIPO (P w 3BJMT "OHVMBS+4 w &MBTUJDTFBSDI w 1PTUHSF42- 3FEJT .FNDBDIFE  
  9. 3FMBUJPO w 3FMBUJPO͸Ϛϧνςφϯτܕ##4BB4Ͱ͢   IUUQTCMPHJOHBHFKQ

  10. ϚϧνςφϯτܕΞʔΩςΫνϟ ΞϓϦέʔγϣϯ ૊৫ ૊৫ ૊৫ ૊৫΍νʔϜʢʹςφϯτʣ ͕ΞϓϦέʔγϣϯʹ ରͯ͠ෳ਺ଘࡏ͢ΔΞʔΩ ςΫνϟΛϚϧνςφϯτܕ ΞʔΩςΫνϟͱݺͿ

     
  11. ͸͡Ίʹ θϩ͔ΒαʔϏεΛͨͪ͋͛ͯɺΑ͏΍͘ࣄۀͱͯ͠੒Γ ཱͭΑ͏ʹͳ͖ͬͯͨ ·ͩ·ͩ͜Ε͔Β͚ͩΕͲɺ͜͜·ͰΛৼΓฦͬͯΈ͍ͨ !11

  12. ໨࣍ w ͬ͟ͱ೥ˠ೥ΛৼΓฦΔ w ։ൃ؍఺ͰৼΓฦΔ w ࣮ࡍʹ͋ͬͨτϥϒϧ w ࠷ޙʹ !12

  13. ελʔτ w ए͘ͳ͍ਓͰελʔτʢΤϯδχΞ͸ਓʣ w ࣾ௕࿨ా w ΤϯδχΞӬాʢࢲʣ w ΤϯδχΞੴా !13

  14. ར༻ސ٬ਪҠ !14 ϩʔϯν      ϩʔϯν͔ͯ͠ΒيಓʹͷΔ·Ͱ͸͔ͳΓ͕͔͔࣌ؒͬͨ ސ٬͕֫ಘͰ͖ͣ৳ͼ೰Μͩ

    গͣͭ͠৳ͼ͖ͯͨ ·ͩ·ͩ͜Ε͔Β
  15. ೥ w ݄ͷలࣔձ͕ϩʔϯν໨ඪ w ݄͔Β։ൃΛελʔτͯ͠ɺ໿ϲ݄ͰϦϦʔε w ΦϑΟε͸ͳ͠ɻࣾ௕ͷࣗ୐ɺࣗशࣨ΍ਤॻؗͳͲɻ w ݄ʹϩʔϯν͕ͨ͠౰વސ٬͸θϩ w

    ಋೖ༧ఆސ٬΋ͳ͍··ελʔτ !15
  16. ೥ʙ೥ w ·ͬͨ͘ചΕͳ͍··೥ಥೖ w ࢿۚ΋ఈΛ͖͔͚ͭΔ w ౓ॏͳΔػೳ௥Ճͷ݁ՌɺΑ͏΍͘ސ٬͕૿͖͑ͯͨ w େֶͱ࿈ܞ͠ػցֶशΛ࢖ͬͨػೳͷݚڀΛ։࢝ w

    6*࡮৽ʢ͜͜ͰΑ͏΍͘3FMBUJPOͷϩΰ͕׬੒ʣ !16
  17. !17

  18. !18

  19. ೥ʙ೥ w αϙʔτϝϯόʔ૿һʢॳͷޏ༻ʣ w ౰ॳ͸ਓͰαϙʔτରԠ΋͍ͯͨ͠ w Ӧۀϝϯόʔ૿һ w ࣾ௕ͷܦӦۀઐ೦ w

    ػցֶशΛ࢖ͬͨςϯϓϨʔτਪનػೳϦϦʔε w ΤϯδχΞ͸଍Γͯͳ͍ !19
  20. ςϯϓϨʔτਪનػೳ঺հ !20 ड৴ ฦ৴ ςϯϓϨʔτ Λ௒͑ΔςϯϓϨʔτ͔Βબ୒͢Δͷ͸େม

  21. ςϯϓϨʔτਪનػೳ঺հ !21 աڈͷड৴ϝʔϧͱར༻ͨ͠ ςϯϓϨʔτͷϖΞ ֶशʹΑΓϞσϧੜ੒ ະ஌ͷϝʔϧ ਪન͞Εͨ ςϯϓϨʔτ

  22. ։ൃࢹ఺ͰৼΓฦΔ !22

  23. ٕज़બఆ w ೋਓ͸+BWBܦݧऀ͕ͩͬͨɺ3VCZ͕΍Γ͍ͨͶͱ͍͏ ͜ͱͰ3BJMTΛબ୒ w "84ΛੜͰ࢖͏ΑΓ͸ɺ1BB4͕͍͍ w Πϯϑϥͷ࡞ۀίετΛݮΒͨ͢Ί w )FSPLVͱ͍͏બ୒ࢶ΋͕͋ͬͨɺ೔ຊϦʔδϣϯ͋Γɺ

    44)ΞΫηεՄͱ͍͏͜ͱͰ&OHJOF:BSEΛબ୒ !23
  24. .71 NJOJNVNWJBCMFQSPEVDU w ࠷ॳͷϦϦʔεΛͲ͏͢Δ͔ʁ w ؤுͬͯͨ͘͞ΜͷػೳΛ͔ͭͬͯ͘ΒϦϦʔε͢ΔͷͰ ͸ͳ͘ɺ࠷খݶͰϦϦʔεͯ͠ɺ͋ͱ͸ސ٬ͷϑΟʔυόο ΫΛಘ͍ͯ͜͏ͱ͍͏ߟ͑ํ w ػೳ͕গͳ͗͢Δͱ੡඼ͷҹ৅͸ѱ͘ͳΔ͠ɺଟ͘ͳΔ

    ͱϦϦʔε·Ͱͷ͕͔͔࣌ؒͬͯ͠·͏ w ౰વ͍͖ͳΓڝ߹੡඼ͱಉ͡Ϩϕϧʹ͸౸ୡͰ͖ͳ͍ !24
  25. ϩʔϯν౰࣌ͷػೳʢϏδωε޲͚ʣ !25 w ঝೝػೳ w ೋॏૹ৴๷ࢭػೳ w μογϡϘʔυ w ίϝϯτೖྗʢνʔϜ಺৘ใڞ༗ʣ

    w ༧໿ૹ৴ w ςϯϓϨʔτ w 5XJUUFS w ݖݶ؅ཧ w मਖ਼಺༰ൺֱ w ܝࣔ൘
  26. ϩʔϯν౰࣌ͷػೳʢϝʔϧجຊʣ !26 w ϝʔϧड৴ʢసૹʣ w ϝʔϧૹ৴ʢςΩετʣ w ϝʔϧૹ৴ʢ)5.-ʣ w ࣗࣾ4.51αʔόʔઃఆ

    w ࣗࣾ101αʔόʔઃఆ w ࣗಈϧʔϧʢϑΟϧλʣ w ςϯϓϨʔτ w ݕࡧ w ҹ࡮ w ϝʔϧιʔεදࣔ w ૹ৴લϓϨϏϡʔ w ૹ৴औΓফ͠
  27. .71ͷબ୒͸ਖ਼͔ͬͨ͠ͷ͔ʁ w ΍͸Γػೳ͕গͳ͗ͨ͢ w μογϡϘʔυɺ5XJUUFSͳͲࠩผԽͰ͖Δཁૉ͸͍Εͨ w ސ٬͸ϝʔϧͷجຊػೳ͸͋ͬͯ౰વͱߟ͍͑ͯͨ
 (NBJMͰ͸Ͱ͖Δͷʹɾɾɾʣ w ͨͩ࠷௿ݶͰϦϦʔε͔ͨ͠Βͦ͜ސ٬͔Βຊ౰ʹඞཁͳ

    ػೳͷϑΟʔυόοΫΛಘΔ͜ͱ͕Ͱ͖ͨ !27 ਖ਼͔ͬͨ͠ʢ͕͔ۤͬͨ͠ʣ
  28. ސ٬ཁ๬͸Ͳ͜·Ͱड͚ೖΕΔͷ͔ w ϕʔεͱͳΔج४ w ੡඼ͷϙϦγʔʹ൓͠͸͠ͳ͍͔ʁ w ෳ਺ͷʢଟ਺ͷʣސ٬͕๬Ήػೳ͔ʁ w ݁ہ͸ਓͰٞ࿦ͯ͠൑அ w

    ड஫ͷܾఆཁҼͱͳΔػೳ w ࠓޙλʔήοτ͕૿͑Δ͔΋͠Εͳ͍ػೳ !28
  29. ʢྫʣҰׅૹ৴ػೳ w ෳ਺ϝʔϧΞυϨεʹҰׅͰϝʔϧૹ৴͍ͨ͠ͱ͍͏ཁ๬ ͸ଟ͍ w ࣮૷͢΂͖͔ʁ !29

  30. ࣮ࡍʹ͋ͬͨτϥϒϧ !30

  31. ܦݧͨ͠τϥϒϧʢʣ !31 4W ސ٬ଆ ϝʔϧαʔόʔ .9Ϩίʔυͷ༏ઌ౓  ͕ಉ͡ͳΒϥ΢ϯυϩϏϯ͞ΕΔ 4W 4W

    .94W .94W .94W %/4ઃఆ
  32. ܦݧͨ͠τϥϒϧʢʣ !32 4W ސ٬ଆ ϝʔϧαʔόʔ ϥ΢ϯυϩϏϯ͞ΕͯΔͳΒෛՙ෼ࢄ΋͞ΕͯΔͱࢥ͍ͬͯͨ ͔͋͠͠Δސ٬ͷαʔόʔ͔Β͸େྔͷϝʔϧ͕୆ʹूதͨ͠ ސ٬αʔόʔଆͰ*1ΞυϨε͕Ωϟογϡ͞Ε͍ͯͨ 4W 4W

  33. ܦݧͨ͠τϥϒϧʢʣղܾ !33 4W ސ٬ଆ ϝʔϧαʔόʔ ϝʔϧड৴αʔόʔ܈ͷલʹෛՙ෼ࢄثʢ)"1SPYZʣΛઃஔͨ͠ 4W 4W 4W9 .94W9

    %/4ઃఆ
  34. ܦݧͨ͠τϥϒϧʢʣ !34 w ϝʔϧͷҰཡͷදࣔʹ෼Ҏ্͔͔Δ w Α͘ݟΔͱVOJDPSOͷϝϞϦϑοτϓϦϯτ͕(௒͑ Aug 23 10:31:59 ip-172-31-XX-XX

    monit[5690]: 'unicorn_relationapp_worker3' mem amount of 2200536kB matches resource limit [mem amount>358401kB]
  35. ܦݧͨ͠τϥϒϧʢʣ !35 w ݪҼ͸ແବͳ"DUJWF3FDPSEΦϒδΣΫτͷੜ੒ class Mail < ActiveRecord::Base has_many :model_a

    # mail_id ΛؚΉ has_many :model_b # mail_id ΛؚΉ has_many :model_c # mail_id ΛؚΉ Mail.order(:id).eager_load( :model_a, :model_b, :model_c ).where(...)limit(limit).offset(offset) ؔ࿈ςʔϒϧͷ৘ใΛؚΊͯઌߦಡΈࠐΈͰҰؾʹऔಘ
  36. ܦݧͨ͠τϥϒϧʢʣ !36 w ੜ੒͞ΕΔ42-͸-&'5065&3+0*/ͷ࿈࠯ SELECT mails.*, model_a.*, model_b.*, model_c.* FROM

    mails LEFT OUTER JOIN model_a ON mails.id = model_a.mail_id LEFT OUTER JOIN model_b ON mails.id = model_b.mail_id LEFT OUTER JOIN model_c ON mails.id = model_c.mail_id : ࣮ࡍ͸΋ͬͱͨ͘͞Μ+0*/͍ͯͨ͠ ΄͍͠ϝʔϧσʔλ͸݅ͩͬͨͷʹɺ42-Ͱ͍݅ۙ݅਺Λऔಘ Ճ͑ͯɺ֤ϞσϧͷΦϒδΣΫτੜ੒ʹ͕͔͔͍࣌ؒͬͯͨ
  37. ܦݧͨ͠τϥϒϧʢʣղܾ !37 w ରࡦ w ݅਺ֻ͕͚ࢉͰ૿͑ͯ͠·͏+0*/͸ආ͚Δ w QMVDL DPMT Λ࢖ͬͯ"DUJWF3FDPSEΦϒδΣΫτΛੜ੒͠ͳ

    ͍Α͏ʹ͢Δʢ഑ྻͰฦͬͯ͘Δʣ w QMVDLͰ͸ඞཁͳ৘ใ͚ͩऔಘ͢Δ
  38. ύϑΥʔϚϯενϡʔχϯά w ػೳ΋େࣄ͚ͩͲɺ଎͞΋େࣄ w ސ٬͕গͳ͍͏ͪ͸αΫαΫಈ͘ w ύϑΥʔϚϯενϡʔχϯά͔͠͠ͳ͍ظؒΛઃ͚Δ !38

  39. ࠷ޙʹ !39

  40. ·ͱΊ w ࡀΛ৯ͬͨฏຌͳਓͰ##αʔϏεΛθϩ͔Β࡞ͬͨ w ࠷ॳ͸ചΕͣɺ͍ۤ࣌͠ظ͕͋ͬͨ w ސ٬ͱͱ΋ʹ3FMBUJPOΛ੒௕͖ͤͯͨ͞ w ސ٬͕૿͑Δͱ໰୊΋૿͖͑ͯͨ w

    ·ͩ·ͩ3FMBUJPO͸੒௕͍ͯ͘͠ !40
  41. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ ΠϯήʔδͰ͸ ΤϯδχΞΛืू͍ͯ͠·͢ ͝ڵຯͷ͋Δํ͸!LJ[BTIJ·Ͱ !41