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
2k
しくじり先生 アドネットワーク開発でしくじった話 / yapc8oji
yuma iwasaki
July 03, 2016
Tweet
Share
More Decks by yuma iwasaki
See All by yuma iwasaki
僕のキャリアとワインと鍋 / daikichijojipm
suthio
8
5.6k
「Laravel Novaの適切な使い方を考えてみる」 / laravel meetup tokyo vol 11
suthio
0
1.8k
バッチをGoにリプレイスして高速化した話 / GoGoGolangEdition!
suthio
2
28k
本当は怖くない AWS Lambda / speee_cafe_meetup06
suthio
2
790
広告配信サーバーにおけるBlue Green Deploymentの導入事例について \ SpeeeCafeMeetup05
suthio
3
1.7k
初めての本当の意味でのチーム開発 / pmjp 2016-12-03
suthio
4
1.7k
AWSインフラ構築ツールとしてのTerraform / SpeeeKaigi
suthio
1
2.2k
広告配信サーバーの設計について / Speee Engineer Meeting 2016-06-22
suthio
5
2.6k
Other Decks in Programming
See All in Programming
ニックトレイン登壇資料
ryotakurokawa
0
140
フロントエンドテストの育て方
quramy
9
2.5k
Return of the Full-Stack Developer
simas
PRO
1
310
自分のために作ったアプリが、グローバルに使われるまで / Indie App Development Lunch LT
pixyzehn
1
120
新卒から4年間、20年もののWebサービスと 向き合って学んだソフトウェア考古学
oguri
7
6.7k
Going Structural with Named Tuples
bishabosha
0
170
Go1.24で testing.B.Loopが爆誕
kuro_kurorrr
0
160
バックエンドNode.js × フロントエンドDeno で開発して得られた知見
ayame113
5
1.3k
小さく段階的リリースすることで深夜メンテを回避する
mkmk884
2
130
読もう! Android build ドキュメント
andpad
1
240
Day0 初心者向けワークショップ実践!ソフトウェアテストの第一歩
satohiroyuki
0
410
家族・子育て重視/沖縄在住を維持しながらエンジニアとしてのキャリアをどのように育てていくか?
ug
0
240
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
28
1.6k
Building Flexible Design Systems
yeseniaperezcruz
328
38k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
Fireside Chat
paigeccino
37
3.3k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.7k
Writing Fast Ruby
sferik
628
61k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Become a Pro
speakerdeck
PRO
27
5.2k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
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िؒ৳ͼͨ
ϦϦʔε͕৳ͼͨݪҼ • ࠷ॳ͔Β࡞Ζ͏ͱͨ͠γεςϜ͕େ͖͗ͨ͢ • ٻΊ͍ͯͨੑೳ͕ߴ͗ͯ͢ɺ༨ܭʹ ࣌ؒΛͬͯ͠·ͬͨɻ • ςετΛॻ͍ͯͳ͔ͬͨͷͰɺσάϨ͕ සൃͯ͠͠·ͬͨ •
ཧը໘ͷ։ൃʹ༧Ҏ্ͷ͕͔͔࣌ؒͬͨ
ϦϦʔε͕৳ͼͨݪҼ • ࠷ॳ͔Β࡞Ζ͏ͱͨ͠γεςϜ͕େ͖͗ͨ͢ • খ͘͞࡞ΕΑ͔ͬͨ
ϦϦʔε͕৳ͼͨݪҼ • ٻΊ͍ͯͨੑೳ͕ߴ͗ͯ͢ɺ༨ܭʹ ࣌ؒΛͬͯ͠·ͬͨɻ • ͦͷੑೳ͕ࠓຊʹඞཁ͔ ֬ೝ͠Α͏
ϦϦʔε͕৳ͼͨݪҼ • ςετΛॻ͍ͯͳ͔ͬͨͷͰɺσάϨ͕ සൃͯ͠͠·ͬͨ • ࠷ݶͷςετॻ͜͏
ϦϦʔε͕৳ͼͨݪҼ • ཧը໘ͷ։ൃʹ༧Ҏ্ͷ͕͔͔࣌ؒͬͨ • શ෦࡞ΔΜ͡Όͳ͘ɺ ӡ༻ͰΧόʔͰ͖Δͷ ͋ΔఔΧόʔ͠Α͏
ඞཁͳ࣌ʹ ඞཁͳػೳɺੑೳ͕ ͋Ε͍͍
ՁΛૣ͘ಧ͚Α͏
͋ͬͨΒ͍͍ͳػೳ
ͳ͍͍ͯ͘ػೳ
·ͱΊ • ՁΛૣ͘ಧ͚ΔͨΊʹɺ ࠓඞཁͳͷ͚ͩΛ࡞͍ͬͯ͜͏ • ։ൃ͠ͳͯ͘ӡ༻Ͱ͖Δͷʹ͍ͭͯ ࡞Βͣɺӡ༻ͯ͠ΈΑ͏