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
Jakarta EE meets AI
ivargrimstad
0
160
よくできたテンプレート言語として TypeScript + JSX を利用する試み / Using TypeScript + JSX outside of Web Frontend #TSKaigiKansai
izumin5210
6
1.8k
A Journey of Contribution and Collaboration in Open Source
ivargrimstad
0
1k
Jakarta EE meets AI
ivargrimstad
0
240
Quine, Polyglot, 良いコード
qnighy
4
650
初めてDefinitelyTypedにPRを出した話
syumai
0
420
ActiveSupport::Notifications supporting instrumentation of Rails apps with OpenTelemetry
ymtdzzz
1
250
Enabling DevOps and Team Topologies Through Architecture: Architecting for Fast Flow
cer
PRO
0
340
『ドメイン駆動設計をはじめよう』のモデリングアプローチ
masuda220
PRO
8
540
ふかぼれ!CSSセレクターモジュール / Fukabore! CSS Selectors Module
petamoriken
0
150
リアーキテクチャxDDD 1年間の取り組みと進化
hsawaji
1
220
2024/11/8 関西Kaggler会 2024 #3 / Kaggle Kernel で Gemma 2 × vLLM を動かす。
kohecchi
5
940
Featured
See All Featured
Fashionably flexible responsive web design (full day workshop)
malarkey
405
65k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
430
Measuring & Analyzing Core Web Vitals
bluesmoon
4
130
How STYLIGHT went responsive
nonsquared
95
5.2k
Building an army of robots
kneath
302
43k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Into the Great Unknown - MozCon
thekraken
32
1.5k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.8k
Music & Morning Musume
bryan
46
6.2k
How To Stay Up To Date on Web Technology
chriscoyier
788
250k
Writing Fast Ruby
sferik
627
61k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
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िؒ৳ͼͨ
ϦϦʔε͕৳ͼͨݪҼ • ࠷ॳ͔Β࡞Ζ͏ͱͨ͠γεςϜ͕େ͖͗ͨ͢ • ٻΊ͍ͯͨੑೳ͕ߴ͗ͯ͢ɺ༨ܭʹ ࣌ؒΛͬͯ͠·ͬͨɻ • ςετΛॻ͍ͯͳ͔ͬͨͷͰɺσάϨ͕ සൃͯ͠͠·ͬͨ •
ཧը໘ͷ։ൃʹ༧Ҏ্ͷ͕͔͔࣌ؒͬͨ
ϦϦʔε͕৳ͼͨݪҼ • ࠷ॳ͔Β࡞Ζ͏ͱͨ͠γεςϜ͕େ͖͗ͨ͢ • খ͘͞࡞ΕΑ͔ͬͨ
ϦϦʔε͕৳ͼͨݪҼ • ٻΊ͍ͯͨੑೳ͕ߴ͗ͯ͢ɺ༨ܭʹ ࣌ؒΛͬͯ͠·ͬͨɻ • ͦͷੑೳ͕ࠓຊʹඞཁ͔ ֬ೝ͠Α͏
ϦϦʔε͕৳ͼͨݪҼ • ςετΛॻ͍ͯͳ͔ͬͨͷͰɺσάϨ͕ සൃͯ͠͠·ͬͨ • ࠷ݶͷςετॻ͜͏
ϦϦʔε͕৳ͼͨݪҼ • ཧը໘ͷ։ൃʹ༧Ҏ্ͷ͕͔͔࣌ؒͬͨ • શ෦࡞ΔΜ͡Όͳ͘ɺ ӡ༻ͰΧόʔͰ͖Δͷ ͋ΔఔΧόʔ͠Α͏
ඞཁͳ࣌ʹ ඞཁͳػೳɺੑೳ͕ ͋Ε͍͍
ՁΛૣ͘ಧ͚Α͏
͋ͬͨΒ͍͍ͳػೳ
ͳ͍͍ͯ͘ػೳ
·ͱΊ • ՁΛૣ͘ಧ͚ΔͨΊʹɺ ࠓඞཁͳͷ͚ͩΛ࡞͍ͬͯ͜͏ • ։ൃ͠ͳͯ͘ӡ༻Ͱ͖Δͷʹ͍ͭͯ ࡞Βͣɺӡ༻ͯ͠ΈΑ͏