Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Aerospike を導入してみた話 / Consideration about Aerospike
Search
mats
June 24, 2015
Technology
0
41
Aerospike を導入してみた話 / Consideration about Aerospike
Aerospike Deep Diveで使用した資料です。
mats
June 24, 2015
Tweet
Share
More Decks by mats
See All by mats
「生成系AI」と「ソフトウェアライセンス」の今 / Generative AI and OSS License
mats16
4
1.8k
🦜️🔗LangChain入門 / LangChain 101
mats16
1
650
Supabase - AWS DevDay 2022
mats16
3
2k
AWS スタートアップ支援プログラム / AWS Activate
mats16
0
1.2k
AWS Startup ゼミ 2021 秋期講習 / AWS Startup Seminar 2021 Autumn class - AWS Dev Day
mats16
4
2.6k
Unicorns run on AWS
mats16
0
290
AWS Startup tech Meetup Online 6
mats16
0
1k
シードスタートアップに知っておいてほしいこと / What seed startups need to know
mats16
0
370
Introduction to AWS App Runner
mats16
0
1k
Other Decks in Technology
See All in Technology
Codexとも仲良く。CodeRabbit CLIの紹介
moongift
PRO
1
240
Simplifying Cloud Native app testing across environments with Dapr and Microcks
salaboy
0
180
物体検出モデルでシイタケの収穫時期を自動判定してみた。 #devio2025
lamaglama39
0
210
Performance Insights 廃止から Database Insights 利用へ/transition-from-performance-insights-to-database-insights
emiki
0
300
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
2.8k
それでも私が品質保証プロセスを作り続ける理由 #テストラジオ / Why I still continue to create QA process
pineapplecandy
0
120
ガバメントクラウド(AWS)へのデータ移行戦略の立て方【虎の巻】 / 20251011 Mitsutosi Matsuo
shift_evolve
PRO
2
200
アイテムレビュー機能導入からの学びと改善
zozotech
PRO
0
180
Digitization部 紹介資料
sansan33
PRO
1
5.6k
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.2k
やる気のない自分との向き合い方/How to Deal with Your Unmotivated Self
sanogemaru
1
520
「使い方教えて」「事例教えて」じゃもう遅い! Microsoft 365 Copilot を触り倒そう!
taichinakamura
0
410
Featured
See All Featured
Making Projects Easy
brettharned
120
6.4k
Docker and Python
trallard
46
3.6k
Agile that works and the tools we love
rasmusluckow
331
21k
Building an army of robots
kneath
306
46k
Rebuilding a faster, lazier Slack
samanthasiow
84
9.2k
Balancing Empowerment & Direction
lara
5
690
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
Java REST API Framework Comparison - PWX 2021
mraible
34
8.9k
Embracing the Ebb and Flow
colly
88
4.9k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.1k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
Making the Leap to Tech Lead
cromwellryan
135
9.6k
Transcript
AerospikeΛಋೖͯ͠Έͨ ʙ ଞKVSͱͷҧ͍ΞϨίϨ ʙ גࣜձࣾΠϯςΟϝʔτɾϚʔδϟʔɹদాथ
ࣗݾհ দా थ גࣜձࣾΠϯςΟϝʔτɾϚʔδϟʔʢࣾһ໊̕ʣ ։ൃຊ෦ • ύϒϦοΫDMPʮAudienceSearchʯͷ։ൃ • ओʹΠϯϑϥपΓΛ୲
ΞδΣϯμ • IMͰͷΘΕํʢಋೖࣄྫʣ • ಋೖ࣌ʹݕ౼ͨ͠ଞͷKVS • ಋೖͯ͠ؾ͍ͮͨ͜ͱ
IMͰͷΘΕํ
IMͰͷΘΕํ • IDSyncαʔϏε • ࣗࣾIDͱଞࣾIDͷϚοϐϯάςʔϒϧͷϗεςΟϯά • ଐੑσʔλͷՃ • ༷ʑͳσʔλιʔε͔Βͷߋ৽ͱδϣΠϯ
IDSyncαʔϏε
IDSyncαʔϏε IDSyncαʔϏεͱ • ࣗࣾIDͱଞࣾIDͷϚοϐϯάςʔϒϧΛੜɺอ࣋ • API͔Βߋ৽ɺࢀরΛߦ͏͜ͱ͕Մೳ • ݱࡏɺ50ࣾҎ্ͷύʔτφʔͱID࿈ܞ
IDSyncαʔϏε ࿈ܞύʔτφʔʢҰ෦ʣ
ྫɿΞϯέʔτͰಛఆͷճΛͨ͠ਓʹࠂ৴ IDSyncαʔϏε IMID ΞϯέʔτύωϧID DoubleClick ID ྫɿࣗࣾαΠτʢΞϓϦʣʹ๚ΕͨਓʹϝʔϧࠂΛ৴ IMID 1st
Party Cookie ʢIDFAʣ E-mail
IDSyncαʔϏε ELB API Aerospike γεςϜ • ϑϩϯτ ELB + Nginx
+ uWSGI • όοΫΤϯυʹAerospikeΛ࠾༻ • ฏۉԠ1ms • ϐʔΫ࣌Ͱ1000req/sఔ
IDSyncαʔϏε ԠʢELBʣ
IDSyncαʔϏε • ओΩʔ͕ࣗࣾIDɺଞࣾIDͦΕͧΕ ͷςʔϒϧΛੜ ELB API {Aࣾ: hoge} "ࣾ *.
IPHF QJZP *. "ࣾ IPHF QJZP Aerospike Set: A_to_IM Set: IM_to_A ※ Set: RDBMSͷςʔϒϧʹ͋ͨΔ
ଐੑσʔλͷՃ
ଐੑσʔλͷՃ Join Server • ༷ʑͳଐੑใΛɺҟͳΔιʔε͔Βऔಘ • IMͰอ͍࣋ͯ͠ΔଐੑใΛਓ͕ར༻Ͱ͖Δܗʹ Ճ͢Δج൘ʹAerospikeΛ࠾༻ •
Ճͨ͠σʔλݕࡧΤϯδϯ͔Βར༻
ଐੑσʔλͷՃ Cookie IDΛओΩʔʹ༷ʑͳଐੑใΛอ࣋ • Ӿཡཤྺʹجͮ͘ʮΩʔϫʔυʯ • ֤ϝσΟΞΑΓఏڙ͞ΕΔʮηάϝϯτʯ • ʮUser Agentʯ
• ΞΫηεݩIPʹجͮ͘ʮॅॴʯʮاۀใʯ • etc…
ଐੑσʔλͷՃ ༷ʑͳଐੑใΛݸผͷSetͰอ࣋ ͦΕͧΕಠཱͯ͠ߋ৽Λߦ͏͜ͱ͕Մೳ *% ηάϝϯτ
*% ΞΫηεݩ*1 *% ϢʔβʔΤʔδΣϯτ .BD4BGBSJ 8JO$ISPNF *1 ಓݝ ౦ژ ւಓ *1 اۀ *. *% Ωʔϫʔυ ԭೄཱྀߦ Ҿͬӽ͠ Set: segment Set: ua Set: keywords Set: ip Set: address Set: company
ଐੑσʔλͷՃ ༷ʑͳଐੑใΛݸผͷSetͰอ࣋ ͦΕͧΕಠཱͯ͠ߋ৽Λߦ͏͜ͱ͕Մೳ *% ΞΫηεݩ*1 *%
ϢʔβʔΤʔδΣϯτ .BD4BGBSJ 8JO$ISPNF Set: ua Set: ip ΞΫηεϩά
ଐੑσʔλͷՃ ༷ʑͳଐੑใΛݸผͷSetͰอ࣋ ͦΕͧΕಠཱͯ͠ߋ৽Λߦ͏͜ͱ͕Մೳ *1 ಓݝ ౦ژ ւಓ *1
اۀ *. Set: address Set: company αΠόʔΤϦΞϦαʔνגࣜձࣾ
ଐੑσʔλͷՃ ༷ʑͳଐੑใΛݸผͷSetͰอ࣋ ͦΕͧΕಠཱͯ͠ߋ৽Λߦ͏͜ͱ͕Մೳ *% Ωʔϫʔυ ԭೄཱྀߦ Ҿͬӽ͠ Set:
keywords ఏܞϝσΟΞ
ଐੑσʔλͷՃ δϣΠϯͯ͠ݕࡧΤϯδϯʹೖͯ͠׆༻ *% ηάϝϯτ ϢʔβʔΤʔδΣϯτ Ωʔϫʔυ ಓݝ اۀ
.BD4BGBSJ ԭೄཱྀߦ ౦ژ *. 8JO$ISPNF Ҿͬӽ͠ ւಓ Join Server
ಋೖ࣌ʹݕ౼ͨ͠ଞͷKVS
ଞͷKVSͱͷൺֱݕ౼ • DynamoDB (AWS) • Redis • Cloud Bigtable (Google)
※ ݕ౼࣌ɺະϦϦʔε
DynamoDB (AWS) • අ༻͕ߴ͍ʢඇϦβʔϒυʣ • 10ສread/sͰɺ130ສԁ/݄ • 10ສwrite/sͰɺ650ສԁ/݄ • ΩϟύγςΟΛ͑ͨϦΫΤετϩετ͢Δ
• ௨ৗखલͰΩϡʔΠϯάͯ͠ରԠ͢ΔΒ͍͠
Redis (ElastiCache) ༻్͝ͱʹRedisΛ͚ͯɺෳฒΔ͜ͱΛఆ • ༰ྔ੍ݶ͋Γʢ࠷େͰ240GBʣ • ౸ୡͨ͠߹ʹସखஈ͕ͳ͍ • ߏங͕ඞཁʹͳΓɺεέʔϧ͠ͳ͍ •
50ࣾͱID࿈ܞ͢Δͷʹ50Πϯελϯεඞཁ
Cloud Bigtable (Google) • ଞͷαʔόGoogle Cloud PlatformʹҠ͞ͳ͍ͱɺ ωοτϫʔΫϨΠςϯγ͕ൃੜ͢Δ • Ԡ͕ରAerospikeൺͰ10ഒʢΒ͍͠ʣ
• Aerospike: 1msҎԼ • Cloud Bigtable: 5ʙ10ms
ಋೖͯ͠ؾ͍ͮͨ͜ͱ
Client͕ߴػೳ • Ϩίʔυ͕Ͳͷϊʔυʹஔ͞Ε ͍ͯΔ͔Ѳ͍ͯ͠Δ • ओΩʔͷϋογϡΛར༻ • ίωΫγϣϯཱ֬࣌ʹɺϚοϐϯά ςʔϒϧΛऔಘ͢Δ •
Ϛοϐϯάςʔϒϧɺϊʔυͷ Ճআ࣌ʹ࠶ܭࢉ͞ΕΔ Client
Clientύϫʔ͕ඞཁ • AerospikeͷύϑΥʔϚϯεΛग़͠Δʹɺߴଟॏ ͰϦΫΤετΛߦ͏͜ͱ͕ඞཁ • 1ϦΫΤετ1msͰ3.6ԯϨίʔυऔΓग़͢߹ 36ສඵ = 6000 =
100࣌ؒ • IMͰ16ʙ32coreͷαʔόΛ༻͍ɺඦଟॏͰॲཧ Λճ͍ͯ͠·͢
ҙ֎ͱϝϞϦͷ༻ྔ͕େ͖͍ SSDͷΈͷར༻Ͱҙ֎ͱϝϞϦΛ༻͢Δ • ΠϯσοΫε͕ϝϞϦల։͞ΕΔ • 1Ϩίʔυʹ͖ͭ̒̐όΠτ AWSͰϝϞϦͱSSDͷൺ͕΄΅ݻఆͳͷͰɺҰ෦ ΠϯϝϞϦͷNamespaceΛ͍ɺϦιʔεͷແବΛແ ͘͠·ͨ͠ɻ
Namespaceׂ͠ʹ͍͘ • RDBMSͰ͍͏σʔλϕʔε • SSDΛ༻͢Δ߹ɺϒϩοΫσόΠε୯ҐͰ͔͠ NamespaceΛ͚Δ͜ͱ͕ग़དྷͳ͍ • ΠϯϝϞϦͷ߹ࣗ༝ʹׂՄೳ
Queryͷ੍ SQLϥΠΫͳهड़ͰϨίʔυΛࢀর͢Δ͜ͱՄೳ • ࢦఆͨ͠αʔόͰॲཧ͕Δ ʢΫϥΠΞϯτଆͰͳ͍ʣ • ฒྻ࣮ߦ͕ग़དྷͳ͍ • ࢦఆ͢ΔαʔόΛม͑͋Ε࣮ߦՄ •
όοΫΞοϓQueryѻ͍ Client ×
όοΫΞοϓ • mysqldumpͷ༷ͳίϚϯυ͕͋Δ • ΄΅ฏจͳͷͰɺσʔλྔ͕େ͖͍ • औಘɺ෮ݩʹֻ͕͔࣌ؒΔ • Queryѻ͍ͳͷͰɺ࣮ߦϊʔυʹҙʢલड़ʣ
ͦͷଞɹࡶײ • ΠϯϝϞϦͩͱಛʹ͍ʢൺֱͯ͠ͳ͍͚Ͳʣ • ઃఆ߲͕΄΅ແ͍ͷͰɺߏஙָ͕ ʢٯʹϒϥοΫϘοΫεͰ͋Γ·͕͢ɻɻʣ • υΩϡϝϯτʹແ͍ػೳ͕ϥΠϒϥϦʹ͋Δ ʢιʔείʔυΛݟ·͠ΐ͏ʂʣ •
Ϧιʔεͷݟੵ͕͘͠ɺఆΑΓߴ͘ͳΔɻɻ
·ͱΊʢ͜Ε͔Β࢝ΊΔํʣ • ຊʹAerospike͕ඞཁͳέʔε͋·Γଟ͘ͳͦ͞͏ɻ ʻϚονͦ͠͏ͳέʔεʼ • σʔλྔͷݟੵ͕͍͠߹ʢࣄۀͷεέʔϧͳͲʣ • ࣌ؒ͋ͨΓͷϦΫΤετ͕େͳ߹ • Javascriptܦ༝Ͱෆಛఆଟ͔ΒAPIΛίʔϧ͞ΕΔ
• όονॲཧͳͲͰॠؒతʹෛՙΛ͔͚Δʢԯ݅୯ҐͷδϣΠϯʣ • αʔόɺΫϥΠΞϯτڞʹඞཁͱ͞ΕΔϦιʔεͷݟੵ͕͍͠ ͷͰɺΫϥυڥͰࢼͯ͠ΈΔ͜ͱΛΦεεϝ͠·͢ɻ • QueryΛϝΠϯʹαʔϏεΛઃܭ͍͚ͯ͠ͳ͍ɻ
ΤϯδχΞืू ࠷৽ͷٕज़ʹڵຯͷ͋Δ৽ϝϯόʔΛืूதͰ͢ʂ ࠾༻ٕज़ ։ൃج൫
͋Γ͕ͱ͏͍͟͝·ͨ͠