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
しくじり先生 アドネットワーク開発でしくじった話 / yapc8oji
Search
yuma iwasaki
July 03, 2016
Programming
2
1.9k
しくじり先生 アドネットワーク開発でしくじった話 / yapc8oji
yuma iwasaki
July 03, 2016
Tweet
Share
More Decks by yuma iwasaki
See All by yuma iwasaki
僕のキャリアとワインと鍋 / daikichijojipm
suthio
8
4.9k
「Laravel Novaの適切な使い方を考えてみる」 / laravel meetup tokyo vol 11
suthio
0
1.7k
バッチをGoにリプレイスして高速化した話 / GoGoGolangEdition!
suthio
2
28k
本当は怖くない AWS Lambda / speee_cafe_meetup06
suthio
2
760
広告配信サーバーにおけるBlue Green Deploymentの導入事例について \ SpeeeCafeMeetup05
suthio
3
1.7k
初めての本当の意味でのチーム開発 / pmjp 2016-12-03
suthio
4
1.6k
AWSインフラ構築ツールとしてのTerraform / SpeeeKaigi
suthio
1
2.1k
広告配信サーバーの設計について / Speee Engineer Meeting 2016-06-22
suthio
5
2.5k
Other Decks in Programming
See All in Programming
3 Effective Rules for Using Signals in Angular
manfredsteyer
PRO
0
110
AWS IaCの注目アップデート 2024年10月版
konokenj
3
3.3k
受け取る人から提供する人になるということ
little_rubyist
0
230
レガシーシステムにどう立ち向かうか 複雑さと理想と現実/vs-legacy
suzukihoge
14
2.2k
Creating a Free Video Ad Network on the Edge
mizoguchicoji
0
120
イベント駆動で成長して委員会
happymana
1
320
3 Effective Rules for Using Signals in Angular
manfredsteyer
PRO
1
100
Amazon Qを使ってIaCを触ろう!
maruto
0
400
OSSで起業してもうすぐ10年 / Open Source Conference 2024 Shimane
furukawayasuto
0
100
アジャイルを支えるテストアーキテクチャ設計/Test Architecting for Agile
goyoki
9
3.3k
TypeScriptでライブラリとの依存を限定的にする方法
tutinoko
2
670
PHP でアセンブリ言語のように書く技術
memory1994
PRO
1
170
Featured
See All Featured
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
25
1.8k
Speed Design
sergeychernyshev
25
620
Fireside Chat
paigeccino
34
3k
A Tale of Four Properties
chriscoyier
156
23k
Become a Pro
speakerdeck
PRO
25
5k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
370
VelocityConf: Rendering Performance Case Studies
addyosmani
325
24k
Into the Great Unknown - MozCon
thekraken
32
1.5k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
44
2.2k
GraphQLとの向き合い方2022年版
quramy
43
13k
Embracing the Ebb and Flow
colly
84
4.5k
Mobile First: as difficult as doing things right
swwweet
222
8.9k
Transcript
͘͠͡Γઌੜ ΞυωοτϫʔΫ։ൃͰͬͨ͘͠͡ 2016-07-03 YAP(achimon)C::Asia Hachioji 2016 mid in Shinagawa
ࣗݾհ • GitHub @suthio • Twitter @yuma_iwasaki • Company: Speee
ࣗݾհ
ΞδΣϯμ • Πϯλʔωοτࠂʹ͍ͭͯ • γεςϜ֓ཁ • ৴αʔόʔઃܭ • ͬͨ͘͠͡
Έͳ͞Μʂ Πϯλʔωοτࠂ ͖Ͱ͔͢ʁ
Έͳ͞Μʂ Πϯλʔωοτࠂʹ ׳Εͯ·ͤΜ͔ʁ
None
None
None
ੈքͰҰ൪ࠂ͕ଟ͍αΠτͬ ͯݟͨ͜ͱ͋Γ·͔͢ʁ
http://www.milliondollarhomepage.com/
http://www.milliondollarhomepage.com/
ు͖ͦ͏ɻ
ࠂͷΠϝʔδ • ᓔಃ͍͠ɺअຐ • ΫϦοΫͨ͘͠ͳ͍
Γ߹͍ʹฉ͍ͨ • Youtubeૣ͘ݟ͍ͨ • ؒҧ͑ͯԡ͢ͱΠϥοͱ͢Δ • ͳΜ͔͍ͭͯ͘Δͷා͍ʢϦλʔήςΟϯάʣ
ੲ͔Β͜͏Ͱ͚ͨͬ͠ʁ
None
2010͔Βͷ 4ϲ݄ຖͷΫϦοΫͷਪҠ
ΫϦοΫ ࣮֬ʹԼ͕͍ͬͯΔ
http://www.startrise.jp/columuns/view/4140
http://blog.somewrite.jp/case/native-ads-work/
Ϣʔβʔແҙࣝʹ ࠂΛແࢹ͍ͯ͠Δ
Ϣʔβʔ͕ݡ͘ͳͬͨ
ΫϦοΫ͞Εͳ͘ͳΔͱ Ͳ͏ͳΔͷ͔ʁ
ΫϦοΫ͞Εͳ͘ͳΔͱʁ • ϝσΟΞɿऩӹੑͷԼ • ࠂओɿϢʔβʔʹಧ͚͍ͨϝοηʔδ͕ ಧ͚ΒΕͳ͍
݁ՌతʹϢʔβʔʹ ྑ࣭ͳهࣄΛ ఏڙͰ͖ͳ͘ͳͬͯ͠·͏
Ϣʔβʔ͔ΒݏΘΕͳ͍ܗͰ ࠂΛग़͢ඞཁ͕ग़͖ͯͨ
ͦ͜ͰωΠςΟϒΞυ
ωΠςΟϒΞυʁ • ϢʔβʔʹετϨεΛ༩͑Δ͜ͱͳ͘ɺ ࠂΛग़ߘͰ͖Δ • σΟεϓϨΠࠂͷ3ഒۙ͘ͷΫϦοΫ • ʹରͯ͠ೃછΜͩࠂΛ ఏڙ͢Δ͜ͱ͕Մೳ
http://markezine.jp/article/detail/21916
http://markezine.jp/article/detail/21916
ϨίϝϯυΟδΣοτͱʁ • ϢʔβʔʹαΠτͷϨίϝϯυهࣄͱ ࠂΛಉ࣌ʹ৴ɺදࣔ • ͷܝࡌഔମදࣔϑΥʔϚοτ͔Βɺ ϢʔβʔભҠઌ͕ίϯςϯπͰ͋Δ͜ͱΛ ࣗવͱظ͍ͯ͠Δঢ়ଶͱͳ͍ͬͯΔ
ϨίϝϯυΟδΣοτͱʁ • ͱ͍͏͜ͱ༷ʑͳύλʔϯͷϨίϝϯυ͕ ඞཁɻ • ݱࡏهࣄ͝ͱʹϨίϝϯυΛߦ͍ͬͯΔ
ωΠςΟϒΞυͷ ৴γεςϜ
None
Ϩίϝϯυ݁Ռ৴ϑϩʔ • Ϋϩʔϥʔ͕ຊจΛऔಘ • EMRʹͯຊจղੳ • Ϩίϝϯυ݁ՌΛ৴ใͱ߹Θͤͯ DynamoDBʹWrite • ΞΫηε࣌ʹDynamoDBΛࢀরͯ͠
Ϩίϝϯυ݁ՌΛ৴
৴αʔόʔʹ͍ͭͯ
None
৴αʔόʔඞཁཁ݅ • ResponseΛ100msҎʹฦ͢ඞཁ͕͋Δ • هࣄຖʹग़͢ϨίϝϯυσʔλΛม͑Δ • ߴτϥϑΟοΫʹ͑͏Δ
৴αʔόʔ࡞Δ࣌ʹ ߟ͑ͨ͜ͱ • 1͙Β͍ࠓͷઃܭͷ··͑ΒΕΔΑ͏ʹ ͓͖͍ͯͨ͠ • ։ൃظ͕͍ؒʢ1ϲ݄ʣͷͰෳࡶͳ࣮ ͨ͘͠ͳ͍
࠷ॳͷઃܭ
None
Redisͱʁ • ϝϞϦ্ʹKey-ValueετΞ(KVS)Λߏங͢Δ ͜ͱ͕Ͱ͖ΔιϑτΣΞ • ϝϞϦ্ʹσʔλΛ֨ೲ͢ΔͷͰɼඇৗʹߴ ʹσʔλͷॻ͖ࠐΈɾಡΈࠐΈΛߦ͏͜ͱ ͕Ͱ͖Δ • σʔλͷӬଓԽ͕Մೳ
࠷ॳͷઃܭ • masterRedisΛ༻ҙͯ͠ϨϓϦέʔγϣϯ • slaveRedisϩʔΧϧʹ࣋ͭ
None
͕ൃੜ
σʔλྔΛܭࢉͨ͠Βɺ ϝϞϦʹΓΒͳ͍͜ͱ͕ ໌
RedisͰ࣮͢Δ߹ɺ 1ޙʹ120GBͷϝϞϦ͕ ඞཁͳఆͩͬͨ
ผͷ࣮Λߟ͑ͨ
None
DynamoDBͱʁ • શϚωʔδυܕͷ NoSQLͷσʔλϕʔεαʔϏε • ࠓͷ৴γεςϜͰKVSͱͯ͠༻͍ͯ͠Δ
DynamoDBͷಛ • ཧָ͕ʂ • ༰ྔͷ૿ՃΛؾʹ͠ͳͯ͘ྑ͍ • ݕࡧɺूܭऑ͍ • ͍ϨΠςϯγ
DynamoDBͷϢʔεέʔε • KVSͱͯ͠ • ࠂήʔϜͳͲͷߦಈཤྺDBͱͯ͠ • ϞόΠϧΞϓϦͷόοΫΤϯυͱͯ͠ - ϞόΠϧΞϓϦ͔ΒࢀরͰ͖ΔDBͱͯ͠
http://www.slideshare.net/AmazonWebServicesJapan/ 20150805-aws-blackbeltdynamodb
৴αʔόʔઃܭ ֆΛೖΕΔɻ
৴αʔόʔઃܭ
Ͳ͏ͬͯɺDynamoDBʹ ৴σʔλΛೖΕ͍ͯΔ͔
None
ݩʑͷఆ
DynamoDB ॻ͖ࠐΈΩϟύγςΟෆ
SleepೖΕͳ͕ΒϦτϥΠ
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)
None
None
DynamoDBΛӡ༻͢Δ্Ͱ ؾΛ͚ͭΔ͜ͱ
ΩϟύγςΟϢχοτ
ΩϟύγςΟϢχοτͱʁ • ͬ͘͟Γݴ͏ͱͲΕ͚ͩॻ͖ࠐΊΔ͔ɺ ͲΕ͚ͩಡΈࠐΊΔ͔ΛܾΊΔͭ
ΩϟύγςΟϢχοτͱʁ • ߴΊʹઃఆ͢Δͱ͓͕͔͔ۚΔɻ • Ίʹઃఆͯ͠ΩϟύγςΟϢχοτҎ্ ༻͢Δͱॲཧʹࣦഊ͢Δ • ಡΈࠐΈɺॻ͖ࠐΈݸผʹઃఆ͢Δ
None
͋Εɺ͑ͯΔͷʹ͑ͯΔʁ
ͳͥ͜Μͳ͜ͱ͕ى͜Δͷ͔ʁ
όʔετΩϟύγςΟ • ར༻͞Εͳ͔ͬͨύʔςΟʔγϣϯͷΩϟύ γςΟΛաڈ300ඵ·ͰϦβʔϒ͞ΕΔ͘͠ Έɻ • όʔεττϥϑΟοΫʹ͑ΒΕΔɻ
None
DynamoDBͷಡΈࠐΈྔ͕ ಡΊͳ͍
ࠓճͷ৴αʔόʔͷઃܭͩ ͱɺϦΫΤετ͕૿͑Ε૿ ͑Δ΄ͲɺDynamoDBͷෛՙ ૿͍͑ͯ͘༧ఆ
ReadରࡦҊ • ༧ΊଟΊʹΩϟύγςΟϢχοτΛઃఆͯ͠ ͓͘ • DynamoDBͷReadʹࣦഊͨ͠Β༧Ί༻ҙͯ͠ ͓͍ͨɺσϑΥϧτࠂΛग़͢ • DynamoDBͷΩϟύγςΟϢχοτΛಈతʹ มߋ
DynamoDBͷ AutoScaleΛ͠Α͏
None
None
LambdaͰղܾ
http://dev.classmethod.jp/etc/auto- scaling-dynamodb-by-lambda/
None
88888888888888888
None
ͬͯ͘͠͡·͢
Ͳ͕͍ͬͯ͘͜͠͡Δ͔ʁ
αϒγεςϜͷҰ෦Λ ϦϦʔεޙ͙͢ʹ ࡞Γ͍ͯ͠Δ
None
͜ͷ։ൃɺϦϦʔε༧ఆ͕ 3िؒ৳ͼ·ͨ͠
None
࠷ݶӡ༻͢Δ্Ͱ ຊඞཁͳ͔ͬͨ ͷୡ
࠷ॳʹ࡞ͬͨγεςϜߏਤ
None
࠷ॳ͔Β͜ΕΛ࡞Ζ͏ͱͨ͠
݁ՌతʹϦϦʔε͕ 3िؒ৳ͼͨ
ϦϦʔε͕৳ͼͨݪҼ • ࠷ॳ͔Β࡞Ζ͏ͱͨ͠γεςϜ͕େ͖͗ͨ͢ • ٻΊ͍ͯͨੑೳ͕ߴ͗ͯ͢ɺ༨ܭʹ ࣌ؒΛͬͯ͠·ͬͨɻ • ςετΛॻ͍ͯͳ͔ͬͨͷͰɺσάϨ͕ සൃͯ͠͠·ͬͨ •
ཧը໘ͷ։ൃʹ༧Ҏ্ͷ͕͔͔࣌ؒͬͨ
ϦϦʔε͕৳ͼͨݪҼ • ࠷ॳ͔Β࡞Ζ͏ͱͨ͠γεςϜ͕େ͖͗ͨ͢ • খ͘͞࡞ΕΑ͔ͬͨ
ϦϦʔε͕৳ͼͨݪҼ • ٻΊ͍ͯͨੑೳ͕ߴ͗ͯ͢ɺ༨ܭʹ ࣌ؒΛͬͯ͠·ͬͨɻ • ͦͷੑೳ͕ࠓຊʹඞཁ͔ ֬ೝ͠Α͏
ϦϦʔε͕৳ͼͨݪҼ • ςετΛॻ͍ͯͳ͔ͬͨͷͰɺσάϨ͕ සൃͯ͠͠·ͬͨ • ࠷ݶͷςετॻ͜͏
ϦϦʔε͕৳ͼͨݪҼ • ཧը໘ͷ։ൃʹ༧Ҏ্ͷ͕͔͔࣌ؒͬͨ • શ෦࡞ΔΜ͡Όͳ͘ɺ ӡ༻ͰΧόʔͰ͖Δͷ ͋ΔఔΧόʔ͠Α͏
ඞཁͳ࣌ʹ ඞཁͳػೳɺੑೳ͕ ͋Ε͍͍
ՁΛૣ͘ಧ͚Α͏
͋ͬͨΒ͍͍ͳػೳ
ͳ͍͍ͯ͘ػೳ
·ͱΊ • ՁΛૣ͘ಧ͚ΔͨΊʹɺ ࠓඞཁͳͷ͚ͩΛ࡞͍ͬͯ͜͏ • ։ൃ͠ͳͯ͘ӡ༻Ͱ͖Δͷʹ͍ͭͯ ࡞Βͣɺӡ༻ͯ͠ΈΑ͏