Slide 1

Slide 1 text

AerospikeΛಋೖͯ͠Έͨ࿩ ʙ ଞKVSͱͷҧ͍ΞϨίϨ ʙ גࣜձࣾΠϯςΟϝʔτɾϚʔδϟʔɹদా࿨थ

Slide 2

Slide 2 text

ࣗݾ঺հ দా ࿨थ גࣜձࣾΠϯςΟϝʔτɾϚʔδϟʔʢࣾһ਺໊̕ʣ ։ൃຊ෦ • ύϒϦοΫDMPʮAudienceSearchʯͷ։ൃ • ओʹΠϯϑϥपΓΛ୲౰

Slide 3

Slide 3 text

ΞδΣϯμ • IMͰͷ࢖ΘΕํʢಋೖࣄྫʣ • ಋೖ࣌ʹݕ౼ͨ͠ଞͷKVS • ಋೖͯ͠ؾ͍ͮͨ͜ͱ

Slide 4

Slide 4 text

IMͰͷ࢖ΘΕํ

Slide 5

Slide 5 text

IMͰͷ࢖ΘΕํ • IDSyncαʔϏε • ࣗࣾIDͱଞࣾIDͷϚοϐϯάςʔϒϧͷϗεςΟϯά • ଐੑσʔλͷՃ޻ • ༷ʑͳσʔλιʔε͔Βͷߋ৽ͱδϣΠϯ

Slide 6

Slide 6 text

IDSyncαʔϏε

Slide 7

Slide 7 text

IDSyncαʔϏε IDSyncαʔϏεͱ͸ • ࣗࣾIDͱଞࣾIDͷϚοϐϯάςʔϒϧΛੜ੒ɺอ࣋ • API͔Βߋ৽ɺࢀরΛߦ͏͜ͱ͕Մೳ • ݱࡏɺ50ࣾҎ্ͷύʔτφʔͱID࿈ܞ

Slide 8

Slide 8 text

IDSyncαʔϏε ࿈ܞύʔτφʔʢҰ෦ʣ

Slide 9

Slide 9 text

ྫɿΞϯέʔτͰಛఆͷճ౴Λͨ͠ਓʹ޿ࠂ഑৴ IDSyncαʔϏε IMID ΞϯέʔτύωϧID DoubleClick ID ྫɿࣗࣾαΠτʢΞϓϦʣʹ๚Εͨਓʹϝʔϧ޿ࠂΛ഑৴ IMID 1st Party Cookie ʢIDFAʣ E-mail

Slide 10

Slide 10 text

IDSyncαʔϏε ELB API Aerospike γεςϜ • ϑϩϯτ͸ ELB + Nginx + uWSGI • όοΫΤϯυʹAerospikeΛ࠾༻ • ฏۉԠ౴଎౓͸1ms • ϐʔΫ࣌Ͱ1000req/sఔ౓

Slide 11

Slide 11 text

IDSyncαʔϏε Ԡ౴଎౓ʢELBʣ

Slide 12

Slide 12 text

IDSyncαʔϏε • ओΩʔ͕ࣗࣾIDɺଞࣾIDͦΕͧΕ ͷςʔϒϧΛੜ੒ ELB API {Aࣾ: hoge} "ࣾ *. IPHF QJZP *. "ࣾ IPHF QJZP Aerospike Set: A_to_IM Set: IM_to_A ※ Set: RDBMSͷςʔϒϧʹ͋ͨΔ

Slide 13

Slide 13 text

ଐੑσʔλͷՃ޻

Slide 14

Slide 14 text

ଐੑσʔλͷՃ޻ Join Server • ༷ʑͳଐੑ৘ใΛɺҟͳΔιʔε͔Βऔಘ • IMͰอ͍࣋ͯ͠Δଐੑ৘ใΛਓ͕ར༻Ͱ͖Δܗʹ Ճ޻͢Δج൘ʹAerospikeΛ࠾༻ • Ճ޻ͨ͠σʔλ͸ݕࡧΤϯδϯ͔Βར༻

Slide 15

Slide 15 text

ଐੑσʔλͷՃ޻ Cookie IDΛओΩʔʹ༷ʑͳଐੑ৘ใΛอ࣋ • Ӿཡཤྺʹجͮ͘ʮΩʔϫʔυʯ • ֤ϝσΟΞΑΓఏڙ͞ΕΔʮηάϝϯτʯ • ʮUser Agentʯ • ΞΫηεݩIPʹجͮ͘ʮॅॴʯ΍ʮاۀ৘ใʯ • etc…

Slide 16

Slide 16 text

