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

HARD THINGS in Ad-Tech Engineering

jsoizo
April 25, 2017

HARD THINGS in Ad-Tech Engineering

Apr 25, 2017 /
Speee Cafe Meetup #06

の資料です。

jsoizo

April 25, 2017
Tweet

More Decks by jsoizo

Other Decks in Programming

Transcript

  1. whoami • ໊લ : @jsoizo / Jun Sakamoto • ݴޠ

    : JavaScriptͱScalaΛগʑ • ॴଐ : • ໾ׂ : ৽نΞυϓϩμΫτͷProduct Manager • “Project” Manager͔Βͷస਎νϟϨϯδத • લ৬͔Β਺͑ͯΞυςΫྺ6೥໨ 
  2. 1. ୤EBS EBS = Elastic Block Store • EC2ʹϚ΢ϯτՄ •

    ߴ͍Մ༻ੑͱ଱ٱੑ • ωοτϫʔΫܦ༝ͰI/O • ಺෦తʹ͸৑௕Խ͞Ε͍ͯΔ • EC2ىಈ࣌ʹEBS࠷దԽΦϓγϣϯΛ෺ཧతʹೖΕͳ͍ͱΠϯελϯεͱEBS͕ ෺ཧతʹ཭ΕΔ ো֐࣌ʹ͸EBSͷσΟεΫނোͰEBS͕ϑΣΠϧΦʔόʔதʹ਺෼ؒ໧ͬͯ͠·ͬͨ 
  3. 2. KVSΫϥελґଘΛ΍ΊΔ  • 1ͭͷKVSΫϥελ • SSDʹอଘ(memcached, redis౳ͱͷҧ͍) • ͕ɺϝϞϦʹอଘ͢ΔϓϩμΫτ૬Ԡʹ଎͍

    • ࢖్͸ओʹҎԼͷ3ͭ • ഑৴αʔόͷ಺෦ΦʔΫγϣϯ༻༧ࢉ؅ཧ • ଐੑλʔήςΟϯά x3 छྨ • ϦλʔήςΟϯά
  4. 2. KVSΫϥελґଘΛ΍ΊΔ (1) ഑৴αʔόͷΦʔΫγϣϯͰͷࢀরΛվળͯ͠KVSͷར༻ྔΛݮΒͨ͠ • چ • ಺෦ೖࡳͷΦʔΫγϣϯຖʹඞͣফԽֹۚΛࢀরͯ͠༧ࢉͱಥ߹ • ͜ͷ৔߹ɺKVS͕ࢮ͵ͱԿ΋ग़དྷͳ͘ͳΔ

    • ৽ • ഑৴αʔό͕RDBMSʹ͍࣋ͬͯΔ݁Ռ͔Βܭࢉͨ͠ফԽֹۚΛఆظ తʹΩϟογϡ • ༧ࢉ͕ਚ͖ͦ͏ʹͳΔ௚લ·ͰKVSΛࢀর͠ͳ͍Α͏ʹ͢Δ • KVS͕ࢮΜͰ΋΄ͱΜͲͷ৔߹޿ࠂ͕ฦͤΔ 
  5. 2. KVSΫϥελґଘΛ΍ΊΔ (2) • αʔϏεͱͯ͠ఏڙ͍ͯ͠ΔλʔήςΟϯάख๏͸ओʹҎԼ2ͭ • ଐੑλʔήςΟϯά x3छ • ϦλʔήςΟϯά

    • ଐੑλʔήͷ΄͏͕ѹ౗తʹྔ͸ଟ͍(10:1͘Β͍, ച্͸5:1͘Β͍) • ݹ͍ߏ੒Ͱ͸6000ສUUʹؔ͢ΔܭࢉΛόονͰߦ͍KVSʹॻ͘ • ࠷੝ظ͸8࣌ؒ͘Β͍͔͔ͬͯ͠·͍ͬͯͨ • ͣͬͱෛՙࢼݧ͠ͳ͕Β഑৴͍ͯ͠ΔΑ͏ͳ΋ͷ 
  6. 2. KVSΫϥελґଘΛ΍ΊΔ (2)  چߏ੒ ৽ߏ੒ λʔήςΟϯά ͷ࢓૊Έ ֎෦σʔλΛݩʹͨ͠ όονͷܭࢉ݁ՌΛ

    ,74ʹอଘ SFRຖʹϦΞϧλΠϜܭࢉ Ұ෦  ͸چߏ੒ ҆ఆੑ σΟεΫຊ͕શମʹ Өڹٴ΅͢Մೳੑ ୆ࢮΜͰ΋Өڹͳ͠ ,74͕ࢮΜͰ΋Өڹ ϨΠςϯγ dNTFD  NTFD ηάϝϯςʔγϣϯॲཧࠐΈ ίετ SYMBSHF୆ ଞͷ໨తؚΉ DYMBSHF୆ SYMBSHF୆
  7. 2. KVSΫϥελґଘΛ΍ΊΔ (2) ͳͥRocksDB͔? • RocksDB : FacebookͷMySQLΤϯδϯ(MyRocks)΍ࠓ͸๢͖Parse ͷmongodbͷόοΫΤϯυͰར༻͞Ε͍ͯΔSSD΁ͷWriteʹ࠷ద Խ͞Εͨ૊ΈࠐΈ༻DB࣮૷ɻLevelDBͷforkɻ

    • ૊ΈࠐΈͰ, ߴ଎ʹ, େྔͳσʔλ͔ΒҾ͘࢓૊ΈΛٻΊͯ • ಉ༷ʹݕ౼ͨ͠h2dbͱͷൺֱͰɺएׯύϑΥʔϚϯε͕ྑ͔ͬͨ͜ ͱɺσʔλͷswap(ଐੑσʔλͷ೔࣍Ξοϓσʔτ)࣌ͷύϑΥʔϚ ϯεྼԽ౓߹͍͕௿͔ͬͨ͜ͱ͔Β൑அ 
  8. ৽͍͠νϟϨϯδ • QAνʔϜͷઃஔ : ͞ΒͳΔ඼࣭ͷ޲্ • ઃܭ/ςετͷϨϏϡʔͱ୳ࡧతςετͷ࣮ࢪ • ΤϯδχΞ͔ΒPM΁ :

    ࣄۀܥPM΁ͷґଘ౓ΛԼ͛Δ • ओʹ৽نࣄۀํ໘Ͱൈṅ • ఆظతͳϙδγϣϯνΣϯδ : εΩϧτϥϯεϑΝʔ • ໾ׂݻఆ͢ΔͱಛఆྖҬͷٕज़/ۀ຿஌͔͔ࣝͭ͠ͳ͍ͷΛ๷͙ • ௚ۙͰ͸؅ཧը໘ϝϯόʔͱ഑৴αʔόϝϯόʔΛεϫοϓ 
  9. ·ͱΊ HARD THINGS = ো֐ʹର͠ɺٕज़ͱ૊৫ͷ2໘͔Βཱͪ޲͔ͬͨ • ٕज़ • γϯϓϧ͔ͭFail͕఻೻͠ͳ͍ઃܭ •

    λʔήςΟϯάج൫ΛKVSΫϥελ͔ΒWebAppʹ • ૊৫ • ۀ຿஌ࣝ + ٕज़΁ͷཧղྗߴ͍PMͱͷڠௐ • ݹయతͳ΍ΓํΛ࣮֬ʹண࣮ʹ΍ΔେਓελΠϧ • QAνʔϜ, ΤϯδχΞൃPM౳ͷ৽͍͠૊৫ମ੍Ͱຏ͘