Upgrade to Pro — share decks privately, control downloads, hide ads and more …

burikaigi2021 Rails製ECサイトの決済速度を上げろ!〜決済処理チューニングの記録〜

orekyuu
January 30, 2021
1.4k

burikaigi2021 Rails製ECサイトの決済速度を上げろ!〜決済処理チューニングの記録〜

orekyuu

January 30, 2021
Tweet

Transcript

  1. !PSFLZVV
    3BJMT੡&$αΠτͷܾࡁ଎౓
    Λ্͛Ζʂ
    dܾࡁॲཧνϡʔχϯάͷه࿥d

    View Slide

  2. ࠓ೔ɺ࿩ͨ͠Γ࿩͞ͳ͔ͬͨΓ͢Δਓʹ͍ͭͯ
    ͓Ε͖Ύʔɹ!PSFLZVV
    ϐΫγϒגࣜձࣾॴଐ
    ޷͖+BWB
    ࢓ࣄ3VCZ
    ΤϯδχΞྺ೥
    23ίʔυܾࡁΞϓϦͷ্ཱͪ͛΍ͬͨΓ
    ೝূೝՄαʔόʔ΍ͬͨΓ
    &$αΠτ࡞ͬͨΓ
    5XJUUFSͷ͕ͨ͢
    εϥΠυʹޱڬΉ໾

    View Slide

  3. ໨࣍
    w ର৅ͷΞϓϦέʔγϣϯʹ͍ͭͯ
    w ๊͍͑ͯͨ໰୊ʹ͍ͭͯ
    w ঱ঢ়
    w ݪҼ
    w ղܾ
    w ·ͱΊ

    View Slide

  4. ͋Δ೔ɺಥવ4MBDLʹΞϥʔτ͕ྲྀΕ࢝ΊΔ
    -PDLBXBJUUJNFPVUFYFFEFE

    View Slide

  5. ʮ999ͷ஫จ͕ࡴ౸ͯ͠·͢Ͷʯ

    View Slide

  6. #005)ʹ͍ͭͯ
    w ϐΫγϒ͕ӡӦ͍ͯ͠Δ&$αΠτ
    w ݸਓͰ࡞ͬͨάοζ΍ɺΠϥετຊɺԻָͳͲͷ૑࡞෺͕ू·͍ͬͯΔ
    w ߪೖͨ͠঎඼ʹߪೖऀֹ͕ۚΛ্৐ͤͰ͖Δʮ#0045ػೳʯͳͲ͕͋Δ
    ๻͸΋ͬͱ͓ۚ෷Θͤͯͷؾ࣋ͪͰ্৐ͤͨ͠Γ͢Δ

    View Slide

  7. γεςϜͷ࿩
    w Α͋͘ΔϞϊϦγοΫͳ3BJMTΞϓϦ
    w "1αʔόʔ͕୆
    w %#͸.Z42-
    w ͋ͱ͸Ωϟογϡ΍TJEFLJRͷͨΊʹ3FEJT
    w ݕࡧͷͨΊʹ&MBTUJDTFBSDI
    w ؂ࢹʹڈ೥ลΓ͔Β%BUBEPH͕ೖͬͨ
    ฐࣾ͸جຊΦϯϓϨͰ͢ɻσʔλݘ͕ೖͬͯศརʹͳΓ·ͨ͠ɻ

    View Slide

  8. ͲΜͳͱ͖ʹ஫จ͕ࡴ౸͢Δ͔
    w ظؒݶఆൢചͷൢച։࢝࣌ͱ͔
    ྫϑΝϯͷଟ͍ΫϦΤΠλʔ͕4/4Ͱ঎඼63-Λ֦ࢄͨ͠ͱ͔
    w :PVUVCFͳͲͷ഑৴αʔϏε͔Β
    ྫ഑৴αʔϏε಺Ͱ999ͬͯάοζ͕ࠓ͔Βങ͑·͢ʂͱ͔
    ๻ͷ৔߹ɺಉਓ͸ೋ౓ͱखʹೖΒͳ͍͔΋͔ͩΒ༨ܭʹ೤͕ೖΔ

    View Slide

  9. ஫จ͕ࡴ౸ͨ͠ͱ͖ɺԿ͕ى͍ͬͯͨ͜ͷ͔ʁ

    View Slide

  10. ো֐ͷ಺༰ͱݪҼ
    w ܾࡁ࣌ʹ਺ඵ͔͔Δ௕͍൵؍తϩοΫΛͱ͍ͬͯΔ
    w ࡏݿΛݮࢉ͢ΔͨΊɺ঎඼ͰϩοΫΛऔΔ
    ಉ͡঎඼ʹ஫จ͕ࡴ౸͢Δͱ%#Ͱ٧·Δ
    ϩοΫ͕ͳ͚Ε͹ɺݸ͔͠ചΕͳ͍ͷʹݸ஫จ͕͋Δͱ͔ʹ

    View Slide

  11. ॲཧΠϝʔδ
    def checkout!
    ActiveRecord::Base.transaction do
    ঎඼ͷ൵؍తϩοΫ # ࡏݿ਺Λಉ࣌ʹฤू͠ͳ͍Α͏ʹϩοΫΛऔΔ
    ঎඼ͷࡏݿͷݮࢉॲཧ
    ஫จΛ֬ఆࡁΈʹ͢Δ
    ܾࡁͷ੥ٻAPIΛୟ͘
    end
    end
    ܾࡁͷ੥ٻ"1*ʹࣦഊ͢Δͱࡏݿ͕ϩʔϧόοΫ͞Εͯखܰ

    View Slide

  12. ରࡦҊ
    w ࡏݿݸຖʹϨίʔυΛ༻ҙͯ͠ɺͦΕͰϩοΫΛऔΔ
    w ܾࡁ͞ΕΔ͝ͱʹTJEFLJRʹ+PCΛੵΜͰඇಉظͰঃʑʹফԽ͢Δ
    w τϥϯβΫγϣϯΛ෼ׂ͢Δ

    View Slide

  13. ❌ࡏݿݸຕʹϨίʔυΛ༻ҙ͢Δ
    w ख࢝Ίʹଞͷਓ͸Ͳ͏͍ͯ͠ΔΜͩΖ͏ͳʔͱʮࡏݿॲཧɹϩοΫʯ͋ͨΓ
    Ͱݕࡧ͢Δͱग़͖ͯͨ
    w ࡏݿ͝ͱʹϨίʔυΛ࡞ͬͯϩοΫΛͱͬͯɺ͋͛Ε͹Α͍ΑͶ
    w ࡏݿ਺ͷTVNΛͱͬͯΈΔͱ਺ԯʹͳΔ
    w ݱ࣮త͡Όͳ͍
    ͜Ε΍ͬͯΔਓຊ౰ʹ͓ΔΜ͔ʁ

    View Slide

  14. ❌ܾࡁ͞ΕͨΒ+PCΛੵΜͰඇಉظͰ
    w ܾࡁ͞ΕͨΒ+PCΛੵΜͰඇಉظॲཧͰܾࡁΛߦ͏
    w ঎඼ͰϩοΫΛͱͬͯɺࡏݿݮࢉͱܾࡁॲཧΛτϥϯβΫγϣϯͰғΉ
    w ܾࡁ͕ऴΘͬͨΒԿΒ͔ͷํ๏ͰϢʔβʔʹ௨஌
    w ܾࡁ͔ͯ͠Β݁Ռ͕ฦͬͯ͘Δ·ͰϢʔβʔʹͱͬͯෆ໌ͳঢ়ଶʹ
    w ମݧ͕͕ͬͭΓ͔ΘΔ
    w ԾʹඵܾࡁͰ෼ۙ͘଴ͨ͞ΕΔܭࢉ
    ѱ͘͸ͳ͍͔΋͚ͩͲɺମݧม͑Δͷ͸େมͦ͏

    View Slide

  15. ⭕τϥϯβΫγϣϯ෼ׂ
    w ࡏݿͷݮࢉͱܾࡁͷͭͷτϥϯβΫγϣϯʹ෼ׂ͢Δ
    w ϩοΫΛͱͬͯࡏݿΛ֬อ͢ΔτϥϯβΫγϣϯ
    w ֬อͨ͠ࡏݿΛ֬ఆܾͤͯ͞ࡁΛߦ͏τϥϯβΫγϣϯ
    w ࣌ؒͷ͔͔ΔܾࡁΛߦ͏τϥϯβΫγϣϯͰ͸ϩοΫΛऔΒͳ͍
    w ܾࡁ͕ฒྻ࣮ߦՄೳ
    w Ϣʔβʔͷମݧ΋มΘΒͳ͍
    ମݧ͔͑ͣʹεϧʔϓοτΛ্͛Δ͜ͱ͕Ͱ͖Δ

    View Slide

  16. ͪΐͬͱҰݺٵ

    View Slide

  17. ਖ਼ৗܥͷྲྀΕ
    ҟৗܥͷྲྀΕ
    ࡏݿ֬อ
    5SBO
    ࡏݿ
    ࡏݿ༧໿ ܾࡁ5SBO
    ༧໿Ϩίʔυ࡞੒ ࡏݿݮࢉ
    ࡏݿՃࢉ
    ༧໿Ϩίʔυ࡟আ
    ࡏݿ༧໿
    ༧໿Ϩίʔυ࡟আ
    3%#ϩʔϧόοΫ
    ܾࡁ੒ޭ
    ͜͜͸঎඼Ͱ൵؍ϩοΫ ͬͪ͜͸ϩοΫͳ͠

    View Slide

  18. ਖ਼ৗܥͷྲྀΕ
    ҟৗܥͷྲྀΕ
    ࡏݿ֬อ
    5SBO
    ࡏݿ
    ࡏݿ༧໿ ܾࡁ5SBO
    ༧໿Ϩίʔυ࡞੒ ࡏݿݮࢉ
    ࡏݿՃࢉ
    ༧໿Ϩίʔυ࡟আ
    ࡏݿ༧໿
    ༧໿Ϩίʔυ࡟আ
    3%#ϩʔϧόοΫ
    ܾࡁ੒ޭ

    ো֐ൃੜ

    View Slide

  19. ਖ਼ৗܥͷྲྀΕ
    ҟৗܥͷྲྀΕ
    ࡏݿ֬อ
    5SBO
    ࡏݿ
    ࡏݿ༧໿ ܾࡁ5SBO
    ༧໿Ϩίʔυ࡞੒ ࡏݿݮࢉ
    ࡏݿՃࢉ
    ༧໿Ϩίʔυ࡟আ
    ࡏݿ༧໿
    ༧໿Ϩίʔυ࡟আ
    3%#ϩʔϧόοΫ
    ܾࡁ੒ޭ

    ো֐ൃੜ

    View Slide

  20. ਖ਼ৗܥͷྲྀΕ
    ҟৗܥͷྲྀΕ
    ࡏݿ֬อ
    5SBO
    ࡏݿ
    ࡏݿ༧໿ ܾࡁ5SBO
    ༧໿Ϩίʔυ࡞੒ ࡏݿݮࢉ
    ࡏݿՃࢉ
    ༧໿Ϩίʔυ࡟আ
    ࡏݿ༧໿
    ༧໿Ϩίʔυ࡟আ
    3%#ϩʔϧόοΫ
    ܾࡁ੒ޭ

    ো֐ൃੜ

    %#઀ଓෆՄ

    View Slide

  21. ਖ਼ৗܥͷྲྀΕ
    ҟৗܥͷྲྀΕ
    ࡏݿ֬อ
    5SBO
    ࡏݿ
    ࡏݿ༧໿ ܾࡁ5SBO
    ༧໿Ϩίʔυ࡞੒ ࡏݿݮࢉ
    ࡏݿՃࢉ
    ༧໿Ϩίʔυ࡟আ
    ࡏݿ༧໿
    ༧໿Ϩίʔυ࡟আ
    3%#ϩʔϧόοΫ
    ܾࡁ੒ޭ

    ো֐ൃੜ

    %#઀ଓෆՄ
    :"#"*

    View Slide

  22. ΤϥʔॲཧͷΤϥʔ
    w ิঈτϥϯβΫγϣϯͰΤϥʔʹͳͬͨΒʁʁʁ
    w ໭͢ର৅͸ࡏݿ༧໿ͷςʔϒϧʹ৘ใ͕࢒͍ͬͯΔ
    w ͭ·Γɺ໭͢ର৅ͷࡏݿ༧໿Ϩίʔυ͕Θ͔Ε͹ࡏݿΛ໭ͤΔ
    w ఆظ࣮ߦͰࡏݿ༧໿ϨίʔυΛ؂ࢹͯ͠ɺ௕࣌ؒ࢒͍ͬͯΔ΋ͷΛର৅ʹ໭ͤ
    ͹ྑ͍
    Կ౓΋໭ͤͳ͔ͬͨΒΞϥʔτΛ͋͛·͢

    View Slide

  23. ࣮ࡍ͸ͦ͏͏·͘͸͍͔ͳ͍ɾɾɾ

    View Slide

  24. "DUJWF3FDPSE$BMMCBDL

    View Slide

  25. "DUJWF3FDPSE$BMMCBDL
    w [email protected]΍[email protected]ͳͲͷz3%#ʹର͢Δૢ࡞zͷΠϕϯτͰϝιο
    υΛ࣮ߦ͢Δػೳ
    w ίʔϧόοΫΛଟ༻͢Δ࡞Γʹͳ͍ͬͯͯɺ஫จ࡞੒࣌ʹϐλΰϥεΠονత
    ʹ͍ΖΜͳίʔϧόοΫ͕ൃՐ͢Δ
    w Ͳ͜·Ͱࡏݿ֬อτϥϯβΫγϣϯʹ͢Δඞཁ͕͋Δ͔ɺิঈτϥϯβΫ
    γϣϯͰͲ͏ॲཧ͢Δ͔શମ૾͕௥͍ʹ͍͘
    w HSFQ͕Ή͍ͣ
    [email protected] ͳͱ͖͚ͩ[email protected]͕ݺ͹ΕΔΈ͍ͨͳͷ΋

    View Slide

  26. "DUJWF3FDPSE$BMMCBDLͷ౗͠ํ
    w ର৅ͱͳΔॲཧʹରͯ͠ͷTQFDΛॻ͖·͢
    w ࣮ߦ͠·͢
    w ൃߦ͞Εͨ42-Λݟ·͢
    w ൃߦ͞Εͨ42-͔ΒͦΕͬΆ͍ͷΛΤεύʔ
    w ίʔϧόοΫΛࡴͯ͠খ͍͞ू໿ʹ͍ͯ͘͠
    ฐࣾͰ͸TQFDΛͪΌΜͱॻ͍͍ͯΔͷͰɺͦ͜͸ָͰͨ͠

    View Slide

  27. ಘΒΕͨڭ܇
    w ௕͔͔࣌ؒΔτϥϯβΫγϣϯͰͷ൵؍తϩοΫ͸৻ॏʹ
    w ՄೳͰ͋Ε͹ආ͚Δ
    w ࣗ෼͕ѱ͍͜ͱΛ͢ΔͳΒɺͲ͜ͰͳΜͷো֐ى͜͢ͱ͜·Γͦ͏ʁ
    w ॾઆ͋Δ͚ΕͲ
    "DUJWF3FDPSE$BMMCBDLΛආ͚Δ
    w ࣋࿦Ͱ͕͢ɺ3%#ͷΠϕϯτΛى఺ʹϏδωεϩδοΫΛݺͼग़͢ͷ
    ͓͔͘͠ͳ͍ʁ
    ࣗ෼͕ѱ͍͜ͱ͢ΔͳΒʙΛʮΘΔ͖Ύʔ͞ΜͳΒ999ʯΈ͍ͨʹݴͬͯΔ

    View Slide

  28. ͜ͷվળޙ͔Β൒೥
    ൵؍ϩοΫͰ٧·ͬͯ·ͤΜ

    View Slide

  29. ΍ɺ΍͔ͬͨʂʁ

    View Slide

  30. ͋Δ೔ɺಥવϨεϙϯεΛฦ͞ͳ͘ͳΔ
    ݫີʹݴ͏ͱΊͬͪΌ஗͍

    View Slide

  31. ʮ999ͷ஫จ͕ࡴ౸ͯ͠·͢Ͷʯ
    ͜͜স͏ͱ͜ΖͰ͢Α

    View Slide

  32. ࣍ͷϘτϧωοΫʜ
    w ਓؾͷ঎඼Λങ͓͏ͱΞΫηε͕ࡴ౸
    w ͨͿΜ͢΂ͯͷϖʔδͷԠ౴͕஗͘ͳͬͨ
    w "1ͷ$16͕ʹுΓ෇͍ͨ
    w %#ͷΞϥʔτ͸্͕ͬͯͳ͍
    w %BUBEPHͷ5SBDFΛݟΔͱશମతʹۃ୺ʹ஗͍
    %BUBEPHೖͬͯͯΑ͔ͬͨʙ

    View Slide

  33. ࣍ͷϘτϧωοΫʜ
    w 3VCZ͕஗͍
    w ͱ͍͏͔TMJN ςϯϓϨʔτΤϯδϯ
    ͷ࣮ߦ͕஗͍
    w %0.ͷ૊ΈཱͯͬͯେมͳΜͩͳʙ
    w ࣍͸ଟ෼%0.ͷ૊ΈཱͯΛ7VFʹ͍࣋ͬͯ͘͜ͱʹͳΓͦ͏
    4MJNૣ͘Ͱ͖ͳ͍͔GPSL͚ͨ͠Ͳɺߟ͑ΒΕΔ࠷దԽ͸ͯ͋ͬͨ͠

    View Slide

  34. Զୡͷઓ͍͸
    ͜Ε͔Β΋ଓ͍͍ͯ͘ʜ

    View Slide