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
広告配信サーバーの設計について / Speee Engineer Meeting 2016-...
Search
yuma iwasaki
July 04, 2016
Programming
5
2.7k
広告配信サーバーの設計について / Speee Engineer Meeting 2016-06-22
yuma iwasaki
July 04, 2016
Tweet
Share
More Decks by yuma iwasaki
See All by yuma iwasaki
僕のキャリアとワインと鍋 / daikichijojipm
suthio
10
7.2k
「Laravel Novaの適切な使い方を考えてみる」 / laravel meetup tokyo vol 11
suthio
1
2k
バッチをGoにリプレイスして高速化した話 / GoGoGolangEdition!
suthio
2
28k
本当は怖くない AWS Lambda / speee_cafe_meetup06
suthio
2
860
広告配信サーバーにおけるBlue Green Deploymentの導入事例について \ SpeeeCafeMeetup05
suthio
3
1.9k
初めての本当の意味でのチーム開発 / pmjp 2016-12-03
suthio
4
1.8k
AWSインフラ構築ツールとしてのTerraform / SpeeeKaigi
suthio
1
2.3k
しくじり先生 アドネットワーク開発でしくじった話 / yapc8oji
suthio
2
2.1k
Other Decks in Programming
See All in Programming
ふん…おもしれぇ Parser。RubyKaigi 行ってやるぜ
aki_pin0
0
120
メタプログラミングで実現する「コードを仕様にする」仕組み/nikkei-tech-talk43
nikkei_engineer_recruiting
0
130
今、アーキテクトとして 品質保証にどう関わるか
nealle
0
190
Go1.26 go fixをプロダクトに適用して困ったこと
kurakura0916
0
310
CopilotKit + AG-UIを学ぶ
nearme_tech
PRO
1
110
浮動小数の比較について
kishikawakatsumi
0
360
DSPy入門 Pythonで実現する自動プロンプト最適化 〜人手によるプロンプト調整からの卒業〜
seaturt1e
1
390
CSC307 Lecture 08
javiergs
PRO
0
690
New in Go 1.26 Implementing go fix in product development
sunecosuri
0
100
20260228_JAWS_Beginner_Kansai
takuyay0ne
5
370
Oxlint JS plugins
kazupon
1
1.1k
RubyとGoでゼロから作る証券システム: 高信頼性が求められるシステムのコードの外側にある設計と運用のリアル
free_world21
0
130
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
KATA
mclloyd
PRO
35
15k
New Earth Scene 8
popppiees
1
1.6k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
360
It's Worth the Effort
3n
188
29k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3k
Paper Plane (Part 1)
katiecoart
PRO
0
5k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
140
A Tale of Four Properties
chriscoyier
162
24k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Google's AI Overviews - The New Search
badams
0
920
Claude Code のすすめ
schroneko
67
220k
Transcript
৴αʔόʔઃܭ ʹ͍ͭͯ 2016-07-04 Speee Engineer Meeting @suthio
ΞδΣϯμ • Πϯλʔωοτࠂʹ͍ͭͯ • ৴αʔόʔઃܭ • ·ͱΊ
Έͳ͞Μʂ Πϯλʔωοτࠂ ͖Ͱ͔͢ʁ
Έͳ͞Μʂ Πϯλʔωοτࠂʹ ׳Εͯ·ͤΜ͔ʁ
None
None
None
ੈքͰҰ൪ࠂ͕ଟ͍αΠτͬ ͯݟͨ͜ͱ͋Γ·͔͢ʁ
None
None
ు͖ͦ͏ɻ
ࠂͷΠϝʔδ • ᓔಃ͍͠ɺअຐ • ΫϦοΫͨ͘͠ͳ͍
Γ߹͍ʹฉ͍ͨ • Youtubeૣ͘ݟ͍ͨ • ؒҧ͑ͯԡ͢ͱΠϥοͱ͢Δ • ͳΜ͔͍ͭͯ͘Δͷා͍ʢϦλʔήςΟϯάʣ
ੲ͔Β͜͏Ͱ͚ͨͬ͠ʁ
None
2010͔Βͷ 4ϲ݄ຖͷΫϦοΫͷਪҠ
ΫϦοΫ ࣮֬ʹԼ͕͍ͬͯΔ
None
None
Ϣʔβʔແҙࣝʹ ࠂΛແࢹ͍ͯ͠Δ
Ϣʔβʔ͕ݡ͘ͳͬͨ
ΫϦοΫ͞Εͳ͘ͳΔͱ Ͳ͏ͳΔͷ͔ʁ
ΫϦοΫ͞Εͳ͘ͳΔͱʁ • ϝσΟΞɿऩӹੑͷԼ • ࠂओɿϢʔβʔʹಧ͚͍ͨϝοηʔδ͕ ಧ͚ΒΕͳ͍
݁ՌతʹϢʔβʔʹ ྑ࣭ͳهࣄΛ ఏڙͰ͖ͳ͘ͳͬͯ͠·͏
Ϣʔβʔ͔ΒݏΘΕͳ͍ܗͰ ࠂΛग़͢ඞཁ͕ग़͖ͯͨ
ͦ͜ͰωΠςΟϒΞυ
ωΠςΟϒΞυʁ • ϢʔβʔʹετϨεΛ༩͑Δ͜ͱͳ͘ɺ ࠂΛग़ߘͰ͖Δ • σΟεϓϨΠࠂͷ3ഒۙ͘ͷΫϦοΫ • ʹରͯ͠ೃછΜͩࠂΛ ఏڙ͢Δ͜ͱ͕Մೳ
CONFIDENTIAL CONFIDENTIAL CONFIDENTIAL ネイティブアドの種類 ᶃΠϯϑΟʔυܕ ᶄϖΠυαʔνܕ ᶇωΠςΟϒΞυཁૉΛ࣋ͭ ΠϯΞυܕ ᶅϨίϝϯυΟδΣοτܕ ᶆϓϩϞʔτϦεςΟϯάܕ
ᶈΧελϜܕ ৯ϩά LINEελϯϓ Above the Law ※IABʢInteractive Advertising Bureauʣج४ʹΑΔ ωΠςΟϒΞυ
http://markezine.jp/article/detail/21916
http://markezine.jp/article/detail/21916
ϨίϝϯυΟδΣοτͱʁ • ϢʔβʔʹαΠτͷϨίϝϯυهࣄͱ ࠂΛಉ࣌ʹ৴ɺදࣔ • ͷܝࡌഔମදࣔϑΥʔϚοτ͔Βɺ ϢʔβʔભҠઌ͕ίϯςϯπͰ͋Δ͜ͱΛ ࣗવͱظ͍ͯ͠Δঢ়ଶͱͳ͍ͬͯΔ
ϨίϝϯυΟδΣοτͱʁ • ͱ͍͏͜ͱ༷ʑͳύλʔϯͷϨίϝϯυ͕ ඞཁɻ • ࠓهࣄ͝ͱʹϨίϝϯυΛߦ͍ͬͯΔ
None
ϨίϝϯυΟδΣοτͱʁ • ͱ͍͏͜ͱ༷ʑͳύλʔϯͷϨίϝϯυ͕ ඞཁɻ • ݱࡏهࣄ͝ͱʹϨίϝϯυΛߦ͍ͬͯΔ
৴αʔόʔඞཁཁ݅ • ResponseΛ100msҎʹฦ͢ඞཁ͕͋Δ • هࣄຖʹग़͢ϨίϝϯυσʔλΛม͑Δ • ߴτϥϑΟοΫʹ͑͏Δ
৴αʔόʔ࡞Δ࣌ʹ ߟ͑ͨ͜ͱ • 1͙Β͍ࠓͷઃܭͷ··͑ΒΕΔΑ͏ʹ ͓͖͍ͯͨ͠ • ։ൃظ͕͍ؒʢ1ϲ݄ʣͷͰෳࡶͳ࣮ ͨ͘͠ͳ͍
࠷ॳͷઃܭ
None
Redisͱʁ • ϝϞϦ্ʹKey-ValueετΞ(KVS)Λߏங͢Δ͜ͱ ͕Ͱ͖ΔιϑτΣΞ • ϝϞϦ্ʹσʔλΛ֨ೲ͢ΔͷͰɼඇৗʹߴʹ σʔλͷॻ͖ࠐΈɾಡΈࠐΈΛߦ͏͜ͱ͕Ͱ͖Δ • σʔλͷӬଓԽ͕Մೳ •
ಋೖ࣌σʔλྔͷ2ഒͷϝϞϦ͕ඞཁ
࠷ॳͷઃܭ • masterRedisΛ༻ҙͯ͠ϨϓϦέʔγϣϯ • slaveRedisϩʔΧϧʹ࣋ͭ
None
͕ൃੜ
σʔλྔΛܭࢉͨ͠Βɺ ϝϞϦʹΓΒͳ͍͜ͱ͕ ໌
RedisͰ࣮͢Δ߹ɺ 1ޙʹ120GBͷϝϞϦ͕ ඞཁͳఆͩͬͨ
ผͷ࣮Λߟ͑ͨ
None
DynamoDBͱʁ • શϚωʔδυܕͷ NoSQLͷσʔλϕʔεαʔϏε • UZOUͷ৴ͰKVSͱͯ͠༻͍ͯ͠Δ
DynamoDBͷಛ • ཧָ͕ʂ • ༰ྔͷ૿ՃΛؾʹ͠ͳͯ͘ྑ͍ • ݕࡧɺूܭऑ͍ • ͍ϨΠςϯγ
DynamoDBͷϢʔεέʔε • KVSͱͯ͠ • ࠂήʔϜͳͲͷߦಈཤྺDBͱͯ͠ • ϞόΠϧΞϓϦͷόοΫΤϯυͱͯ͠ - ϞόΠϧΞϓϦ͔ΒࢀরͰ͖ΔDBͱͯ͠
http://www.slideshare.net/AmazonWebServicesJapan/ 20150805-aws-blackbeltdynamodb
UZOUͰͷ৴αʔόʔઃܭ ֆΛೖΕΔɻ
UZOUͰͷ৴αʔόʔઃܭ
Ͳ͏ͬͯɺDynamoDBʹ ৴σʔλΛೖΕ͍ͯΔ͔
ݩʑͷఆ
DynamoDB ॻ͖ࠐΈΩϟύγςΟෆ
SleepೖΕͳ͕ΒϦτϥΠ
ͱ͔ͬͯͨΒऑ
None
Write࣌ͷӡ༻ํ๏ • 1ʹҰLambda͕ىಈ͢ΔΑ͏ʹεέ δϡʔϦϯάͯ͠SQS͕ಈ͘Α͏ʹ͢Δ • ୠ͠ɺLambda5ʹҰͷ εέδϡʔϦϯά͔͠࡞Εͳ͍
ΠϕϯτιʔεΛ 5ͭ࡞ͬͯղܾ
cron(*/5 * * * ? *) cron(1,6,11,16,21,26,31,36,41,46,51,56 * * *
? *) cron(2,7,12,17,22,27,32,37,42,47,52,57 * * * ? *) cron(3,8,13,18,23,28,33,38,43,48,53,58 * * * ? *) cron(4,9,14,19,24,29,34,39,44,49,54,59 * * * ? *)
None
ҋͬΆ͍
ঘɺࠓղܾࡁ
rate(1 minutes)
ݱࡏͷ৴αʔόʔ • 1ͨΓɺඵؒ500ΞΫηεࡹ͚Δ • DynamoDBʹ1ΞΫηεͨΓɺ10ms
DynamoDBΛӡ༻͢Δ্Ͱ ؾΛ͚ͭΔ͜ͱ
ΩϟύγςΟϢχοτ
ΩϟύγςΟϢχοτͱʁ • ͬ͘͟Γݴ͏ͱͲΕ͚ͩॻ͖ࠐΊΔ͔ɺ ͲΕ͚ͩಡΈࠐΊΔ͔ΛܾΊΔͭ
ΩϟύγςΟϢχοτͱʁ • ߴΊʹઃఆ͢Δͱ͓͕͔͔ۚΔɻ • Ίʹઃఆͯ͠ΩϟύγςΟϢχοτҎ্ ༻͢Δͱॲཧʹࣦഊ͢Δ • ಡΈࠐΈɺॻ͖ࠐΈݸผʹઃఆ͢Δ
None
͋Εɺ͑ͯΔͷʹ͑ͯΔʁ
ͳͥ͜Μͳ͜ͱ͕ى͜Δͷ͔ʁ
όʔετΩϟύγςΟ • ར༻͞Εͳ͔ͬͨύʔςΟʔγϣϯͷΩϟύ γςΟΛաڈ300ඵ·ͰϦβʔϒ͞ΕΔ͘͠ Έɻ • όʔεττϥϑΟοΫʹ͑ΒΕΔɻ
None
DynamoDBͷಡΈࠐΈྔ͕ ಡΊͳ͍
ࠓճͷ৴αʔόʔͷઃܭͩ ͱɺϦΫΤετ͕૿͑Ε૿ ͑Δ΄ͲɺDynamoDBͷෛՙ ૿͍͑ͯ͘༧ఆ
ReadରࡦҊ • ༧ΊଟΊʹΩϟύγςΟϢχοτΛઃఆͯ͠ ͓͘ • DynamoDBͷReadʹࣦഊͨ͠Β༧Ί༻ҙͯ͠ ͓͍ͨɺσϑΥϧτࠂΛग़͢ • DynamoDBͷΩϟύγςΟϢχοτΛಈతʹ มߋ
DynamoDBͷ AutoScalaΛ͠Α͏
None
None
LambdaͰղܾ
http://dev.classmethod.jp/etc/auto- scaling-dynamodb-by-lambda/
Ծઆɺݕূ
Ծઆ1
ݟͯΔهࣄʹΑΓྨࣅͨ͠ ࠂɺهࣄͩͬͨΒΫϦοΫ ͞Ε͘͢ͳΔΜ͡Όͳ͍͔ʁ
Ͳ͏Β߹͍ͬͯΔΑ͏ͩ
ࡉ͔͘ݕূɺݕূ