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
SREのプラクティスを用いた3領域同時 マネジメントへの挑戦 〜SRE・情シス・セキュリティを統合した チーム運営術〜
coconala_engineer
2
660
コスト削減から「セキュリティと利便性」を担うプラットフォームへ
sansantech
PRO
3
1.5k
Agile Leadership Summit Keynote 2026
m_seki
1
620
Context Engineeringが企業で不可欠になる理由
hirosatogamo
PRO
3
590
日本の85%が使う公共SaaSは、どう育ったのか
taketakekaho
1
210
OCI Database Management サービス詳細
oracle4engineer
PRO
1
7.4k
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.3k
仕様書駆動AI開発の実践: Issue→Skill→PRテンプレで 再現性を作る
knishioka
2
660
Tebiki Engineering Team Deck
tebiki
0
24k
SREチームをどう作り、どう育てるか ― Findy横断SREのマネジメント
rvirus0817
0
270
名刺メーカーDevグループ 紹介資料
sansan33
PRO
0
1k
Introduction to Bill One Development Engineer
sansan33
PRO
0
360
Featured
See All Featured
What does AI have to do with Human Rights?
axbom
PRO
0
2k
What's in a price? How to price your products and services
michaelherold
247
13k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.3k
Claude Code のすすめ
schroneko
67
210k
Technical Leadership for Architectural Decision Making
baasie
1
240
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
1
53
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
590
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
0
2.3k
Skip the Path - Find Your Career Trail
mkilby
0
56
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
440
My Coaching Mixtape
mlcsv
0
48
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ΛϝΠϯʹαʔϏεΛઃܭ͍͚ͯ͠ͳ͍ɻ
ΤϯδχΞืू ࠷৽ͷٕज़ʹڵຯͷ͋Δ৽ϝϯόʔΛืूதͰ͢ʂ ࠾༻ٕज़ ։ൃج൫
͋Γ͕ͱ͏͍͟͝·ͨ͠