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
BtoBスタートアップとサーバーレス / Serverless Architecture fo...
Search
Yosuke Hizen
August 21, 2018
Technology
5
2.2k
BtoBスタートアップとサーバーレス / Serverless Architecture for a BtoB Startup
Yosuke Hizen
August 21, 2018
Tweet
Share
More Decks by Yosuke Hizen
See All by Yosuke Hizen
プロダクト開発チームの紹介 / Engineers at HiCustomer
hizeny
6
350k
サーバーレスとスケーラブルなデータ集計 / Aggregate Processing with Serverless
hizeny
2
12k
サーバーレス失敗談 - DynamoDB編 / Serverless Fails
hizeny
13
10k
サーバーレス・スタートアップ / Serverless Startup
hizeny
1
2.6k
Other Decks in Technology
See All in Technology
Frontier Airlines Customer®️ USA Contact Numbers: Complete 2025 Support Guide
frontierairlineswithflyagent
0
100
サービスを止めるな! DDoS攻撃へのスマートな備えと最前線の事例
coconala_engineer
1
200
Data Engineering Study#30 LT資料
tetsuroito
1
380
(HackFes)米国国防総省のDevSecOpsライフサイクルをAWSのセキュリティサービスとOSSで実現
syoshie
5
550
Amplify Gen2から知るAWS CDK Toolkit Libraryの使い方/How to use the AWS CDK Toolkit Library as known from Amplify Gen2
fossamagna
1
380
RapidPen: AIエージェントによる高度なペネトレーションテスト自動化の研究開発
laysakura
1
270
Microsoft Defender XDRで疲弊しないためのインシデント対応
sophiakunii
2
350
QAを早期に巻き込む”って どうやるの? モヤモヤから抜け出す実践知
moritamasami
2
130
データ戦略部門 紹介資料
sansan33
PRO
1
3.3k
AWS Well-Architected から考えるオブザーバビリティの勘所 / Considering the Essentials of Observability from AWS Well-Architected
sms_tech
1
630
組織内、組織間の資産保護に必要なアイデンティティ基盤と関連技術の最新動向
fujie
0
400
「現場で活躍するAIエージェント」を実現するチームと開発プロセス
tkikuchi1002
5
690
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Adopting Sorbet at Scale
ufuk
77
9.5k
Become a Pro
speakerdeck
PRO
29
5.4k
Done Done
chrislema
184
16k
Faster Mobile Websites
deanohume
308
31k
4 Signs Your Business is Dying
shpigford
184
22k
Producing Creativity
orderedlist
PRO
346
40k
Building Adaptive Systems
keathley
43
2.7k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
1k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Transcript
BtoBελʔτΞοϓͱ αʔόʔϨε B2BελʔτΞοϓΤϯδχΞφΠτ 2018.08.21 HiCustomer inc. ංલ༸༎ @hizeny
• ංલ༸༎ • @hizeny • ڞಉۀऀ VP of Engineering •
ࢁͳͲΛΓ·͢
HiCustomer inc. • 201712݄ۀ • ϑϧλΠϜ3ਓ / ۀҕୗ + ෭ۀ6ਓ
• ϏδωεαΠυ: 2ਓ • σβΠφʔ: 1ਓ • ΤϯδχΞ: 6ਓ • https://hicustomer.jp/
ΧελϚʔαΫηεͷ՝ʹ αʔόʔϨεΞʔΩςΫνϟͰऔΓΉ اۀͰ͢ ɺ
࣍ 1. αʔϏεͷѻ͏υϝΠϯ • ΧελϚʔαΫηεͱ • ϓϩμΫτͷѻ͏ϏδωεϩδοΫ 2. υϝΠϯͷಛੑͱٕज़తΞϓϩʔν •
ॲཧͷྲྀΕ • ߟྀ͖͢͜ͱ • ΞʔΩςΫνϟ • ։ൃݴޠ • ࠓޙͷ՝ • (͓·͚) ౿Έൈ͍ͨαʔόʔϨεΞϯνύλʔϯ
αʔϏεͷѻ͏υϝΠϯ ͳʹΛ࣮ݱ͍ͨ͠ͷ͔
ΧελϚʔαΫηεͱ • ಋೖ࣌ʹιϑτΣΞͷॴ༗ݖΛങ͍औΔ • ΦϯϓϨϛεͰӡ༻ SaaSͷొʹΑΓιϑτΣΞͷఏڙํ๏ͷมԽ • ఆظߪಡ or ैྔ՝ۚ
• αʔϏεͱͯ͠ඞཁͳͱ͖ʹඞཁͳ͚ͩར༻ SaaSҎલ SaaSҎޙ
• ॳظ։ൃ࣌ʹҰؾʹ࡞ΓࠐΉ • ΥʔλʔϑΥʔϧ ։ൃख๏มԽ • ܧଓతΠϯςάϨʔγϣϯ/σϦόϦ • εΫϥϜ /
ΞδϟΠϧ ΧελϚʔαΫηεͱ SaaSҎલ SaaSҎޙ
• ചΓ্͛ͷେ෦ॳظಋೖඅ༻͕ΊΔ • ϚʔέςΟϯά / ηʔϧεʹྗ ൢചઓུಉ༷ʹมԽ • ܧଓར༻/ར༻֦େʹΑΓചΓ্͛ΛੵΈ্͛Δ •
Λ͗ɺ༗ޮ׆༻Λଅ͢͜ͱ͕ॏཁ ΧελϚʔαΫηεͱ SaaSҎલ SaaSҎޙ
ΧελϚʔαΫηεͱɺ ʮΛ͗ɺ༗ޮ׆༻Λଅ͢ʯ׆ಈͷ͜ͱ ൢചઓུಉ༷ʹมԽ ΧελϚʔαΫηεͱ HiCustomerΧελϚʔαΫηεʹඞཁͳใΛऩू͠ɺ ਖ਼͍͠λΠϛϯάͰਖ਼͍͠ΞΫγϣϯΛߦ͏ͨΊͷϓϥοτϑΥʔϜ
࣮ݱ͍ͨ͠ϏδωεϩδοΫ HiCustomerͷ3ͭͷओཁ֓೦ 1. ΧελϚʔ • (BtoB) SaaSϓϩμΫτΛར༻͍ͯ͠Δސ٬اۀ 2. εςʔδ •
ϓϩμΫτͷར༻ϑΣʔζ • e.g. τϥΠΞϧ / ΦϯϘʔσΟϯά / ܖߋ৽લͳͲ 3. ϔϧεείΞ • ΧελϚʔ͕ϓϩμΫτΛ׆༻Ͱ͖͍ͯΔ͔ͷࢦඪ • ֤εςʔδʹ͍ͭͯఆٛͨ͠ཧతͳΧελϚʔͷৼΔ͍ʹରͯ͠Ͳͷఔ͍͔ۙ͠ʹΑΓධՁ͢Δ • e.g. Good / Normal / Bad
࣮ݱ͍ͨ͠ϏδωεϩδοΫ • SaaSϓϩμΫτͷΧελϚʔΛϓϩμΫτͷར༻ϩά͔Βεςʔδʹྨ • εςʔδ͝ͱʹఆٛͨ͠ج४ΛͱʹϔϧεείΞΛࢉग़ • ࢉग़͞Εͨεςʔδ / ϔϧεείΞΛͱʹରԠͷ༏ઌॱҐΛܾఆ •
εςʔδ / ϔϧεείΞͷͱ࣮ࡍͷ/ར༻֦େΛরΒ͠߹ΘͤͯϧʔϧΛνϡʔχϯά
࣮ݱ͍ͨ͠ϏδωεϩδοΫ • SaaSϓϩμΫτͷΧελϚʔΛϓϩμΫτͷར༻ϩά͔Βεςʔδʹྨ • εςʔδ͝ͱʹఆٛͨ͠ج४ΛͱʹϔϧεείΞΛࢉग़ • ࢉग़͞Εͨεςʔδ / ϔϧεείΞΛͱʹରԠͷ༏ઌॱҐΛܾఆ •
εςʔδ / ϔϧεείΞͷͱ࣮ࡍͷ/ར༻֦େΛরΒ͠߹ΘͤͯϧʔϧΛνϡʔχϯά
υϝΠϯͷಛੑͱΞϓϩʔν ϏδωεϩδοΫΛͲͷΑ͏ʹ࣮ݱ͢Δ͔
ॲཧͷྲྀΕ • ֤ࣾͷSaaSϓϩμΫτ͔ΒૹΒΕͯ͘ΔΧελϚʔͷߦಈϩάΛऩू͢Δ • ʮۙnؒͰΠϕϯτA͕mճҎ্ߦΘΕͨʯʮܖߋ৽·ͰnҎʯͳͲͷϧʔϧʹج͖ͮΧελϚʔͷ εςʔλε (είΞ/εςʔδ) Λࢉग़͢Δ • ΧελϚʔͷεςʔλεΛμογϡϘʔυͰՄࢹԽ͢Δ
ߟྀ͖͢͜ͱ αʔϏεͷಛੑ: • ࣌ܥྻσʔλ (ϓϩμΫτͷར༻ϩά) ΛΠϕϯτυϦϒϯʹѻ͏ • Πϕϯτͷछྨ͕ΫϥΠΞϯτʹΑΓେ͖͘ҟͳΔ ੑೳཁ݅: •
ϩάऩूͷՄ༻ੑ/Ϩεϙϯε͕ͬͱॏཁ • ಋೖઌϓϩμΫτنʹΑΓτϥϑΟοΫͷٸ૿͕ߟ͑ΒΕΔ
ΞʔΩςΫνϟ ଟ༷ͳΠϕϯτσʔλΛѻ͏ͨΊͷΞϓϩʔν • SaaSϓϩμΫτ͝ͱʹҟͳΔσʔλܕΛѻ͑ΔΑ͏ɺσʔλετΞʹDynamoDBΛ࠾༻ • σʔλͷॻ͖ࠐΈΛड͚ͯผͷΠϕϯτΛτϦΨʔͰ͖ΔͷͰΠϕϯτυϦϒϯͳΞϓϦέʔγϣϯͱ૬ੑ͕ྑ͍
ΞʔΩςΫνϟ ऩूॲཧͷՄ༻ੑΛߴΊΔΞϓϩʔν • Immutable Tablesॻ͖ࠐΈɺMutable TablesಡΈࠐΈʹ࠷దԽͨ͠ςʔϒϧ (CQRSͷ֓೦) • Immutable TablesʹશͯͷΠϕϯτ͕ه͞ΕΔ
• Immutable Tablesͷॻ͖ࠐΈΠϕϯτΛτϦΨʔʹूܭॲཧ͕Γɺ݁ՌΛMutable Tablesʹه͢Δ • ·ͣॻ͖ࠐΈίετͷ͍ImmutableͳςʔϒϧʹσʔλΛอଘ͢Δ͜ͱͰߴτϥϑΟοΫ࣌ͷσʔλܽଛΛ͙ • ूܭॲཧʹࣦഊͯ͠Immutable Tablesʹσʔλ͕อଘ͞Ε͍ͯΕॲཧΛϦτϥΠͰ͖Δ
։ൃݴޠ ࣌ͷબࢶ: • Python • Node.js • Go • Java
• .NET GoΛબΜͩཧ༝: • ࣮ߦ • ฒྻ • ֶशίετͷ͞ • ૉͳॻ͖ຯ ࣮ߦڥͱͯ͠AWS LambdaΛબͨ࣌͠Ͱ͋ΔఔߜΒΕͨத͔Βબఆ ଞͷݴޠॲཧܥ͔ΒདྷͯΩϟονΞοϓ͍͢͠ͱ͍͏ߟྀͯ͠GoΛબ (Scala/RubyϝΠϯͰͨ͠)
ࠓޙͷ՝ • ετϦʔϜॲཧͷεϩοτϦϯά • DynamoDB Streams4events/secݻఆ • ΑΓॊೈͳόοϑΝϦϯάͷͨΊKinesisΛಋೖ • ςʔϒϧ/ΠϯσοΫεͷΛݮΒ͢
• ςʔϒϧ͕ࢄ͢ΔͱΩϟύγςΟαΠζ࠷దԽͷ໘Ͱෆར • DynamoDBrange keyͰΞΠςϜͷछྨΛදݱ͢ΔΑ͏ʹ͢ΕҟͳΔछྨͷΞΠςϜΛ 1ςʔϒϧͰѻ͏͜ͱ͕Մೳ • ߴͳݕࡧͷ࣮ݱ • DynamoDBͷΈͰݕࡧػೳ͢ΔͷࠔɺιʔτΛ࣮ݱ͢Δ͚ͩͰ1ྻ1index͕ඞཁ • ݕࡧΤϯδϯͱͯ͠ElasticsearchΛಋೖ
(͓·͚) ౿Έൈ͍ͨ αʔόʔϨεΞϯνύλʔϯ • ϢʔεέʔεʹԊΘͳ͍εΩʔϚઃܭ • RDBͱಉ͡Α͏ͳΞϓϩʔνͰ͋Δఔਖ਼نԽͯ͠σʔλϞσϧ͝ͱʹςʔϒϧΛ͚ ͍ͯͨ • DynamoDBͰϢʔεέʔεͷಉ͡σʔλͷςʔϒϧΛ͢Δͱݪࢠੑͱಠཱੑ͕ࣦ
ΘΕɺΩϟύγςΟαΠζ࠷దԽͷ໘Ͱෆར • ݕࡧKVSϕʔεͷNoSQLͰؤுΔ • ଟͷΞΠςϜΛදࣔ͢ΔҰཡը໘ͰͷݕࡧιʔτDynamoDBͰΖ͏ͱ͍ͯͨ͠ • ྻ͕૿͑Δͨͼindex͕૿͑ॻ͖ࠐΈίετ૿Ճ • શจݕࡧͳͲؒҧ͍ͬͨํΛ͢Δͱશ͘ύϑΥʔϚϯε͕ग़ͳ͍ͷͰɺ༻్ʹదͨ͠ ΞʔΩςΫνϟ(͜ͷ߹ElasticsearchͳͲ)Λซ༻͢Δͷ͕ྑ͍
Θ͔ͬͨ͜ͱ • ཁ݅ʹΑΓ͖ෆ͖͕͋Δ (େલఏ) • ΠϕϯτιʔγϯάͳΞϓϦέʔγϣϯͱ૬ੑ͕ྑ͍ • ਖ਼͑͘͠ΞϓϦέʔγϣϯ։ൃʹूதͰ͖Δ • ॻ͖ࠐΈͱಡΈࠐΈͷςʔϒϧΛ͚͓ͯ͘ͱϢʔεέʔε͕มΘͬͯσʔλϞσϧ͕ม
ߋ͍͢͠ • ϓϩμΫτͷํੑ͕શʹఆ·͍ͬͯͳ͍ελʔτΞοϓͰಛʹॏཁ • σʔλετΞͷΞΫηεநԽͯ͠มߋΈ߹ΘͤΛ͍͢͠Α͏ʹ͓ͯ͘͠ͱΑ͍ • ݕࡧElasticsearchͰߦ͏Α͏ʹ͢ΔɺͳͲ͕ޙ͔ΒͰ͖Δ • ཁ্݅ɺRDS͕ඞཁʹͳͬͨͱͯ͠KinesisΛڬΜͰඇಉظ࣮ߦͳͲͰͳΜͱ͔͢Δ͜ͱͰ͖Δ BtoBελʔτΞοϓͱ͍͏จ຺ͰAWS Lambda + DynamoDBΛத৺ͱͨ͠ߏͰͷ ΞϓϦέʔγϣϯ։ൃΛߦͬͨײ
ΧελϚʔαΫηεͷ՝ʹ αʔόʔϨεΞʔΩςΫνϟͰऔΓΉ اۀͰ͢ ɺ
We’re Hiring Engineers! https://www.wantedly.com/companies/hicustomer
͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ B2BελʔτΞοϓΤϯδχΞφΠτ 2018.08.21 HiCustomer inc. ංલ༸༎ @hizeny