ଐੑσʔλͷՃ޻ ༷ʑͳଐੑ৘ใΛݸผͷSetͰอ࣋ ͦΕͧΕಠཱͯ͠ߋ৽Λߦ͏͜ͱ͕Մೳ *% ηάϝϯτ *% ΞΫηεݩ*1 *% ϢʔβʔΤʔδΣϯτ .BD4BGBSJ 8JO$ISPNF *1 ౎ಓ෎ݝ ౦ژ౎ ๺ւಓ *1 اۀ *. *% Ωʔϫʔυ ԭೄཱྀߦ Ҿͬӽ͠ Set: segment Set: ua Set: keywords Set: ip Set: address Set: company

Slide 17

Slide 17 text

ଐੑσʔλͷՃ޻ ༷ʑͳଐੑ৘ใΛݸผͷSetͰอ࣋ ͦΕͧΕಠཱͯ͠ߋ৽Λߦ͏͜ͱ͕Մೳ *% ΞΫηεݩ*1 *% ϢʔβʔΤʔδΣϯτ .BD4BGBSJ 8JO$ISPNF Set: ua Set: ip ΞΫηεϩά

Slide 18

Slide 18 text

ଐੑσʔλͷՃ޻ ༷ʑͳଐੑ৘ใΛݸผͷSetͰอ࣋ ͦΕͧΕಠཱͯ͠ߋ৽Λߦ͏͜ͱ͕Մೳ *1 ౎ಓ෎ݝ ౦ژ౎ ๺ւಓ *1 اۀ *. Set: address Set: company αΠόʔΤϦΞϦαʔνגࣜձࣾ

Slide 19

Slide 19 text

ଐੑσʔλͷՃ޻ ༷ʑͳଐੑ৘ใΛݸผͷSetͰอ࣋ ͦΕͧΕಠཱͯ͠ߋ৽Λߦ͏͜ͱ͕Մೳ *% Ωʔϫʔυ ԭೄཱྀߦ Ҿͬӽ͠ Set: keywords ఏܞϝσΟΞ

Slide 20

Slide 20 text

ଐੑσʔλͷՃ޻ δϣΠϯͯ͠ݕࡧΤϯδϯʹ౤ೖͯ͠׆༻ *% ηάϝϯτ ϢʔβʔΤʔδΣϯτ Ωʔϫʔυ ౎ಓ෎ݝ اۀ .BD4BGBSJ ԭೄཱྀߦ ౦ژ౎ *. 8JO$ISPNF Ҿͬӽ͠ ๺ւಓ Join Server

Slide 21

Slide 21 text

ಋೖ࣌ʹݕ౼ͨ͠ଞͷKVS

Slide 22

Slide 22 text

ଞͷKVSͱͷൺֱݕ౼ • DynamoDB (AWS) • Redis • Cloud Bigtable (Google) ※ ݕ౼࣌ɺະϦϦʔε

Slide 23

Slide 23 text

DynamoDB (AWS) • අ༻͕ߴ͍ʢඇϦβʔϒυʣ • 10ສread/sͰɺ130ສԁ/݄ • 10ສwrite/sͰɺ650ສԁ/݄ • ΩϟύγςΟΛ௒͑ͨϦΫΤετ͸ϩετ͢Δ • ௨ৗ͸खલͰΩϡʔΠϯάͯ͠ରԠ͢ΔΒ͍͠

Slide 24

Slide 24 text

Redis (ElastiCache) ༻్͝ͱʹRedisΛ෼͚ͯɺෳ਺୆ฒ΂Δ͜ͱΛ૝ఆ • ༰ྔ੍ݶ͋Γʢ࠷େͰ240GBʣ • ౸ୡͨ͠৔߹ʹ୅ସखஈ͕ͳ͍ • ౎౓ߏங͕ඞཁʹͳΓɺεέʔϧ͠ͳ͍ • 50ࣾͱID࿈ܞ͢Δͷʹ50Πϯελϯεඞཁ

Slide 25

Slide 25 text

Cloud Bigtable (Google) • ଞͷαʔό΋Google Cloud PlatformʹҠ͞ͳ͍ͱɺ ωοτϫʔΫϨΠςϯγ͕ൃੜ͢Δ • Ԡ౴଎౓͕ରAerospikeൺͰ໿10ഒʢΒ͍͠ʣ • Aerospike: 1msҎԼ • Cloud Bigtable: 5ʙ10ms

Slide 26

Slide 26 text

ಋೖͯ͠ؾ͍ͮͨ͜ͱ

Slide 27

Slide 27 text

Client͕ߴػೳ • Ϩίʔυ͕Ͳͷϊʔυʹ഑ஔ͞Ε ͍ͯΔ͔೺Ѳ͍ͯ͠Δ • ओΩʔͷϋογϡ஋Λར༻ • ίωΫγϣϯཱ֬࣌ʹɺϚοϐϯά ςʔϒϧΛऔಘ͢Δ • Ϛοϐϯάςʔϒϧ͸ɺϊʔυͷ௥ Ճ΍࡟আ࣌ʹ࠶ܭࢉ͞ΕΔ Client

Slide 28

Slide 28 text

