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
Hiraku NAKANO
January 20, 2017
Technology
14k
22
Share
グローバル展開を支える量子的なサービス設計 #mercariday / mercariday2017-api
Mercari DAY 2017の登壇資料です。
Hiraku NAKANO
January 20, 2017
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
Tour of Agent Protocols: MCP, A2A, AG-UI, A2UI with ADK
meteatamel
0
170
MIX AUDIO EN BROADCAST
ralpherick
0
140
AWS Systems Managerのハイブリッドアクティベーションを使用したガバメントクラウド環境の統合管理
toru_kubota
1
190
LLMに何を任せ、何を任せないか
cap120
11
6.7k
AI時代のオンプレ-クラウドキャリアチェンジ考
yuu0w0yuu
0
670
スケーリングを封じられたEC2を救いたい
senseofunity129
0
130
SSoT(Single Source of Truth)で「壊して再生」する設計
kawauso
2
400
AIエージェント勉強会第3回 エージェンティックAIの時代がやってきた
ymiya55
0
180
GitHub Copilot CLI で Azure Portal to Bicep
tsubakimoto_s
0
300
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
3
2k
Oracle Cloud Infrastructure(OCI):Onboarding Session(はじめてのOCI/Oracle Supportご利⽤ガイド)
oracle4engineer
PRO
2
17k
OPENLOGI Company Profile for engineer
hr01
1
61k
Featured
See All Featured
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.8k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
140
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
780
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.2k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
990
Are puppies a ranking factor?
jonoalderson
1
3.2k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.2k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
240
WCS-LA-2024
lcolladotor
0
500
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
400
Mobile First: as difficult as doing things right
swwweet
225
10k
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 མͱ͢
• ৽ػೳچΫϥΠΞϯτͰಈ͔ͳ͍͚Ͳɺ Ϋϥογϡͤ͞ͳ͍
·ͱΊ
Ҏ্ࢲֶ͕Μͩ͜ͱ • ࢲͷೖࣾͨ͠ࠒʹطʹ͋ͬͨจԽ • ͓ͦΒ͘ૂͬͨ෦ͱɺ݁Ռతʹͦ͏ͳͬͨ෦ ͕͋Δ • ྠֲͷᐆດͳྔࢠతͳαʔϏε • ͜Ε͔Βͦ͏Ͱ͋Γଓ͚ΔͩΖ͏͠ɺ
ࢧ͑ΔͨΊͷίετࢧ͏