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
360k
サーバーレスとスケーラブルなデータ集計 / 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
LLM時代にデータエンジニアの役割はどう変わるか?
ikkimiyazaki
4
910
Why React!?? Next.jsそしてReactを改めてイチから選ぶ
ypresto
10
4.5k
Where will it converge?
ibknadedeji
0
190
いま注目しているデータエンジニアリングの論点
ikkimiyazaki
0
610
AI ReadyなData PlatformとしてのAutonomous Databaseアップデート
oracle4engineer
PRO
0
210
多野優介
tanoyusuke
1
470
E2Eテスト設計_自動化のリアル___Playwrightでの実践とMCPの試み__AIによるテスト観点作成_.pdf
findy_eventslides
1
490
GopherCon Tour 概略
logica0419
2
190
Function calling機能をPLaMo2に実装するには / PFN LLMセミナー
pfn
PRO
0
970
空間を設計する力を考える / 20251004 Naoki Takahashi
shift_evolve
PRO
3
400
Goにおける 生成AIによるコード生成の ベンチマーク評価入門
daisuketakeda
2
110
綺麗なデータマートをつくろう_データ整備を前向きに考える会 / Let's create clean data mart
brainpadpr
2
260
Featured
See All Featured
Code Review Best Practice
trishagee
72
19k
The World Runs on Bad Software
bkeepers
PRO
71
11k
Practical Orchestrator
shlominoach
190
11k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
The Straight Up "How To Draw Better" Workshop
denniskardys
237
140k
YesSQL, Process and Tooling at Scale
rocio
173
14k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.1k
A better future with KSS
kneath
239
17k
Build your cross-platform service in a week with App Engine
jlugia
232
18k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.6k
Thoughts on Productivity
jonyablonski
70
4.9k
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