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
日本初のキャッシュレス即売会を支えた決済アプリ pixiv PAYの技術
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
orekyuu
November 06, 2018
Technology
1.7k
1
Share
日本初のキャッシュレス即売会を支えた決済アプリ 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.4k
OpenJDKアンカンファレンス 2022-09
orekyuu
0
200
至極の難問言語仕様クイズ 〜最強のマルチリンガル決定戦〜
orekyuu
2
2.3k
burikaigi2021 Rails製ECサイトの決済速度を上げろ!〜決済処理チューニングの記録〜
orekyuu
3
1.7k
実際困る!クロスドメイン間のセッション管理を考えよう
orekyuu
1
940
pixiv PAYで運用している フレンズパターン
orekyuu
1
3.6k
Other Decks in Technology
See All in Technology
QGISプラグイン CMChangeDetector
naokimuroki
1
280
研究開発部メンバーの働き⽅ / Sansan R&D Profile
sansan33
PRO
4
23k
JEDAI in Osaka 2026イントロ
taka_aki
0
230
2026年、知っておくべき最新 サーバレスTips10選/serverless-10-tips
slsops
12
4.9k
3つのボトルネックを解消し、リリースエンジニアリングを再定義した話
nealle
0
490
AI時代における技術的負債への取り組み
codenote
0
200
Master Dataグループ紹介資料
sansan33
PRO
1
4.6k
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.4k
Code Interpreter で、AIに安全に コードを書かせる。
yokomachi
0
6.4k
CDK Insightsで見る、AIによるCDKコード静的解析(+AI解析)
k_adachi_01
2
170
#jawsugyokohama 100 LT11, "My AWS Journey 2011-2026 - kwntravel"
shinichirokawano
0
290
Azure Lifecycle with Copilot CLI
torumakabe
3
950
Featured
See All Featured
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
100
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
160
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
110k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
64
53k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
190
sira's awesome portfolio website redesign presentation
elsirapls
0
210
Building Adaptive Systems
keathley
44
3k
The Curious Case for Waylosing
cassininazir
0
300
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
330
Thoughts on Productivity
jonyablonski
76
5.1k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
130
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
270
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Λॻ͖·͠ΐ͏ʂ