Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
日本初のキャッシュレス即売会を支えた決済アプリ pixiv PAYの技術
Search
orekyuu
November 06, 2018
Technology
1.7k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
日本初のキャッシュレス即売会を支えた決済アプリ pixiv PAYの技術
orekyuu
November 06, 2018
More Decks by orekyuu
See All by orekyuu
[JJUG CCC 2022 fall] Fargate上のJVMからCPUを認識するまで 〜正しく認識されないCPUの謎を追え〜
orekyuu
1
2.6k
OpenJDKアンカンファレンス 2022-09
orekyuu
0
250
至極の難問言語仕様クイズ 〜最強のマルチリンガル決定戦〜
orekyuu
2
2.4k
burikaigi2021 Rails製ECサイトの決済速度を上げろ!〜決済処理チューニングの記録〜
orekyuu
3
1.7k
実際困る!クロスドメイン間のセッション管理を考えよう
orekyuu
1
970
pixiv PAYで運用している フレンズパターン
orekyuu
1
3.8k
Other Decks in Technology
See All in Technology
データマネジメント × 法務で作りあげる、 freeeの新しいデータガバナンスへの軌跡
freee
PRO
2
520
クラウドエージェントの先駆け Devin。今も最先端を走る、他との違い
kinopeee
1
500
AI時代の開発はウォーターフォールに回帰する? / development-with-ai-back-to-wf
okamototakuyasr2
0
140
AIエージェント時代、Kaggleにどう取り組むか
takanao
2
350
VLA-JEPA: Enhancing Vision-Language-Action Models with Latent World Models
takmin
0
360
外国人エンジニアがVueプロトタイプで仕様を合わせている話 / Vue Fes Japan 2026 LT
eluwing
0
280
Let's Change Our World—Again
snoozer05
PRO
6
710
契約で守るコンパウンドプロダクトのデザインシステム
yug1224
1
1.6k
Vue で書く 空間コンピューティング、TresJS と WebXR を使ったXR デバイスのフロントエンド開発
hiranuma
0
120
素人でもできた!AIを使った短編小説創作入門
delhi09
PRO
0
150
AWS DevOps Agentはどこまで任せられるか 〜機能の現在地と、機能拡張の実践〜
nyankotaro
0
270
AI時代、つくる力を自分たちの手に。 ──電通×KAG、アジャイルとAI駆動開発で挑む開発の変革
yuukiyo
3
410
Featured
See All Featured
How GitHub (no longer) Works
holman
316
150k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.5k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Faster Mobile Websites
deanohume
310
32k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
330
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Become a Pro
speakerdeck
PRO
31
6.3k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Skip the Path - Find Your Career Trail
mkilby
1
260
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.5k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
650
Transcript
ຊॳͷΩϟογϡϨεଈചձΛ ࢧܾ͑ͨࡁΞϓϦ pixiv PAYͷٕज़ ۚ༞ଠ / ޒेཛྷ໌
pixiv PAYͱ
త ΫϦΤʔλʔ͕ಉਓࢽͳͲͷ࡞ΛചΔ ଈചձͰΘΕΔ͜ͱΛతͱͨ͠ ΩϟογϡϨεܾࡁαʔϏε
എܠ •ଈചձͰݱۚࢧ͍ʹΑΔ͞·͟·ͳෆศ͕͋͞Δ •େྔͷ͓Γͷ४උ •͓Γͷࡶ͔͞Β1000ԁͳͲΩϦྑֹ͍ۚʹͤ͟ΔΛಘͳ͍ •ച্ۚͷ౪ϦεΫ •ւ֎ސ٬ຊԁݱۚΛ४උ͢Δඞཁ͕͋Δ •ੈͷதͷΩϟογϡϨεԽɺిࢠܾࡁͷීٴ •͔͠͠ઐ༻ͷػց͕ඞཁͳͲͷཧ༝Ͱಋೖॳظඅ༻͕ߴ͍
pixiv PAYͰఏڙ͍ͨ͠αʔϏεʢఏڙࡁΈؚΉʣ •ଟ༷ͳܾࡁํ๏ •ΧʔυܾࡁɺίϯϏχೖۚϙΠϯτܾࡁɺച্ۚར༻ߪೖ •ϨδػೳʢΧʔυܾࡁҎ֎ʹɺݱۚձܭܭࢉՄೳʣ •ചΓखͱങ͍खΛͭͳ͙ػೳ •ϑΥϩϫʔʹϝοηʔδΛૹΔػೳ •ܾࡁ࣌ʹϖΠοʂͬͯΔػೳ •༏͞ΜʹͬͯΒ͍͍ͨɻͦͯͦ͠ΕΛ࣮͍ͨ͠ɻ
RubyͰ։ൃ͢Δ͜ͱΛܾΊͨʢRubyͷརʣ •৽͍͠ܗͷܾࡁαʔϏεͱͯ͠ɺ৽ػೳͲΜͲΜՃ͍ͨ͠ •ੈͷதʹ·ͩͳ͍ͷΛࢼߦࡨޡͰ࡞Γ্͍͛ͯ͘ •Railsͷॊೈ͞ɺ։ൃޮͷྑ͞ͱϚον •RailsͷαʔϏε͕ࣾʹଟ͋ͬͨ͘ •RailsΤϯδχΞ͕ࣾʹطʹଟ͍ͨ͘
RubyͰ։ൃ͢Δ͜ͱΛܾΊͨʢRubyͷ՝ͱݒ೦ʣ • ଈചձͰܾࡁॲཧ։࢝ޙͷظؒʹूத͢Δ • 300ళͷଈചձͰɺ։ޙʹಉܾ࣌ࡁ͕300ۙ͘ͳΔ • ಉ࣌ʹൃੜ͢Δଟ͘ͷܾࡁϦΫΤετΛॲཧ͢Δ͜ͱ͕Ͱ͖Δ͔ • ຊൃද͜ͷʹతΛߜ͓ͬͯ͠͠·͢
pixiv PAY։ൃεέδϡʔϧ • 20176݄ ։ൃελʔτ • 20178݄ ϦϦʔε • RailsΤϯδχΞʢͱεϚϗΞϓϦΤϯδχΞʣ͕
ࣾʹطʹଟ͍ͨ͘ͷͰμογϡͰ࡞Εͨ • ϦϦʔεޙɺRails΄΅2ਓͰ։ൃ
pixiv PAY ͷػೳ (ࠓݱࡏ) •εϚϗʹೖΕͨpixiv PAYΞϓϦͰQRίʔυͰചങ •ΫϨΧPayPalͰܾࡁʢαʔόଆͰॲཧʣ •ίϯϏχͰೖۚͨ͠ϙΠϯτͰങ͍Մೳ •ଈചձʹಛԽͯ͠εϜʔεʹചങͰ͖ΔϨδػೳ •ෳਓͰചΓࢠ͕Ͱ͖ΔΞγελϯτػೳ
•ߪೖऀϑΥϩϫʔͷϝοηʔδૹ৴ɺ৽ணใ͓Βͤ •ΠϕϯτొػೳͰࢀՃ͍ͯ͠ΔചΓखΛݕࡧՄೳ •৽ػೳΛͲΜͲΜՃ͍ͯ͠Δ
ࣗݾհ •ޒेཛྷ໌ / twitter: igaiga555 •ϑϦʔϥϯε RailsΤϯδχΞ •RubyWorld Conference 2013,
2014 ߨԋ •ౡࠜݝRuby߹॓ɺRailsࣉࢠɺRails GirlsͳͲͰߨࢣ •ஶॻʮθϩ͔ΒΘ͔ΔRubyೖʯ 11/22ൃച
ऀަ
ࣗݾհ •ۚ༞ଠ / twitter: orekyuu •ϐΫγϒגࣜձࣾ RailsΤϯδχΞ •Ruby Business Users
Conference 2018ొஃ
pixiv MARKET • 20186݄ ຊॳΩϟογϡϨεಉਓࢽଈചΠϕϯτ pixiv MARKETΛ։࠵ • pixiv PAYΛମݧͯ͠Β͏ڥΛͭ͘Δ
• WiFiࣗͨͪͰઃܭͯ͠ఏڙ • ళฮΛ300ʹઃఆ
None
՝ •300ళฮಉܾ࣌ࡁ •։࢝ޙʹܾࡁ͕ूத͢Δͱ༧ •300ܾࡁ͕ಉ࣌ʹ͘Δ͜ͱΛఆ
pixiv PAY ͷγεςϜߏ •Ruby, Rails •ΞϓϦέʔγϣϯαʔό3 •ͦΕͧΕunicorn workerϓϩηε50 • ܾࣾࡁج൫αʔϏεΛ௨ͯ͡ෳͷ֎෦ܾࡁߦαʔϏεΛར༻
• ΫϨδοτΧʔυ, PayPal, ίϯϏχࣄલೖۚϙΠϯτ
ରԠࡦ •ܾࡁॲཧͷߴԽ •λΠϜΞτରࡦ
ܾࡁॲཧͷߴԽ •ܾࡁॲཧ͍ •֎෦αʔϏεAPIΛར༻͢ΔͨΊ •͍ͷͰܾࡁͷଌఆ͔Βߦͬͨ
ܾࡁͷଌఆ •pixivi PAY͔Βܾࣾࡁج൫ͷMockԽܾͨ͠ࡁAPIΛୟ͍ͯɺେྔͷܾࡁϦ ΫΤετΛૹͬͨͱ͖ʹ͍ͱ͜Ζ͕ͳ͍͔Λௐͨ •ຊ൪ͷΞϓϦέʔγϣϯαʔόΛ1Γͯͦ͜͠ͰςετΛͨ͠ •unicornϓϩηε30Ͱ25ചങ(50Ϣʔβʔ)ฒྻͰܾࡁΛ࣮ߦ͠ϦΫΤετ͔ ΒϨεϙϯε·Ͱͷ࣌ؒΛଌఆ •ଌఆ݁Ռ •2ඵ(֎෦APIԠͱ΄΅ಉ)Ͱฦ͖͍ͬͯͯΔϦΫΤετ͕େͩ ͕ɺ5ඵ͔͔͍ۙͬͯ͘ΔϦΫΤετ͕͋ͬͨɻ
•ܾࡁͷSlack௨Ͱ٧·͍ͬͯͨͷͰͦ͜ΛඇಉظԽͯ͠ߴԽ
ܾࡁॲཧ࣌ؒʢߴԽޙʣ •֎෦APIͱͷଓ͕ඞཁͳΫϨδοτΧʔυɺPayPal֎෦APIͷॲཧ࣌ؒΑΓ ͘Ͱ͖ͳ͍ •ඇಉظԽݕ౼͕͓ͨ͠٬༷ͷചങ্͛ΒͣݟૹΓ •֎෦APIͷॲཧ૬ͷʢ΄΅ʣݶք·ͰߴԽͰ͖ͨ •pixiv PAYͷॲཧҎԼͷ௨Γ •ΫϨδοτΧʔυ: 1ʙ2ඵʢ֎෦API1ʙ2ඵʣ •PayPal:
3ʙ4ඵʢ֎෦API3ʙ4ඵʣ •ϙΠϯτ: 0.2ඵʢ֎෦APIෆཁʣ
λΠϜΞτ •க໋తͳ •ചΓखͱങ͍खͷؒͰ݁Ռ͕ҟͳͬͯදࣔ͞ΕΔ •ചΓखͱങ͍खʹചങࣦഊ͍ͯ͠ΔΑ͏ʹݟ͑Δ͕ɺ࣮ࡍޭ͠ ͍ͯΔέʔεى͜Γ͑Δ •ൃੜ͍ͯ͠ΔͱࢥΘΕΔϩάͰɺnginx͕εςʔλείʔυ499Λฦ ͍ͯ͠Δ͜ͱ͕͋Δ͜ͱ͕͔ͬͨ •εςʔλείʔυ499ͱɿRailsαʔό͕200OKΛฦ͕͢ɺΫϥΠΞ ϯτଆ͕ͦΕΛड͚औΒͣλΠϜΞτͰ͢Δέʔε •λΠϜΞτΛશʹ͙ํ๏ͳ͍
͋Δέʔε ങ͍ख"QQ OHJOY 0, 0, 0,
&SSPS ܾࡁॲཧͰλΠϜΞτ͢Δ߹ ചΓख"QQ 3BJMT 0, ਖ਼ৗʹ ॲཧྃ &SSPS OHJOY͕ ϨεϙϯεΛ ฦ͢ࡍɺ ΞϓϦ͕طʹ ͬͯͳ͍࣌ ܾࡁ ޭ ܾࡁ ࣦഊ දࣔͷ૬ҧ
λΠϜΞτͷղܾํ๏ •ܾࡁAPIΛҎԼͷ2ͭʹ •ܾࡁAPI(ঢ়ଶΛભҠͤ͞Δ) •݁Ռ֬ೝAPI(ঢ়ଶભҠͳ͠)
Λղܾͨ͠έʔε &SSPS࣌ ങ͍ख"QQ OHJOY 0, 0, &SSPS
ܾࡁॲཧͰλΠϜΞτ͢Δ߹ ചΓख"QQ 3BJMT 0, ਖ਼ৗʹ ॲཧྃ &SSPS ܾࡁ ޭ ܾࡁ ޭ ද͕ࣔҰக 0, 0, 0, Τϥʔ࣌ ࠶߹ͤ
Λղܾͨ͠έʔε ௨ৗ&SSPS࣌ ങ͍ख"QQ OHJOY &SSPS ܾࡁॲཧͰλΠϜΞτ͢Δ߹ ചΓख"QQ 3BJMT &SSPS ਖ਼ৗʹ
ҟৗॲཧ &SSPS ܾࡁ ࣦഊ ܾࡁ ࣦഊ ද͕ࣔҰக &SSPS Τϥʔ࣌ ࠶߹ͤ &SSPS &SSPS &SSPS &SSPS
͕ى͖ͳ͍͔Λ͔֬ΊΔςετ • ίʔυΛॻ͍ͯෛՙςετΛ࣮ࢪ • ߴෛՙ࣌ʹ͕ى͖ͳ͍͜ͱΛ֬ೝͰ͖ͨ • ࣾͰ80ਓूΊ࣮ͯࡍͷΞϓϦͱαʔόڥͰ Ұ੪ʹܾࡁ͢ΔςετΛ࣮ࢪ • Τϥʔ͕Ͱͳ͍͜ͱΛ֬ೝͰ͖ͨ
ଈചձͷ݁Ռ •ଈചձ։࢝ޙʹҰؾʹΞΫη ε͕૿͍͑ͯΔ •ϐʔΫ࣌ͷಉܾ࣌ࡁ(ॲཧ࣌ؒ 2ʙ4ඵ)1ؒʹ80ܾࡁ •ภΓ͕͋ΔͨΊɺඵؒ࠷େͷಉ ܾ࣌ࡁॲཧ6ॲཧ/ඵ
ଈചձΞΫηεσʔλͷ݁ •ܾࡁAPIʢॲཧ࣌ؒ2ʙ4ඵʣ࠷େ80ॲཧ/ •ඵؒ࠷େͷಉܾ࣌ࡁॲཧ6ॲཧ/ඵ •APαʔόʔ3߹ܭ150Workerʹಉܾ࣌ࡁॲཧ͕6ॲཧ •ఆΑΓগͳ͘ɺͳ͘ॲཧΛࡹ͘͜ͱ͕Ͱ͖ͨ •ܾࡁ͕ूத͢Δ։࢝ޙॲཧͰ͖ͨ •ཧతʹɺαʔόΛ૿͢͜ͱͰ͞ΒʹॲཧͰ͖ΔϦΫΤετ Λ૿ͤΔ͜ͱ͕͔ͬͨ
໌Β͔ʹͳٕͬͨज़త՝ •كʹॲཧʹ͕͔͔࣌ؒ͘ΔϦΫΤετ͕ൃੜ͍ͯ͠Δ͜ͱ͕ଈ ചձޙͷϩάνΣοΫͰ໌Β͔ʹͳͬͨ •nginxͷϩάΛ࣌ؒͷ͔͔ͬͨͷͰ߱ॱʹιʔτ͢Δͱɺฏৗ ࣌ͱൺͯ໌Β͔ʹ͍ʢ2ʙ4ඵʣͷ͕ݟ͔ͭͬͨɻ •Ұ෦ͷAPI͚ͩͰͳ͘શAPIͰكʹྼԽ͍ͯ͠Δݱ͕ݟΒΕͨɻ •࣍ͷϖʔδͰQRίʔυੜAPIͷϩάΛྫʹઆ໌͠·͢
QRίʔυੜAPIͷϩά •ϩάΛ͍ॱͰιʔτ͢Δͱ2ඵҎ্͔͔͍ͬͯΔͷ͕ݟ͔ͭͬͨɻ •ීஈ0.5ඵҎԼ •QRίʔυੜAPIͷϩά(͍ॱ)
Ծઆ: ϦΫΤετ͕ଟ͘ɺWorkerΛ͍Ռͨͨ͠ʁ • WorkerΛ͍Ռͨ͢έʔεߟ͑ʹ͍͘ • 150WorkerΛ͍Δ΄ͲͷͷϦΫΤετ དྷ͍ͯͳ͔ͬͨ • ͞ΒʹɺϐʔΫλΠϜҎ֎ʹѱԽ͍ͯ͠Δ έʔε͕͋ͬͨ
Ծઆ: unicornͷ࠶ىಈʹΑͬͯ͘ͳΔʁ •unicorn͕࠶ىಈͨ͠ͱ͖ʹ͘ͳΔέʔε͕ൃੜ͠͏Δ •ϩά͔Βunicorn worker killerʹΑͬͯԿ͔࠶ىಈ͍ͯ͠Δ͜ͱ͕໌ •unicorn worker killer: ϦΫΤετճͰunicornΛ࠶ىಈ͢ΔΈ
•࠶ىಈޙͷϨεϙϯε4ඵ͔͔͍ͬͯͨ •mysqlͷίωΫγϣϯ࡞ʹ͕͔͔࣌ؒΔʁ •ϥΠϒϥϦಡΈࠐΈʹ͕͔͔࣌ؒΔʁ •Πϕϯτதunicornϓϩηεͷఆظ࠶ىಈͷ੍ͳͲͷํ๏Λݕ౼த
Ծઆ: unicornͷ࠶ىಈʹΑͬͯ͘ͳΔʁ •unicorn࠶ىಈ࣌ʹ͘ͳΔέʔε͕ൃੜ͢Δ •ҰํͰ͜Ε͚ͩͰશͯͷϨεϙϯελΠϜ ͷѱԽΛઆ໌Ͱ͖ͳ͍ •ϩάʹ͍ͬͯΔѱԽ͍ͯ͠ΔϨεϙϯεͷ ʹରͯ͠࠶ىಈͷ͕߹Θͳ͍ •ଞʹϨεϙϯε͕͘ͳΔݪҼ͕͋Δʁ
·ͱΊ •ଈചձͰͷܾࡁΛ؆୯ʹ͢ΔαʔϏεpixiv PAY ΛRuby, RailsΛͬͯ։ൃͨ͠ •ຊॳͷΩϟογϡϨεಉਓࢽଈചΠϕϯτΛ։࠵͠ɺ 300ళฮͷܾࡁΛॲཧ͢Δ͜ͱ͕Ͱ͖ͨ •Ruby, RailsΛͬͨγεςϜͰɺαʔόΛ૿͢͜ͱͰ ΑΓଟ͘ͷܾࡁϦΫΤετΛॲཧͰ͖Δݟ௨͠Λཱͯͨ
એ • ଈചձΛΓ্͍͖͍͛ͯͨΤϯδχΞΛืू͍ͯ͠·͢ • ࢲୡͱҰॹʹRailsΛॻ͖·͠ΐ͏ʂ