minne でのハイブリッドクラウド運用と CM 対応での構成変更とパフォーマンス改善の話@Rails Developers Meetup 2018: Day 2
$.ରԠͰͷߏมߋͱύϑΥʔϚϯεվળޙ౻རത(.01FQBCP *OD3BJMT%FWFMPQFST.FFUVQ%BZNJOOFͰͷϋΠϒϦουΫϥυӡ༻
View Slide
νʔϑςΫχΧϧϦʔυ5PTIJIJSP([email protected]NJOOFࣄۀ෦ˏ(.0ϖύϘ
NJOOFͱwΞϓϦ%-ສw࡞ՈສਓwTFSWFSw3BJMTw3VCZw"84/ZBI
"84/ZBI
/ZBI
/ZBIͱwϖύϘͷԾΠϯϑϥج൫w0QFO4UBDLͰߏw݄͔Βӡ༻։࢝wNJOOFͰ݄ࠒ͔Βར༻։࢝
ͳͥ"84/ZBI
"84/ZBIͷཧ༝ͱw"84Λ͏͜ͱʹͳͬͨܦҢΛՃ͢ΔNJOOFͷٕज़ج൫ઓུ!ITCUΛࢀরwίετ"84/ZBIw৴པੑ ಛʹσʔλετΞ"84/ZBIw3BJMT ଞ͕ಈ͘TFSWFS/ZBIwσʔλετΞ"84
Oͷ$.
͔Θ͍͍
ۓٸটू͞ΕΔਓʑ
$.ରԠͷۓٸটूwઈରʹམͱͨ͘͠ͳ͍ʂʂ̍wສ͕ҰམͪͯϦΧόϦ͍ͨ͠w࣌ͷΞΫηεͷഒΛࡹ͚ΔΑ͏ʹඋ͑Δwࡢࠓ૿͍͑ͯΔ%%P4ͷඋ͑w࠷ۙ ׂͱͣͬͱʁQVTI࣌ʹ3%4ͷ$16༻
%%P4ͷඋ͑
$.ରԠલͷߏ ؆ུਤ
%%P4ରԠw%%P4ͳͲͰ/ZBIΛӡ༻͍ͯ͠Δσʔληϯλʔ͕Ұ࣌తʹར༻Ͱ͖ͳ͍ঢ়ଶʹͳͬͨࡍʹNJOOFར༻Ͱ͖ͳ͍w࠷ѱσʔληϯλʔ͕ࢮΜͰNJOOFΛར༻Ͱ͖ΔΑ͏ʹ"84ଆͰ&$ΠϯελϯεΛىಈ͓͖ͯ͠ΞΫηεͰ͖ΔΑ͏ʹ͢Δw$MPVE'SPOUΛར༻ͨ͠%%P4ରԠ
$.ରԠޙͷߏ ؆ུਤ
$.ରԠޙͷߏwϢʔβ͔ΒͷΞΫηε$MPVE'SPOUΛ௨͢͜ͱʹΑΓ"844IJFME4UBOEBSEͰ%%P4ޚw"84ଆʹ3BJMT͕ಈ͍͍ͯΔ&$ΠϯελϯεΛཱͯͨwSPVUFʹΑͬͯ"84/ZBIΞΫηεΛৼΓ͚Δw/ZBIͷσʔληϯλʔʹো͕ى͖ͨ߹ɺͯ͢ͷΞΫηεΛ"84ଆʹ͚Δ͜ͱͰճආw/ZBIଆͰΠϯελϯεΛ૿ͤΔʹݶք͕͋ͬͨͱ͍͏ࣄ
%%P4ରԠ
3%4ͷύϑΥʔϚϯεվળ
3%4ͷw3%4GPS.Z42-ͷ͓wΠϯελϯεαΠζSYMBSHFwࠓ·ͰۚͰԥ͖ͬͯͨw1VTI৴࣌ʹ$16༻͑wॏͯ͘ܨ͕Βͳ͍͜ͱ
1VTI࣌ͷରԠ
1VTI࣌ͷରԠwJ04ͷ1VTIͷ࣌ͷΈ$16༻͕ΞήΞήwϢʔβͰJ04"OESPJEw4MPX2VFSZΛݟͯ$16༻্͕͕ͬͨ͋ͱؔͳ͍2VFSZ-PHʹग़ͪΌ͏w྆04Ͱͷ1VTI࣌ͷ"1*ͷΞΫηεͷҧ͍ΛݟͯΈΔ
CJHGPPUΛ͏
CJHGPPUͱwϖύϘͷϩάج൫wόοΫΤϯυʹ5SFBTVSF%BUBΛར༻͍ͯ͠ΔwΞΫηεϨίʔυʹͳΔΑ͏ʹQBSBNTͷΛૹ͍ͬͯΔwৄ͘͠αʔϏεʹدΓఴ͏ϩάج൫Λࢀর
ΫΤϦΛॻ͍ͯௐͨ݁Ռ
SELECTCOUNT(1) AS cnt, params_controller, params_actionFROM minne_activityWHERE TD_TIME_RANGE(time, "2017-10-18 20:00:00", "2017-10-18 20:06:00", 'JST')GROUP BY params_controller, params_actionORDER BY cnt DESC;
ݪҼ͕໌wJ04Ͱಛఆͷ"1*ͷΈଞͷ"1*ͷഒͷΞΫηε͕͋ͬͨw/ͷΑ͏ͳঢ়ଶͰ"1*ΛDBMM͍ͯͨ͠wJ04ͷվमߟ͕͑ͨɺΞΫηε͕ݱঢ়ͷेഒʹͳͬͨΒ݁ہಉ݁͡ՌʹͳΔͷͰ"1*ଆͰରԠw֘ͷ"1*ͷΫΤϦ࣮ߦܭըྑͳͷͰDBDIFΛ͏
DBDIF͢ΔRails.cache.fetch(cache_key, expires_in: 1.minutes) do@curation.products.includes(:hogehoge).page(params[:page]).per(20)end[email protected]QBSBNTͷ͔Βੜw࡞ͷใʹࡏݿͳͲؚ·ΕΔͨΊ͋Δఔ৽ͳσʔλ͕ཉ͍͠ͷͰNJOVUFͰDBDIF͕ΕΔΑ͏ʹઃఆͨ͠
݁Ռ
͜ΕͰ$.४උόονϦʂʂ̍
ͬͯࢥ͏͡Όͳ͍Ͱ͔͢
ޙw1VTI৴ޙͰͳ͍ͷʹ3%4ͷ$16༻͕ര্͛wݪҼϘτϧωοΫΛղফͨ͜͠ͱʹΑΓϢʔβͷߦಈ͕มԽ͠ผͷϘτϧωοΫ͕ු͖ூΓʹ ͋Δ͋Δwॏ͘ͳΔݪҼΛ࡞ͬͨΫΤϦΛಛఆͨ͠Β࣮ߦܭը࠷ѱͱ͍͏ײ͡wͦͷଞʹଟͷ࣮ߦܭըͷѱ͍ΫΤϦ͕wۚͰԥ͖ͬͯͨπέ͕
۪ʹվળ͢Δ͔͠ͳ͍Ͷ
ΫΤϦվળwTMPXMPHͷग़ྗΛߦ͏ ݩʑग़ྗ͍ͯͨ͠wFYQMBJOΛ࣮ͬͯߦܭըͷ֬ೝwFYQMBJOͰ͕Α͘Θ͔Βͳ͍߹ϓϩϑΝΠϥʔ͏
&YQMBJO
&YQMBJOwΫΤϦͷ࣮ߦܭըͷ֬ೝ͕Ͱ͖ΔwGPSNBUKTPOΛࢦఆ͢Δͱใ͕૿͑ΔwUZQF"--ͱ͔ग़ͯΔͱਏ͍w&YUSBʹ6TJOHpMFTPSUUFNQPSBSZͱ͔ग़ͯΔͱਏ͍w݁ՌΛݩʹ༗ޮͦ͏ͳJOEFYͷՃΛߦ͏wదʹJOEFY͕ΘΕͳ͍߹64&*/%&9ߏจͰڧ੍͢Δ
ϓϩϑΝΠϥʔ
ϓϩϑΝΠϥʔwΫΤϦͷͲͷஈ֊ͷॲཧʹͲͷ͘Β͍ͷ͕͔͔͍࣌ؒͬͯΔ͔ʁΛݟΔ͜ͱ͕Ͱ͖Δɻw&YQMBJOͰ͕ͳͦ͞͏ͳΫΤϦͷΛݟ͚ͭΕΔՄೳੑ͕͋Δw&YQMBJOͰΘ͔Βͳ͍αʔόͷύϥϝʔλͷௐ͕ඞཁ͔ʁ͕Θ͔Δ͔͠Εͳ͍
͜ΕΒΛۦ͠վળΛॏͶͨ݁Ռ
վળ݁Ռw$16༻͕Λ͑ͳ͘ͳͬͨw1VTI৴࣌ʹॏ͘ͳΔ͜ͱͳ͘ͳͬͨwٸʹߴෛՙʹͳΔ͜ͱͳ͘ͳͬͨwSYMBSHF͏ҙຯͳ͍ͷͰ
ಉ͡ঢ়گʹͳΒͳ͍ҝʹw௨Λ༗ޮ׆༻͢Δ ࠓͰ௨͕͕͋ͬͨجຊεϧʔwࠓճͷ݅Λड͚ͯҰ෦ͷϝϯόʔͷҙ͕ࣝมΘͬͯࢹͯ͘͠ΕΔΑ͏ʹͳͬͨwσʔλྔʹΑ࣮ͬͯߦܭըมΘͬͯ͘ΔͷͰϩάΛऩू͍͍ͯ͠ײ͡ʹ͍͖͍ͯͨ͠wΘΕͯͳ͍JOEFYཧ͍͖͍ͯͨ͠
͞Βʹඋ͑Δ
͞ΒͳΔରԠw͓ͦΒ͘͜ΕͰେৎ͕ͩ࠷ѱͷঢ়گΛؑΈͯ४උ͢ΔwNJOOFNBTUFSTMBWF ूܭΫΤϦ༻wNBTUFSͰͲ͏͠Α͏ͳ͍ͱ͍͏ঢ়گʹͳͬͨࡍʹεέʔϧͰ͖ΔΑ͏ʹ४උ͓ͯ͘͠wNBTUFSTMBWF 3BJMT༻TMBWF ूܭΫΤϦ༻͘Β͍͕ཧ
PDUPQVTΛ͏wTXJUDIQPJOUݕ౼ͨ͠w४උظ͕ؒिؒఔͱ͍͏ظؒͱ͍͏੍͕͋ΔͷͰಋೖܦݧ͕͋ΔPDUPQVTΛબwͰͲ͏͠Α͏ͳ͘ͳͬͨ࣌Λఆͯ͠TMBWFΛཱ࣮ͯͯࡍʹຊ൪ͰͦͪΒʹΫΤϦΛྲྀ͢ͱ͍͏ͱ͜·ͰૉৼΓͨ͠w$.࣌PDUPQVTΛ͕ͬͨݱࡏTXJUDIQPJOUΛ͍ͬͯΔ
ͦͷଞͷ$.ରԠw"NB[PO"VSPSBબࢶͱͯ͋ͬͨ͠ͷͰݕূΛߦ͍࣮ࡍʹࢀরΫΤϦΛྲྀ͢ͱ͍͏͜ͱͬͯΈͨɻw͔͠͠ظ͍ͯͨ͠ύϑΥʔϚϯεվળ͕ݟΒΕͳ͔ͬͨw"-#Ͱ"84/ZBIؒͷΞΫηεΛॠ࣌ʹৼΓ͚ΒΕΔ͔ͷݕূw1&3$0/"UPPMLJUͷQULJMMͷಋೖͷݕ౼
ͦΜͳ͜ΜͳͰ͍͟$.։࢝
݁Ռ͔Β͍͏ͱ
શ͘མͪͳ͔ͬͨ
$.։͔࢝Βऴྃ·Ͱͷঢ়گwશ͘མͪͳ͔ͬͨw3%4ͷ$16༻ۭඈߦwTMBWFʹΫΤϦΛྲྀ͢४උग़དྷ͍͕࣮ͯͨࡍʹTMBWFTFSWFSΛཱͯͯΫΤϦΛྲྀ͢ͱ͍͏͜ͱͳ͔ͬͨw%%P4ͳ͘ฏʹաͤͨ͝
·ͱΊ
·ͱΊw"84/ZBIͷϋΠϒϦουΫϥυͷཧ༝ίετͱ৴པੑͱݎ࿚ͳγεςϜΛ࡞ΔҝwϚΠΫϩαʔϏεԽΛਐΊ͍ͯΔͷͰ3%4͕ඞཁͱ͍͏໘ݮΔ͔͠Εͳ͍wߴෛՙͷݪҼΛΔҝʹߦಈϩάͷ׆༻Λߦ͏ͷҰͭͷखஈwΫΤϦͷνϡʔχϯάେࣄOwۚͰԥΓଓ͚Δͷྑ͘ͳ͍ʂ