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
グローバル展開を支える量子的なサービス設計 #mercariday / mercariday2...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Hiraku NAKANO
January 20, 2017
Technology
22
14k
グローバル展開を支える量子的なサービス設計 #mercariday / mercariday2017-api
Mercari DAY 2017の登壇資料です。
Hiraku NAKANO
January 20, 2017
Tweet
Share
More Decks by Hiraku NAKANO
See All by Hiraku NAKANO
iD決済を支える技術 / #merpay_techtalk
hirak
33
7.2k
github.com/mercari の今と昔 /github-mercari
hirak
8
3.1k
PHPStanで始める継続的静的解析 #phperkaigi /php-static-analysis
hirak
14
54k
極める!メソッドチェーン #phpstudy / fluent-interface
hirak
8
3k
evalこそパワー #phpkansai / phpkansai2017
hirak
2
1.7k
PHPのエラーと例外再入門 / php-error-and-exception
hirak
19
20k
メルカリ JP Tech Side / mercari-jp-tech-side
hirak
7
2k
Composerプラグインを作ってみよう /phpcon2016
hirak
5
14k
packagist.jpの紹介と新機能 /#phpblt
hirak
4
2.9k
Other Decks in Technology
See All in Technology
システムのアラート調査をサポートするAI Agentの紹介/Introduction to an AI Agent for System Alert Investigation
taddy_919
0
540
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
13k
しろおびセキュリティへ ようこそ
log0417
0
200
【Oracle Cloud ウェビナー】[Oracle AI Database + Azure] AI-Ready データ戦略の最短ルート:Azure AIでビジネス データの価値を最大化
oracle4engineer
PRO
2
140
BPaaSオペレーション・kubell社内 n8n活用による効率化検証事例紹介
kubell_hr
0
370
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
2.9k
最速で価値を出すための プロダクトエンジニアのツッコミ術
kaacun
1
410
Digitization部 紹介資料
sansan33
PRO
1
6.7k
Introduction to Bill One Development Engineer
sansan33
PRO
0
350
Claude Codeベストプラクティスまとめ
minorun365
53
30k
ZOZOにおけるAI活用の現在 ~開発組織全体での取り組みと試行錯誤~
zozotech
PRO
2
1k
SREの仕事を自動化する際にやっておきたい5つのポイント
jacopen
6
1.2k
Featured
See All Featured
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
320
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
190
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
ラッコキーワード サービス紹介資料
rakko
1
2.1M
Odyssey Design
rkendrick25
PRO
1
480
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
150
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
1
1.4k
Claude Code のすすめ
schroneko
67
210k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
The Curious Case for Waylosing
cassininazir
0
230
Scaling GitHub
holman
464
140k
Transcript
άϩʔόϧల։Λࢧ͑Δ ྔࢠతͳαʔϏεઃܭ 2017/01/20 Mercari DAY Hiraku NAKANO
About Me • த (@Hiraku) • ϝϧΧϦͷJP൛ BizDevνʔϜॴଐ • αʔόʔαΠυ୲ɺPHP͔Γॻ͍ͯΔ
• ೖࣾͯ͠Ұͪΐͬͱ
όοΫΤϯυܥͷ৬छ 43& αʔόʔαΠυ w ৴པੑʹϑΥʔΧε w ύϑΥʔϚϯενϡʔχϯά ͕ओઓ w 0QT݉ͶΔ
w ػೳ։ൃʹϑΥʔΧε w υϝΠϯϩδοΫ͕ओઓ w 1ͱηοτͰಈ͘ ࢲͬͪ͜ʹॴଐ
άϩʔόϧల։Λࢧ͑Δ ྔࢠతͳαʔϏεઃܭ 2017/01/20 Mercari DAY
None
"FacebookͩͱɺԿສͱ͍͏ ABςετ͕ಉ࣌ʹ͍ͬͯΔɻ ϝϧΧϦͰेຊͬͯΔɻ ύλʔϯେʹ͋Δ"
ͬ͘ ͑ΜͲ Web൛
ͬ͘ ͑ΜͲ Web൛ ͦ͏͍͏Πϝʔδ͡Όͳ͍
ͬ͘ ͑ΜͲ Web൛ ͳΜ͔ྠֲ͕ Α͔͘Βͳ͍…
ͬ͘ ͑ΜͲ • ຊ൛ʹΞΫηε • ΫϥΠΞϯτόʔδϣϯ͕XX • ϩάΠϯதͷϢʔβʔID͕YY • ͕ZZ
• ΞΫηεͨ࣌͠ࠁ͕TT • etc ͬͱྠֲ͕ ݟ͑ͯ͘Δ
"ྔࢠత"ͱ͍͏ൺᄻ • ݟΔਓʹΑͬͯҧ͏ಈ͖ʹͳΔ • ؍ଌ͠ͳ͍ͱΑ͔͘Βͳ͍ • શύλʔϯʹରͯ͠ໃ६ͳ͘ಈ࡞͢Δ
ͳͥ"ྔࢠత"ͳͷ͔ • Ծઆ࣮ݧओٛ • ࣮ݧͨ͠΄͏͕͘ਖ਼ղʹͨͲΓண͚Δ • ֎෦ڥͷಈ͖ෆ࣮֬ • ಥવͷোɾ֎෦͔Βͷ߈ܸ •
શͯఆ͢Δͷࠔ
"ྔࢠత"ͳιϑτΣΞ • ෳࡶɾϝϯςϯφϯεେม • ߟྀ࿙Εͱ͔ى͖ͳ͍ͷʁ • ϝϧΧϦͲ͏࣮ݱ͍ͯ͠Δͷ͔ʁ
ࠓ ͢͜ͱ 1. ϞόΠϧΞϓϦͷόοΫΤϯυʹ ٻΊΒΕΔ͜ͱ 2. ॏཁͰͳ͔ͬͨ͜ͱ 3. mercari-apiͷࢥ 4.
ࠓΛੜ͖ΔͨΊʹ
ٻΊΒΕ͍ͯΔ͜ͱ
ͬ͘ ͑ΜͲ • ϦϦʔεͷίετ͕͍ • શʹίϯτϩʔϧԼ • ϦϦʔεޙؚΉ • ඇެ։ʹͰ͖Δ
όοΫΤϯυ͔ͩΒͰ͖Δ͜ͱ • ࢪࡦΛଧͭͨΊͷ • ʮࠓ͙͢ϦϦʔεʯ͕ৗʹՄೳͳଘࡏ • ΞυϗοΫͳোରԠྗ • σʔλͷ࠷ऴน
ͪΖΜલఏͱͯ͠ • ࣭ • ύϑΥʔϚϯε • কདྷతʹഁ͠ͳ͍ݟ௨͠ • Լ͠ͳ͍։ൃ •
ηΩϡϦςΟ߈ܸͷରԠ
None
શͯରॲ͢Δͷେม
࣮ॏཁͰͳ͔ͬͨ͜ͱ
ίʔυతʹඒಙͱ͞ΕΔͷ • ൚༻ੑ • ඒ͠͞ • Ұ؏ੑ ϝϧΧϦͰ Ձ͕Ί
൚༻ੑͳͲͳ͍ • ެࣜΫϥΠΞϯτͷΈߟྀ • ͔͠αϙʔτόʔδϣϯͷΈ • ͦΕҎ֎͔Β͑ͳ͍͠ɺ ͏͜ͱఆ͠ͳ͍
WebAPIͱͯ͠ͷඒ͠͞ • RESTful, HATEOASͱ͍ͬͨ ϕετϓϥΫςΟε…ͱ͞ΕΔͷ • શવकͬͯͳ͍ • ࠷ॳ͋ͬͨͣͳͷ͕ͩ •
ެࣜΫϥΠΞϯτʹ߹Θͤͯվम͠·͘ΕΔ͜ͱ ͷ΄͏͕ॏཁ
Ұ؏ੑͷͳ͞ • ※σʔλҰ؏ੑࢮकͰ͢Α • ίʔυͱͯ͠ேྩվ ͲΜͱདྷ͍ʂ • Ή͠ΖҰ؏ੑͷͳ͍मਖ਼ʹ͑ΒΕΔΑ͏ʹ ίετΛࢧ͏͖
ϓϩάϥϚͱͯ͠ͷ৺ڥ • ͪΖΜɺඒ͘͠Ұ؏ͯ͠நԽ͞Εͨͷ Λ࡞Γ͍ͨ… • ৽ن։ൃͳΒɺ͍ͭເΛ٧ΊࠐΉΑ͏ʹ ͍ͯ͠Δ • ʮमਖ਼͍ͨ͠ʯͱ͍͏νέοτΛʑ࡞ͬͯ ͍Δ
PragmaticͰ͋Δ͜ͱ DogmaticʹͳΒͳ͍͜ͱ • ϦϦʔεΛ᪳͠ͳ͍ • ෆશͰಈ͍͍ͯΔํ͕ΑͬΆͲ͍͍ • Be Professional Day
Ͱ៉ྷʹ͢Δ
mercari-api
ιʔείʔυඇެ։ ͳͷͰɺུ͚֓ͩ
ٕज़తΩʔϫʔυ • ಠ࣮ࣗͷJSON over HTTPS WebAPI • nginx/OpenResty, Go, PHP,
MySQL, Q4M, Parallel-Prefork, Memcached, Solr, ... • DietCakeϕʔεͷϑϨʔϜϫʔΫ
None
࣮ࡍͷߏ ൃදଟ͍ͷͰׂѪ
mercari-api ͷࢥ
ࢥతΩʔϫʔυ • ബ͍ϑϨʔϜϫʔΫɾ۪ͳ࣮ • ͕͞શͯΛղܾ͢Δ • Ψʔυઅͷଟ༻ • ୯ҰϦϙδτϦͱ͍͏ᐫ
None
DietCake • ඇৗʹബ͘ɺ༨ܭͳ͜ͱԿ͠ͳ͍ • શମతʹ۪ͳ࣮ • ϑϩϯτίϯτϩʔϥʔ͔Βॱ൪ʹಡΈਐ Ί͍͚ͯඞͣѲͰ͖Δ • ϑϨʔϜϫʔΫଆ͕͋·Γറͬͯ͜ͳ͍
͕͞શͯΛղܾ͢Δ • APIࣗମͷ͞ • ଟগͷແཧ͕Ͱ͖Δঢ়ଶΛอͭ • ։ൃͷ͞ • ͙͢ʹফ͢ͳΒΞυϗοΫͳରԠՄೳ
Α͋͘Δޫܠ • 1ि͙ؒΒ͍Ͱ։ൃ+QA -> ϦϦʔε • Ωϟϯϖʔϯ͕ऴΘͬͨͷͰશআ
Ψʔυઅͷଟ༻ • if (ఆͱҧ͏) { throw new Error; } •
Α͋͘Δྫ • ʮUSͰͷΈʯ • ʮABςετέʔε˓˓൪ͷAύλʔϯʯ • ʮ࠷৽ͷΞϓϦΛ͓͍Լ͍͞ʯ
୯ҰϦϙδτϦͱ͍͏ᐫ • JP/US/GBઃఆͱDBͰΓସ͑ • αʔόʔߏɺ։ൃڥɺϊϋڞ௨Խ • ฐ͋Δ͕ࠓͷͱ͜Ζڐ༰ൣғ
mercari-api ۪ͳ࣮ ˣ ։ൃͷॠൃྗ ੑೳ Ψʔυઅଟ༻ ˣ গ͠ͰෳࡶΛԼ͛Δ ୯ҰϦϙδτϦ ˣ
ഁ͠ͳ͍ઃܭΛ ڧཁ͞ΕΔ
ࠓΛੜ͖ΔͨΊʹ
ϝϧΧϦʹશ͘༨༟ͳ͍ • USϓϩμΫτ·ͩ·ͩେޭͰͳ͍ • ۪ͳվળʹΑΓɺ֯Λ͞ΒʹߴΊͳ ͍ͱɺγϦίϯόϨʔͷڝ߹ʹ͋ͬͱ͍͏ؒ ʹෛ͚Δ • ݶΒΕͨϦιʔεΛͬͯɺҰยͷແବͳ͘ ࣄΛਐΊΔ͜ͱ͕ۃΊͯॏཁɻ
Ͱ͖ͳ͍͜ͱଟ͍ • খखઌͷςΫχοΫͰෳࡶԼ͕Βͳ͍ • όάΛϦϦʔεͯ͠͠·͏͜ͱ͋Δ • ࣦഊͩͬͨͷ͑Εͣ • ͔͠͠ڝ߹ͬͯ͘Εͳ͍
None
ʮΤϯδχΞϦϯά͚ͩͰ ղܾ͠Α͏ͱ͠ͳ͍ʯ
ʮ࡞ΓతʹࣗಈςετͭΒ͍ʯ ˣ ؾ߹͍ͰϨϏϡʔ͠·͢ QAͰ֬ೝ͠·͢
ʮ࣭ʹෆ͕҆Δ…ʯ ↓ ͦ͏ͳΒ͙͢͠· ͠ΐ͏ ෛՙࢹ͠·͢
Τοδέʔεͷ࣮͕େม ↓ ☺CSखΦϖͳΒରॲ͍͚ͦ͏ ରԠϚχϡΞϧͰ͖ͨΑʔ
None
େࣄʹ͍ͯ͠Δ͜ͱ • ԿΑΓϓϩμΫτͱͯ͠ޭ͢Δ͜ͱ • 80% ͰϦϦʔεͯ͠ɺલʹਐΊΔ • ΓผͷखஈΛ୳ͯ͠र͏ or མͱ͢
• ৽ػೳچΫϥΠΞϯτͰಈ͔ͳ͍͚Ͳɺ Ϋϥογϡͤ͞ͳ͍
·ͱΊ
Ҏ্ࢲֶ͕Μͩ͜ͱ • ࢲͷೖࣾͨ͠ࠒʹطʹ͋ͬͨจԽ • ͓ͦΒ͘ૂͬͨ෦ͱɺ݁Ռతʹͦ͏ͳͬͨ෦ ͕͋Δ • ྠֲͷᐆດͳྔࢠతͳαʔϏε • ͜Ε͔Βͦ͏Ͱ͋Γଓ͚ΔͩΖ͏͠ɺ
ࢧ͑ΔͨΊͷίετࢧ͏