Client΋ύϫʔ͕ඞཁ • AerospikeͷύϑΥʔϚϯεΛग़͠੾Δʹ͸ɺߴଟॏ ౓ͰϦΫΤετΛߦ͏͜ͱ͕ඞཁ • 1ϦΫΤετ1msͰ3.6ԯϨίʔυऔΓग़͢৔߹ 36ສඵ = 6000෼ = 100࣌ؒ • IMͰ͸16ʙ32coreͷαʔόΛ༻͍ɺ਺ඦଟॏͰॲཧ Λճ͍ͯ͠·͢

Slide 29

Slide 29 text

ҙ֎ͱϝϞϦͷ࢖༻ྔ͕େ͖͍ SSDͷΈͷར༻Ͱ΋ҙ֎ͱϝϞϦΛ࢖༻͢Δ • ΠϯσοΫε͕ϝϞϦల։͞ΕΔ • 1Ϩίʔυʹ͖ͭ̒̐όΠτ AWSͰ͸ϝϞϦͱSSDͷൺ཰͕΄΅ݻఆͳͷͰɺҰ෦ ΠϯϝϞϦͷNamespaceΛ࢖͍ɺϦιʔεͷແବΛແ ͘͠·ͨ͠ɻ

Slide 30

Slide 30 text

Namespace͸෼ׂ͠ʹ͍͘ • RDBMSͰ͍͏σʔλϕʔε • SSDΛ࢖༻͢Δ৔߹ɺϒϩοΫσόΠε୯ҐͰ͔͠ NamespaceΛ෼͚Δ͜ͱ͕ग़དྷͳ͍ • ΠϯϝϞϦͷ৔߹͸ࣗ༝ʹ෼ׂՄೳ

Slide 31

Slide 31 text

Queryͷ੍໿ SQLϥΠΫͳهड़ͰϨίʔυΛࢀর͢Δ͜ͱ΋Մೳ • ࢦఆͨ͠αʔόͰॲཧ͕૸Δ ʢΫϥΠΞϯτଆͰ͸ͳ͍ʣ • ฒྻ࣮ߦ͕ग़དྷͳ͍ • ࢦఆ͢ΔαʔόΛม͑͋Ε͹࣮ߦՄ • όοΫΞοϓ΋Queryѻ͍ Client ×

Slide 32

Slide 32 text

όοΫΞοϓ • mysqldumpͷ༷ͳίϚϯυ͕͋Δ • ΄΅ฏจͳͷͰɺσʔλྔ͕େ͖͍ • औಘɺ෮ݩʹֻ͕͔࣌ؒΔ • Queryѻ͍ͳͷͰɺ࣮ߦϊʔυʹ஫ҙʢલड़ʣ

Slide 33

Slide 33 text

ͦͷଞɹࡶײ • ΠϯϝϞϦͩͱಛʹ଎͍ʢൺֱͯ͠ͳ͍͚Ͳʣ • ઃఆ߲໨͕΄΅ແ͍ͷͰɺߏஙָ͕ ʢٯʹϒϥοΫϘοΫεͰ΋͋Γ·͕͢ɻɻʣ • υΩϡϝϯτʹແ͍ػೳ͕ϥΠϒϥϦʹ͋Δ ʢιʔείʔυΛݟ·͠ΐ͏ʂʣ • Ϧιʔεͷݟੵ͕೉͘͠ɺ૝ఆΑΓߴ͘ͳΔɻɻ

Slide 34

Slide 34 text

·ͱΊʢ͜Ε͔Β࢝ΊΔํ΁ʣ • ຊ౰ʹAerospike͕ඞཁͳέʔε͸͋·Γଟ͘ͳͦ͞͏ɻ ʻϚονͦ͠͏ͳέʔεʼ • σʔλྔͷݟੵ͕೉͍͠৔߹ʢࣄۀͷεέʔϧͳͲʣ • ࣌ؒ͋ͨΓͷϦΫΤετ਺͕๲େͳ৔߹ • Javascriptܦ༝Ͱෆಛఆଟ਺͔ΒAPIΛίʔϧ͞ΕΔ • όονॲཧͳͲͰॠؒతʹෛՙΛ͔͚Δʢԯ݅୯ҐͷδϣΠϯʣ • αʔόɺΫϥΠΞϯτڞʹඞཁͱ͞ΕΔϦιʔεͷݟੵ͕೉͍͠ ͷͰɺΫϥ΢υ؀ڥͰࢼͯ͠ΈΔ͜ͱΛΦεεϝ͠·͢ɻ • QueryΛϝΠϯʹαʔϏεΛઃܭͯ͠͸͍͚ͳ͍ɻ

Slide 35

Slide 35 text

ΤϯδχΞืू ࠷৽ͷٕज़ʹڵຯͷ͋Δ৽ϝϯόʔΛืूதͰ͢ʂ ࠾༻ٕज़ ։ൃج൫

Slide 36

Slide 36 text

͋Γ͕ͱ͏͍͟͝·ͨ͠