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.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
GitHub Agentic Workflows を触ってみる
htkym
2
780
【ゲームメーカーズスクランブル2026】『Shadowverse: Worlds Beyond』UIとアニメーションで実現する最高のユーザー体験を叶えるプロトタイピング
cygames
PRO
1
650
AWS App Runnerから Cloudflare Workersへ移行した話
ryota09
0
110
AIに賢く動いてもらうためのコンテキスト〜Snowflake女子会 vol.8
snowwmn0824
0
190
あけおめLINE 傾向とその対策
nasa9084
0
340
AI臭い文章とは何なのか
nasuvitz
10
5.2k
20260929_AmazonGuardDutyの検出通知メールにAWS DevOpsAgentの調査結果を追加する
yhana
1
270
その Lambda、8分で 管理者権限まで奪われます
k1nakayama
7
3.8k
AIエージェントを安全で速い現場監督にする:Jev・Obsidian・メタハーネス
x5gtrn
PRO
0
130
Azure Copilot Resiliency Agentをいろいろ試してみる
tomokusaba
0
120
Mastering Agentic Development: Harness Engineering for Effective Coding Agents
konippi
3
600
人にやさしく、AIにやさしく、書き手を選ばないIaCのガードレール再考 / Rethinking IaC Guardrails for Humans and AI Alike
kohbis
5
1.4k
Featured
See All Featured
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
540
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
330
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
BBQ
matthewcrist
89
10k
Building AI with AI
inesmontani
PRO
1
1.3k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
290
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
68
58k
Statistics for Hackers
jakevdp
799
230k
Exploring anti-patterns in Rails
aemeredith
4
520
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
HDC tutorial
michielstock
2
920
Java REST API Framework Comparison - PWX 2021
mraible
34
9.7k
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Λॻ͖·͠ΐ͏ʂ