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
9.9k
サーバーレス・スタートアップ / Serverless Startup
hizeny
1
2.6k
Other Decks in Technology
See All in Technology
BigQuery Remote FunctionでLooker Studioをインタラクティブ化
cuebic9bic
3
280
~宇宙最速~2025年AWS Summit レポート
satodesu
1
1.8k
PHPでWebブラウザのレンダリングエンジンを実装する
dip_tech
PRO
0
200
登壇ネタの見つけ方 / How to find talk topics
pinkumohikan
5
440
AWS アーキテクチャ作図入門/aws-architecture-diagram-101
ma2shita
29
11k
Oracle Cloud Infrastructure:2025年6月度サービス・アップデート
oracle4engineer
PRO
2
240
AIのAIによるAIのための出力評価と改善
chocoyama
2
550
OpenHands🤲にContributeしてみた
kotauchisunsun
1
430
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
26k
PostgreSQL 18 cancel request key長の変更とRailsへの関連
yahonda
0
120
生成AIで小説を書くためにプロンプトの制約や原則について学ぶ / prompt-engineering-for-ai-fiction
nwiizo
4
1.5k
AWS CDK 実践的アプローチ N選 / aws-cdk-practical-approaches
gotok365
6
740
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
790
Designing Experiences People Love
moore
142
24k
Making Projects Easy
brettharned
116
6.3k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Embracing the Ebb and Flow
colly
86
4.7k
KATA
mclloyd
29
14k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.4k
Into the Great Unknown - MozCon
thekraken
39
1.9k
Raft: Consensus for Rubyists
vanstee
140
7k
The Language of Interfaces
destraynor
158
25k
Designing for Performance
lara
609
69k
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