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
ゼロから始めた Gunosyアドサーバ開発運用記 / 2014-12-16-dots
Search
shunsukeaihara
December 16, 2014
Technology
1.2k
6
Share
ゼロから始めた Gunosyアドサーバ開発運用記 / 2014-12-16-dots
地雷の話
shunsukeaihara
December 16, 2014
More Decks by shunsukeaihara
See All by shunsukeaihara
BONXを支える技術:発話区間検出(VAD)の話/Akerun & BONX Tech Talk
shunsukeaihara
4
7.8k
Goのnet.TCPConnの話/shibuya.go01
shunsukeaihara
3
860
Norikra in Gunosy Network Ads@Norikra meetup #2
shunsukeaihara
1
6.1k
LevelDB on S3 As A KVS
shunsukeaihara
1
2.9k
色恒常性仮説に基づく色補正ライブラリcolorcorrect / 2015-01-31-kantocv27
shunsukeaihara
3
2.6k
Sparkによる分散処理 / 2015-01-16 PyData.Tokyo#3
shunsukeaihara
11
3.6k
Gunosy.Go#5 index/io/log
shunsukeaihara
0
190
Gunosy.go#2 package/compress
shunsukeaihara
0
130
Other Decks in Technology
See All in Technology
プロンプトエンジニアリングを超えて:自由と統制のあいだでつくる Platform × Context Engineering
yuriemori
0
170
ふりかえりを 「あそび」にしたら、 学習が勝手に進んだ / Playful Retros Drive Learning
katoaz
0
450
AIエージェントを構築して感じた、AI時代のCDKとの向き合い方
smt7174
1
170
AIペネトレーションテスト・ セキュリティ検証「AgenticSec」ご紹介資料
laysakura
0
1.6k
ログ基盤・プラグイン・ダッシュボード、全部整えた。でも最後は人だった。
makikub
5
1.6k
インフラを Excel 管理していた組織が 3 ヶ月で IaC 化されるまで
geekplus_tech
3
180
新メンバーのために、シニアエンジニアが環境を作る時代
puku0x
0
690
New CBs New Challenges
ysuzuki
1
170
Hooks, Filters & Now Context: Why MCPs Are the “Hooks” of the AI Era
miriamschwab
0
140
2026年に相応しい 最先端プラグインホストの設計<del>と実装</del>
atsushieno
0
110
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
4.2k
Autonomous Database - Dedicated 技術詳細 / adb-d_technical_detail_jp
oracle4engineer
PRO
5
13k
Featured
See All Featured
Measuring & Analyzing Core Web Vitals
bluesmoon
9
810
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
430
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
500
Ethics towards AI in product and experience design
skipperchong
2
250
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
What does AI have to do with Human Rights?
axbom
PRO
1
2.1k
Git: the NoSQL Database
bkeepers
PRO
432
67k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
290
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Context Engineering - Making Every Token Count
addyosmani
9
810
Transcript
θϩ͔Β࢝Ίͨ GunosyΞυαʔό։ൃӡ༻ه גࣜձࣾGunosy ҄൧ݪढ़հ
ࣗݾհ • ҄൧ݪढ़հ (http://argmax.jp) • Gunosy։ൃຊ෦ Ϛωʔδϟʔ • ࠂ৴γεςϜͷ։ൃશମͱR&DܥΛ୲ •
ઐ: ܭࢉݴޠֶ • PythonͱඇಉظࢄγεςϜΛΉ • ը૾ॲཧɾԻ৴߸ॲཧͰ͍Ζ͍ΖϥΠϒϥϦ࡞ͬͯΔ • https://bitbucket.org/aihara
ɹɹGunosy Ads • χϡʔεΩϡϨʔγϣϯΞϓϦͷάϊγʔͷࠂ • ೖߘ͔Β৴·Ͱશࣗࣾ • ࠂೖߘγεςϜҎ֎΄΅Python • ࠷ۙscalaͱgo͕ೖ͖ͬͯͨ
• End-to-EndͷRTBγεςϜ • ΞυωοτϫʔΫ࢝Ίͨ • iOS, Android, JS, Titanium͚SDKΛఏڙ
Ξυαʔό૯߹֨ಆٕ • ECPM(ऩӹੑ)Λ૿େͤ͞Δ༧ଌΞϧΰϦζϜͷߏங • CPA(ސ٬֫ಘ୯Ձ)Λ͑ͯ͘ࠂΛܧଓ • Ϣʔβʹͱͬͯ༗ӹͳࠂใΛ৴ • େنσʔλΛ҆ఆ/ߴʹॲཧ͠ϩδοΫʹө •
50ms or Die
Gunosy Adsαʔόߏ 2360 19(!%-7
+#4/ ,:*'&5.8 MySQL +#$)"
Ξυαʔό։ൃͷجຊελϯε • ࠷ۙ·Ͱࠂ৴ΤϯδχΞ2໊ • AWSͰ༗Δ͜ͱΛ࠷େݶ׆༻ • TimeϕʔεͷϓϩϏδϣχϯά + େྔͷcold standby
• ӡ༻ɾࢮ׆ࢹՄೳͳݶΓࣗಈԽ • αʔό૿͢ΑΓνϡʔχϯά(ශੑ) • ແବʹଟ͍KPI Tool
͜ͷҰΛৼΓฦΔ
1ͰGunosyϢʔβ10ഒ ࠂ৴ྔઍഒʹ ਓ ਓ ਓ ਓ ਓ ਓ ਓ ਓ
ਓ ݄ ݄ ݄ ݄ ݄ ࠓ μϯϩʔυ ΞυΤϯδχΞਓ
͡Ίͷαʔόͩͬͨ • Python(Tornado)ͷ৴αʔό • ΦϯϥΠϯֶश/όϯσΟοτͰCTRਪఆ • Redisʹ৴σʔλΛͯ͢ೖ • RDBҰݟͳ͍ •
MongoDBʹtd-agentͰϩάΛೖ • Capped Collectionʹೖ Redis MongoDB (Log Collector) Batch Server MySQL MySQL ৴αʔό
スパイキーなアクセスで サーバが死ぬ ϢʔβͷੵΈ͕ΓͰ λΠϚʔϕʔεͷఆ࣌1VTI͕ʹ
࠷ॳͷCPUόϯυ • ΞυαʔόΛTimeϕʔεͰϓϩϏδϣχϯά • ॏ͍ܭࢉΛAPIαʔόͰ͢Δͷ͕ؒҧ͍ • ϦΞϧλΠϜͷ౷ܭΛଈ࣌ө͢ΔΑ͏ͳσʔλूܭ ܥͱόονܥΛߏங • ୯ҐͰ͘͘͞͞ճΔϨϕϧ
! • ͜ͷλΠϛϯάͰϕʔε͕΄΅
·ͩ·ͩτϥϒϧָ͍࣌͠ظ • ΄΅ϓϩτλΠϓͷ͓ͪΌΈ͍ͨͳͩͬ ͨͷͰ৴ϩδοΫपΓͷνϡʔχϯάָ͕ ͍͠ • αʔό૿͢ΑΓϒϥογϡΞοϓ • ΞΫηεച্·ͩ·ͩ
ウルトラマン来襲
CMͷ։࢝ʹΑΓDAU͕ര૿
ਓ ਓ ਓ ਓ ਓ ਓ ਓ ਓ ਓ ݄
݄ ݄ ݄ ݄ ࠓ μϯϩʔυ ΞυΤϯδχΞਓ ͜ͷ͋ͨΓ
Ϣʔβࠂ૿͍͑ͯ͘ • ऩӹ૿͑ͯઈରʹࢭΊΒΕͳ͘ͳΔ… • ΦʔσΟΤϯεσʔλ͕RedisʹࡌΓΒͳ͍ • Slave͕OOMͰࢮΜͩΓ • ΞΫηεͷεύΠΫΑΓܹ͘͠Redis͕٧·Γ࢝ΊΔ •
MongoͷCapped Collectionʹ1͢ΒΒͳ͘ͳ Δ
RedisͷߏΛมߋ • ͯ͢ͷΞΫηεʹڞ௨͢Δσʔλ(ࠂͷใ/୯Ձ )ΛS3ܦ༝ͰશαʔόʹΒ·͍ͯReadΛݮ • Redis͕མͪͯ࠷ݶͷ৴͕Ͱ͖ΔΑ͏ʹͳͬͨ ! ! !
RedisͷߏΛมߋ • σʔλछຖͷਨࢄ • twemproxyೖΕͯσʔλྔ૿Ճ࣌ͷϝϯςφϯεෛ ՙมΘΒͳ͍ͷͰਨࢄ / αΠζΞοϓͰରԠ • Riakݕ౼ɺ࣌ίετ໘Ͱબఆ͔Β֎Εͨ
! ! ϢʔβຖͷӾཡཤྺ Ϣʔβͷηάϝϯτσʔλ ࠂຖͷ৴ύϥϝʔλ ΫϥΠΞϯτ͕σʔλछຖʹ 3FEJTαʔόΓସ͑
ूܭDBΛRedshiftʹ • fluent-plugin-redshiftʹύονΛ͋ͯͯϩάΛ ϦΞϧλΠϜʹRedshiftʹೖ • ͱΓ͋͑ͣRedshiftʹೖΕΔͱָͰ͖Δ と思っていた……
アドネットワーク開始で 広告枠とログデータが爆発 Redshiftは死ぬ
͕૿͑ͯόον૿͑ͨ • PythonͷࢄTask-Queue(Celery)ϥΠϒϥϦͰ΄΅ແ վͰࢄॲཧԽ • ႈͰ૬ޓͷঢ়ଶʹґଘ͕ແ͍όονΛ࡞Δ • numpy, scipy, pandas,
scikitsͷΤίγεςϜ͕ͦͷ··͑Δ Amazon SQS ɾ ɾ ɾ Celery Workers Django-Celery
Redshift͕٧·Γग़͢ • Redshiftूܭରςʔϒϧ͕ϝϞϦʹΒͳ ͘ͳΔͱ్ʹ͘ͳΔ • Ϋϥελ૿ / ΠϯελϯεมߋରԠग़དྷΔ͚ Ͳߴ͗ͯ͢ROI͕߹Θͳ͘ͳͬͯ͘Δ •
dw2.8xlargeߴ͗͢ • ੴ༉ԦͳΒdw2.8xlargeΫϥελΛ͓͏
• Redshift͋͘·ͰσʔλϚʔτ • ఆৗूܭʹඞཁͳϝϞϦʹΓΔσʔλ ͷΈtemporalͳςʔϒϧʹͤΔ • ࣗಈͰఆظϩʔςʔγϣϯ ϝϞϦʹΒͳ͍Ϗοάσʔλ is ෆཁ
ϝϞϦʹΒͳ͍Ϗοάσʔλ is ෆཁ • ඇఆظతͳੳSparkʹ • ශऀͷຯํEMR on Spot Instance
• ΞυϗοΫͳੳͱ͔ճؼϞσϧߏஙSpark Λར༻ • શϩάूܭImpalaͰ(ΦϯϝϞϦ͡Όͳ͍͚Ͳ)
DAU積み上がりと 記事タイトル付きPushで さらなるスパイクが…
ਓ ਓ ਓ ਓ ਓ ਓ ਓ ਓ ਓ ݄
݄ ݄ ݄ ݄ ࠓ μϯϩʔυ ΞυΤϯδχΞਓ ͜ͷ͋ͨΓ
ࣾͷผαʔϏεͷվળͷӨڹ͕… • PushͷهࣄબΞϧΰϦζϜͷվྑͰϢʔβ ͷ։෧͕େ෯্ • Remote Pushܥஔ͖͑Ͱඦສ݅1ҎԼͰ Delivery • APIαʔόͷεϧʔϓοτ͕վળ
• ΞυαʔόͷϦΫΤετര૿ • Too Slow To Die
͞Α͏ͳΒRedis͞Μ • Redisʹର͢ΔR/WΛͻͨ͢Βݮ • ΞΫςΟϒͳϢʔβ͚ͩϑΝΠϧDBʹͯ͠શʹ • temporalͳσʔλΛͳͯ͘͠Statelessͳ৴ϩδοΫʹมߋ • RedisͱͯͭΒ͍͚Ͳ·ࣺͩͯΒΕͯͳ͍ •
RiakͱMemcachedͷೋஈߏ͔Aerospikeͷٕज़ݕ౼ • Ͳͬͪʹͯͭ͠Β͍
ݟ͑ͯΔཕΛશͯ౿Έൈ͍ͯࠓʹࢸΔ 2360 19(!%-7
+#4/ ,:*'&5.8 MySQL +#$)"
·ͱΊ • ҰؒͰ͍͖ͳΓαʔϏε͕େ͖͘ͳΔͱ • ເͷٕज़ແ͍ͱ͍͏͜ͱ͕ʹ͠ΈΔ • ച্ͷϓϨογϟʔ͕ͭΒ͘ͳͬͯ͘Δ • ͦͷී௨ग़དྷͳ͍ܦݧ͕ੵΊΔ •
GunosyͰPython,Scala, Golang͕͖ͳΤϯδ χΞ͕͖উखͬͯΔͷͰ༡ͼʹདྷ͍ͯͩ͘͞