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

BtoBスタートアップとサーバーレス / Serverless Architecture for a BtoB Startup

BtoBスタートアップとサーバーレス / Serverless Architecture for a BtoB Startup

1cf6e2aa4d9be4d8ab8ec45598ee3f1c?s=128

Yosuke Hizen

August 21, 2018
Tweet

Transcript

  1. BtoBελʔτΞοϓͱ αʔόʔϨε B2BελʔτΞοϓΤϯδχΞφΠτ 2018.08.21 HiCustomer inc. ංલ༸༎ @hizeny

  2. • ංલ༸༎ • @hizeny • ڞಉ૑ۀऀ VP of Engineering •

    ࢁͳͲΛ૸Γ·͢
  3. HiCustomer inc. • 2017೥12݄૑ۀ • ϑϧλΠϜ3ਓ / ۀ຿ҕୗ + ෭ۀ6ਓ

    • ϏδωεαΠυ: 2ਓ • σβΠφʔ: 1ਓ • ΤϯδχΞ: 6ਓ • https://hicustomer.jp/
  4. ΧελϚʔαΫηεͷ՝୊ʹ αʔόʔϨεΞʔΩςΫνϟͰऔΓ૊Ή اۀͰ͢ ͸ɺ

  5. ໨࣍ 1. αʔϏεͷѻ͏υϝΠϯ • ΧελϚʔαΫηεͱ͸ • ϓϩμΫτͷѻ͏ϏδωεϩδοΫ 2. υϝΠϯͷಛੑͱٕज़తΞϓϩʔν •

    ॲཧͷྲྀΕ • ߟྀ͢΂͖͜ͱ • ΞʔΩςΫνϟ • ։ൃݴޠ • ࠓޙͷ՝୊ • (͓·͚) ౿Έൈ͍ͨαʔόʔϨεΞϯνύλʔϯ
  6. αʔϏεͷѻ͏υϝΠϯ ͳʹΛ࣮ݱ͍ͨ͠ͷ͔

  7. ΧελϚʔαΫηεͱ͸ • ಋೖ࣌ʹιϑτ΢ΣΞͷॴ༗ݖΛങ͍औΔ • ΦϯϓϨϛεͰӡ༻ SaaSͷొ৔ʹΑΓιϑτ΢ΣΞͷఏڙํ๏ͷมԽ • ఆظߪಡ or ैྔ՝ۚ

    • αʔϏεͱͯ͠ඞཁͳͱ͖ʹඞཁͳ෼͚ͩར༻ SaaSҎલ SaaSҎޙ
  8. • ॳظ։ൃ࣌ʹҰؾʹ࡞ΓࠐΉ • ΢ΥʔλʔϑΥʔϧ ։ൃख๏΋มԽ • ܧଓతΠϯςάϨʔγϣϯ/σϦόϦ • εΫϥϜ /

    ΞδϟΠϧ ΧελϚʔαΫηεͱ͸ SaaSҎલ SaaSҎޙ
  9. • ചΓ্͛ͷେ෦෼͸ॳظಋೖඅ༻͕઎ΊΔ • ϚʔέςΟϯά / ηʔϧεʹ஫ྗ ൢചઓུ΋ಉ༷ʹมԽ • ܧଓར༻/ར༻֦େʹΑΓചΓ্͛ΛੵΈ্͛Δ •

    ཭୤Λ๷͗ɺ༗ޮ׆༻Λଅ͢͜ͱ͕ॏཁ ΧελϚʔαΫηεͱ͸ SaaSҎલ SaaSҎޙ
  10. ΧελϚʔαΫηεͱ͸ɺ ʮ཭୤Λ๷͗ɺ༗ޮ׆༻Λଅ͢ʯ׆ಈͷ͜ͱ ൢചઓུ΋ಉ༷ʹมԽ ΧελϚʔαΫηεͱ͸ HiCustomer͸ΧελϚʔαΫηεʹඞཁͳ৘ใΛऩू͠ɺ ਖ਼͍͠λΠϛϯάͰਖ਼͍͠ΞΫγϣϯΛߦ͏ͨΊͷϓϥοτϑΥʔϜ

  11. ࣮ݱ͍ͨ͠ϏδωεϩδοΫ HiCustomerͷ3ͭͷओཁ֓೦ 1. ΧελϚʔ • (BtoB) SaaSϓϩμΫτΛར༻͍ͯ͠Δސ٬اۀ 2. εςʔδ •

    ϓϩμΫτͷར༻ϑΣʔζ • e.g. τϥΠΞϧ / ΦϯϘʔσΟϯά / ܖ໿ߋ৽લͳͲ 3. ϔϧεείΞ • ΧελϚʔ͕ϓϩμΫτΛ׆༻Ͱ͖͍ͯΔ͔ͷࢦඪ • ֤εςʔδʹ͍ͭͯఆٛͨ͠ཧ૝తͳΧελϚʔͷৼΔ෣͍ʹରͯ͠Ͳͷఔ౓͍͔ۙ͠ʹΑΓධՁ͢Δ • e.g. Good / Normal / Bad
  12. ࣮ݱ͍ͨ͠ϏδωεϩδοΫ • SaaSϓϩμΫτͷΧελϚʔΛϓϩμΫτͷར༻ϩά͔Βεςʔδʹ෼ྨ • εςʔδ͝ͱʹఆٛͨ͠ج४Λ΋ͱʹϔϧεείΞΛࢉग़ • ࢉग़͞Εͨεςʔδ / ϔϧεείΞΛ΋ͱʹରԠͷ༏ઌॱҐΛܾఆ •

    εςʔδ / ϔϧεείΞͷ෼෍ͱ࣮ࡍͷ཭୤/ར༻֦େΛরΒ͠߹ΘͤͯϧʔϧΛνϡʔχϯά
  13. ࣮ݱ͍ͨ͠ϏδωεϩδοΫ • SaaSϓϩμΫτͷΧελϚʔΛϓϩμΫτͷར༻ϩά͔Βεςʔδʹ෼ྨ • εςʔδ͝ͱʹఆٛͨ͠ج४Λ΋ͱʹϔϧεείΞΛࢉग़ • ࢉग़͞Εͨεςʔδ / ϔϧεείΞΛ΋ͱʹରԠͷ༏ઌॱҐΛܾఆ •

    εςʔδ / ϔϧεείΞͷ෼෍ͱ࣮ࡍͷ཭୤/ར༻֦େΛরΒ͠߹ΘͤͯϧʔϧΛνϡʔχϯά
  14. υϝΠϯͷಛੑͱΞϓϩʔν ϏδωεϩδοΫΛͲͷΑ͏ʹ࣮ݱ͢Δ͔

  15. ॲཧͷྲྀΕ • ֤ࣾͷSaaSϓϩμΫτ͔ΒૹΒΕͯ͘ΔΧελϚʔͷߦಈϩάΛऩू͢Δ • ʮ௚ۙn೔ؒͰΠϕϯτA͕mճҎ্ߦΘΕͨʯʮܖ໿ߋ৽೔·Ͱn೔Ҏ಺ʯͳͲͷϧʔϧʹج͖ͮΧελϚʔͷ
 εςʔλε (είΞ/εςʔδ) Λࢉग़͢Δ • ΧελϚʔͷεςʔλεΛμογϡϘʔυͰՄࢹԽ͢Δ

  16. ߟྀ͢΂͖͜ͱ αʔϏεͷಛੑ: • ࣌ܥྻσʔλ (ϓϩμΫτͷར༻ϩά) ΛΠϕϯτυϦϒϯʹѻ͏ • Πϕϯτͷछྨ͕ΫϥΠΞϯτʹΑΓେ͖͘ҟͳΔ ੑೳཁ݅: •

    ϩάऩूͷՄ༻ੑ/Ϩεϙϯε଎౓͕΋ͬͱ΋ॏཁ • ಋೖઌϓϩμΫτن໛ʹΑΓτϥϑΟοΫͷٸ૿͕ߟ͑ΒΕΔ
  17. ΞʔΩςΫνϟ ଟ༷ͳΠϕϯτσʔλΛѻ͏ͨΊͷΞϓϩʔν • SaaSϓϩμΫτ͝ͱʹҟͳΔσʔλܕΛѻ͑ΔΑ͏ɺσʔλετΞʹDynamoDBΛ࠾༻ • σʔλͷॻ͖ࠐΈΛड͚ͯผͷΠϕϯτΛτϦΨʔͰ͖ΔͷͰΠϕϯτυϦϒϯͳΞϓϦέʔγϣϯͱ૬ੑ͕ྑ͍

  18. ΞʔΩςΫνϟ ऩूॲཧͷՄ༻ੑΛߴΊΔΞϓϩʔν • Immutable Tables͸ॻ͖ࠐΈɺMutable Tables͸ಡΈࠐΈʹ࠷దԽͨ͠ςʔϒϧ (CQRSͷ֓೦) • Immutable Tablesʹ͸શͯͷΠϕϯτ͕ه࿥͞ΕΔ

    • Immutable Tables΁ͷॻ͖ࠐΈΠϕϯτΛτϦΨʔʹूܭॲཧ͕૸Γɺ݁ՌΛMutable Tablesʹه࿥͢Δ • ·ͣ͸ॻ͖ࠐΈίετͷ௿͍ImmutableͳςʔϒϧʹσʔλΛอଘ͢Δ͜ͱͰߴτϥϑΟοΫ࣌ͷσʔλܽଛΛ๷͙ • ूܭॲཧʹࣦഊͯ͠΋Immutable Tablesʹσʔλ͕อଘ͞Ε͍ͯΕ͹ॲཧΛϦτϥΠͰ͖Δ
  19. ։ൃݴޠ ౰࣌ͷબ୒ࢶ: • Python • Node.js • Go • Java

    • .NET GoΛબΜͩཧ༝: • ࣮ߦ଎౓ • ฒྻ • ֶशίετͷ௿͞ • ૉ๿ͳॻ͖ຯ ࣮ߦ؀ڥͱͯ͠AWS LambdaΛબ୒ͨ࣌͠఺Ͱ͋Δఔ౓ߜΒΕͨத͔Βબఆ ଞͷݴޠॲཧܥ͔Βདྷͯ΋ΩϟονΞοϓ͠΍͍͢ͱ͍͏఺΋ߟྀͯ͠GoΛબ୒ (Scala/RubyϝΠϯͰͨ͠)
  20. ࠓޙͷ՝୊ • ετϦʔϜॲཧͷεϩοτϦϯά • DynamoDB Streams͸4events/secݻఆ • ΑΓॊೈͳόοϑΝϦϯάͷͨΊKinesisΛಋೖ • ςʔϒϧ/ΠϯσοΫεͷ਺ΛݮΒ͢

    • ςʔϒϧ͕෼ࢄ͢ΔͱΩϟύγςΟαΠζ࠷దԽͷ໘Ͱෆར • DynamoDB͸range keyͰΞΠςϜͷछྨΛදݱ͢ΔΑ͏ʹ͢Ε͹ҟͳΔछྨͷΞΠςϜΛ 1ςʔϒϧͰѻ͏͜ͱ͕Մೳ • ߴ౓ͳݕࡧͷ࣮ݱ • DynamoDBͷΈͰݕࡧػೳ͢Δͷ͸ࠔ೉ɺιʔτΛ࣮ݱ͢Δ͚ͩͰ΋1ྻ1index͕ඞཁ • ݕࡧΤϯδϯͱͯ͠ElasticsearchΛಋೖ
  21. (͓·͚) ౿Έൈ͍ͨ αʔόʔϨεΞϯνύλʔϯ • ϢʔεέʔεʹԊΘͳ͍εΩʔϚઃܭ • RDBͱಉ͡Α͏ͳΞϓϩʔνͰ͋Δఔ౓ਖ਼نԽͯ͠σʔλϞσϧ͝ͱʹςʔϒϧΛ෼͚ ͍ͯͨ • DynamoDBͰ͸Ϣʔεέʔεͷಉ͡σʔλͷςʔϒϧΛ෼཭͢Δͱݪࢠੑͱಠཱੑ͕ࣦ

    ΘΕɺΩϟύγςΟαΠζ࠷దԽͷ໘Ͱ΋ෆར • ݕࡧ΋KVSϕʔεͷNoSQLͰؤுΔ • ଟ਺ͷΞΠςϜΛදࣔ͢ΔҰཡը໘Ͱͷݕࡧ΍ιʔτ΋DynamoDBͰ΍Ζ͏ͱ͍ͯͨ͠ • ྻ͕૿͑Δͨͼindex͕૿͑ॻ͖ࠐΈίετ΋૿Ճ • શจݕࡧͳͲؒҧͬͨ࢖͍ํΛ͢Δͱશ͘ύϑΥʔϚϯε͕ग़ͳ͍ͷͰɺ༻్ʹదͨ͠ ΞʔΩςΫνϟ(͜ͷ৔߹͸ElasticsearchͳͲ)Λซ༻͢Δͷ͕ྑ͍
  22. Θ͔ͬͨ͜ͱ • ཁ݅ʹΑΓ޲͖ෆ޲͖͕͋Δ (େલఏ) • ΠϕϯτιʔγϯάͳΞϓϦέʔγϣϯͱ͸૬ੑ͕ྑ͍ • ਖ਼͘͠࢖͑͹ΞϓϦέʔγϣϯ։ൃʹूதͰ͖Δ • ॻ͖ࠐΈͱಡΈࠐΈͷςʔϒϧΛ෼͚͓ͯ͘ͱϢʔεέʔε͕มΘͬͯ΋σʔλϞσϧ͕ม

    ߋ͠΍͍͢ • ϓϩμΫτͷํ޲ੑ͕׬શʹఆ·͍ͬͯͳ͍ελʔτΞοϓͰ͸ಛʹॏཁ • σʔλετΞ΁ͷΞΫηε͸ந৅Խͯ͠มߋ΍૊Έ߹ΘͤΛ͠΍͍͢Α͏ʹ͓ͯ͘͠ͱΑ͍ • ݕࡧ͸ElasticsearchͰߦ͏Α͏ʹ͢ΔɺͳͲ͕ޙ͔ΒͰ͖Δ • ཁ্݅ɺRDS͕ඞཁʹͳͬͨͱͯ͠΋KinesisΛڬΜͰඇಉظ࣮ߦͳͲͰͳΜͱ͔͢Δ͜ͱ͸Ͱ͖Δ BtoBελʔτΞοϓͱ͍͏จ຺ͰAWS Lambda + DynamoDBΛத৺ͱͨ͠ߏ੒Ͱͷ ΞϓϦέʔγϣϯ։ൃΛ൒೥ߦͬͨײ૝
  23. ΧελϚʔαΫηεͷ՝୊ʹ αʔόʔϨεΞʔΩςΫνϟͰऔΓ૊Ή اۀͰ͢ ͸ɺ

  24. We’re Hiring Engineers! https://www.wantedly.com/companies/hicustomer

  25. ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ B2BελʔτΞοϓΤϯδχΞφΠτ 2018.08.21 HiCustomer inc. ංલ༸༎ @hizeny