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
43
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
2.3k
🦜️🔗LangChain入門 / LangChain 101
mats16
1
670
Supabase - AWS DevDay 2022
mats16
3
2.1k
AWS スタートアップ支援プログラム / AWS Activate
mats16
0
1.3k
AWS Startup ゼミ 2021 秋期講習 / AWS Startup Seminar 2021 Autumn class - AWS Dev Day
mats16
4
2.6k
Unicorns run on AWS
mats16
0
310
AWS Startup tech Meetup Online 6
mats16
0
1.1k
シードスタートアップに知っておいてほしいこと / What seed startups need to know
mats16
0
390
Introduction to AWS App Runner
mats16
0
1.1k
Other Decks in Technology
See All in Technology
~Everything as Codeを諦めない~ 後からCDK
mu7889yoon
3
390
生成AIを活用した音声文字起こしシステムの2つの構築パターンについて
miu_crescent
PRO
2
200
小さく始めるBCP ― 多プロダクト環境で始める最初の一歩
kekke_n
1
420
ファインディの横断SREがTakumi byGMOと取り組む、セキュリティと開発スピードの両立
rvirus0817
1
1.4k
GitLab Duo Agent Platform × AGENTS.md で実現するSpec-Driven Development / GitLab Duo Agent Platform × AGENTS.md
n11sh1
0
140
GitHub Issue Templates + Coding Agentで簡単みんなでIaC/Easy IaC for Everyone with GitHub Issue Templates + Coding Agent
aeonpeople
1
230
こんなところでも(地味に)活躍するImage Modeさんを知ってるかい?- Image Mode for OpenShift -
tsukaman
0
140
コミュニティが変えるキャリアの地平線:コロナ禍新卒入社のエンジニアがAWSコミュニティで見つけた成長の羅針盤
kentosuzuki
0
110
プロポーザルに込める段取り八分
shoheimitani
1
280
AIエージェントを開発しよう!-AgentCore活用の勘所-
yukiogawa
0
170
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
10k
Data Hubグループ 紹介資料
sansan33
PRO
0
2.7k
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
910
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
9.9k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
71k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.2k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
Testing 201, or: Great Expectations
jmmastey
46
8k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
240
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
190
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
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ΛϝΠϯʹαʔϏεΛઃܭ͍͚ͯ͠ͳ͍ɻ
ΤϯδχΞืू ࠷৽ͷٕज़ʹڵຯͷ͋Δ৽ϝϯόʔΛืूதͰ͢ʂ ࠾༻ٕज़ ։ൃج൫
͋Γ͕ͱ͏͍͟͝·ͨ͠