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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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.5k
OpenJDKアンカンファレンス 2022-09
orekyuu
0
250
至極の難問言語仕様クイズ 〜最強のマルチリンガル決定戦〜
orekyuu
2
2.3k
burikaigi2021 Rails製ECサイトの決済速度を上げろ!〜決済処理チューニングの記録〜
orekyuu
3
1.7k
実際困る!クロスドメイン間のセッション管理を考えよう
orekyuu
1
970
pixiv PAYで運用している フレンズパターン
orekyuu
1
3.7k
Other Decks in Technology
See All in Technology
今こそ知りたいAmplifyGen2
mkdev10
2
150
形式手法を使って仕様をコーディングしよう
mikanichinose
0
180
IR Today: Theory, Practice, and Agents
dtunkelang
0
350
検証フェーズはAIの回答を判断するための学習機会
toru_kubota
2
510
[2026-09-30]ロックンロールは鳴り止まないっ - 信頼性かまってちゃん - 「データ駆動を投げ捨ててまで。」追いかける信頼性改善に向けた取り組みの話
tosite
0
210
不可逆な意思決定を避けながら10億超の顧客データを AI Ready にするデータ基盤設計
baseballyama
1
130
SREでアラート疲れを 解決しよう!
kairim0
1
210
AI Made Us Faster at Solving the Wrong Problems
marceloancelmo
0
180
UniFi(ユニファイ)AIカメラの現場活用
ludicmind
1
130
LLM機能を自作して分かるSnowflake Cortex AIの強み
nayuts
0
310
AI駆動開発、viviONの1年 ── うまくいったこと・いかなかったこと
vivion
0
260
脆弱性診断って、何をしているの? 〜弱点を見つけて、会社の改善につなげるまで〜
keeg
0
290
Featured
See All Featured
Git: the NoSQL Database
bkeepers
PRO
433
67k
Designing Experiences People Love
moore
143
24k
Making Projects Easy
brettharned
120
6.8k
How GitHub (no longer) Works
holman
316
150k
We Are The Robots
honzajavorek
0
390
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Test your architecture with Archunit
thirion
2
2.4k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
Google's AI Overviews - The New Search
badams
0
1.6k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Code Review Best Practice
trishagee
74
20k
Automating Front-end Workflow
addyosmani
1369
210k
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Λॻ͖·͠ΐ͏ʂ