$30 off During Our Annual Pro Sale. View details »

しくじり先生 
 アドネットワーク開発でしくじった話 / yapc8oji

しくじり先生 
 アドネットワーク開発でしくじった話 / yapc8oji

yuma iwasaki

July 03, 2016
Tweet

More Decks by yuma iwasaki

Other Decks in Programming

Transcript

  1. ͘͠͡Γઌੜ 
 ΞυωοτϫʔΫ։ൃͰͬͨ͘͠͡࿩ 2016-07-03 YAP(achimon)C::Asia Hachioji 2016 mid in Shinagawa

  2. ࣗݾ঺հ • GitHub @suthio • Twitter @yuma_iwasaki • Company: Speee

    ࣗݾ঺հ
  3. ΞδΣϯμ • Πϯλʔωοτ޿ࠂʹ͍ͭͯ • γεςϜ֓ཁ • ഑৴αʔόʔઃܭ • ͬͨ͘͠͡࿩

  4. Έͳ͞Μʂ Πϯλʔωοτ޿ࠂ͸ ޷͖Ͱ͔͢ʁ

  5. Έͳ͞Μʂ Πϯλʔωοτ޿ࠂʹ ׳Εͯ·ͤΜ͔ʁ

  6. None
  7. None
  8. None
  9. ੈքͰҰ൪޿ࠂ͕ଟ͍αΠτͬ ͯݟͨ͜ͱ͋Γ·͔͢ʁ

  10. http://www.milliondollarhomepage.com/

  11. http://www.milliondollarhomepage.com/

  12. ు͖ͦ͏ɻ

  13. ޿ࠂͷΠϝʔδ • ᓔಃ͍͠ɺअຐ • ΫϦοΫͨ͘͠ͳ͍

  14. ஌Γ߹͍ʹฉ͍ͨ • Youtubeૣ͘ݟ͍ͨ • ؒҧ͑ͯԡ͢ͱΠϥοͱ͢Δ • ͳΜ͔͍ͭͯ͘Δͷා͍ʢϦλʔήςΟϯάʣ

  15. ੲ͔Β͜͏Ͱ͚ͨͬ͠ʁ

  16. None
  17. 2010೥͔Βͷ
 4ϲ݄ຖͷΫϦοΫ཰ͷਪҠ

  18. ΫϦοΫ཰͸
 ࣮֬ʹԼ͕͍ͬͯΔ

  19. http://www.startrise.jp/columuns/view/4140

  20. http://blog.somewrite.jp/case/native-ads-work/

  21. Ϣʔβʔ͸ແҙࣝʹ
 ޿ࠂΛແࢹ͍ͯ͠Δ

  22. Ϣʔβʔ͕ݡ͘ͳͬͨ

  23. ΫϦοΫ͞Εͳ͘ͳΔͱ
 Ͳ͏ͳΔͷ͔ʁ

  24. ΫϦοΫ͞Εͳ͘ͳΔͱʁ • ϝσΟΞɿऩӹੑͷ௿Լ • ޿ࠂओɿϢʔβʔʹಧ͚͍ͨϝοηʔδ͕
 ಧ͚ΒΕͳ͍

  25. ݁ՌతʹϢʔβʔʹ
 ྑ࣭ͳهࣄΛ
 ఏڙͰ͖ͳ͘ͳͬͯ͠·͏

  26. Ϣʔβʔ͔ΒݏΘΕͳ͍ܗͰ ޿ࠂΛग़͢ඞཁ͕ग़͖ͯͨ

  27. ͦ͜ͰωΠςΟϒΞυ

  28. ωΠςΟϒΞυ͸ʁ • ϢʔβʔʹετϨεΛ༩͑Δ͜ͱͳ͘ɺ
 ޿ࠂΛग़ߘͰ͖Δ • σΟεϓϨΠ޿ࠂͷ3ഒۙ͘ͷΫϦοΫ཰ • ࿮ʹରͯ͠ೃછΜͩ޿ࠂΛ
 ఏڙ͢Δ͜ͱ͕Մೳ

  29. http://markezine.jp/article/detail/21916

  30. http://markezine.jp/article/detail/21916

  31. Ϩίϝϯυ΢ΟδΣοτͱ͸ʁ • ϢʔβʔʹαΠτ಺ͷϨίϝϯυهࣄͱ
 ޿ࠂΛಉ࣌ʹ഑৴ɺදࣔ • ࿮ͷܝࡌഔମ΍දࣔϑΥʔϚοτ͔Βɺ
 Ϣʔβʔ͸ભҠઌ͕ίϯςϯπͰ͋Δ͜ͱΛ
 ࣗવͱظ଴͍ͯ͠Δঢ়ଶͱͳ͍ͬͯΔ

  32. Ϩίϝϯυ΢ΟδΣοτͱ͸ʁ • ͱ͍͏͜ͱ͸༷ʑͳύλʔϯͷϨίϝϯυ͕ ඞཁɻ • ݱࡏ͸هࣄ͝ͱʹϨίϝϯυΛߦ͍ͬͯΔ

  33. ωΠςΟϒΞυͷ
 ഑৴γεςϜ

  34. None
  35. Ϩίϝϯυ݁Ռ഑৴ϑϩʔ • Ϋϩʔϥʔ͕ຊจΛऔಘ • EMRʹͯຊจղੳ • Ϩίϝϯυ݁ՌΛ഑৴৘ใͱ߹Θͤͯ
 DynamoDBʹWrite • ΞΫηε࣌ʹDynamoDBΛࢀরͯ͠


    Ϩίϝϯυ݁ՌΛ഑৴
  36. ഑৴αʔόʔʹ͍ͭͯ

  37. None
  38. ഑৴αʔόʔඞཁཁ݅ • ResponseΛ100msҎ಺ʹฦ͢ඞཁ͕͋Δ • هࣄຖʹग़͢ϨίϝϯυσʔλΛม͑Δ • ߴτϥϑΟοΫʹ଱͑͏Δ

  39. ഑৴αʔόʔ࡞Δ࣌ʹ
 ߟ͑ͨ͜ͱ • 1೥͙Β͍͸ࠓͷઃܭͷ··଱͑ΒΕΔΑ͏ʹ
 ͓͖͍ͯͨ͠ • ։ൃظ͕ؒ୹͍ʢ໿1ϲ݄ʣͷͰෳࡶͳ࣮૷͸
 ͨ͘͠ͳ͍

  40. ࠷ॳͷઃܭ

  41. None
  42. Redisͱ͸ʁ • ϝϞϦ্ʹKey-ValueετΞ(KVS)Λߏங͢Δ ͜ͱ͕Ͱ͖Διϑτ΢ΣΞ • ϝϞϦ্ʹσʔλΛ֨ೲ͢ΔͷͰɼඇৗʹߴ ଎ʹσʔλͷॻ͖ࠐΈɾಡΈࠐΈΛߦ͏͜ͱ ͕Ͱ͖Δ • σʔλͷӬଓԽ͕Մೳ

  43. ࠷ॳͷઃܭ • masterRedisΛ༻ҙͯ͠ϨϓϦέʔγϣϯ • slaveRedis͸ϩʔΧϧʹ࣋ͭ

  44. None
  45. ໰୊͕ൃੜ

  46. σʔλྔΛܭࢉͨ͠Βɺ
 ϝϞϦʹ৐Γ੾Βͳ͍͜ͱ͕ ൑໌

  47. RedisͰ࣮૷͢Δ৔߹ɺ
 1೥ޙʹ120GBͷϝϞϦ͕
 ඞཁͳ૝ఆͩͬͨ

  48. ผͷ࣮૷Λߟ͑ͨ

  49. None
  50. DynamoDBͱ͸ʁ • ׬શϚωʔδυܕͷ
 NoSQLͷσʔλϕʔεαʔϏε • ࠓͷ഑৴γεςϜͰ͸KVSͱͯ͠࢖༻͍ͯ͠Δ

  51. DynamoDBͷಛ௃ • ؅ཧָ͕ʂ • ༰ྔͷ૿ՃΛؾʹ͠ͳͯ͘ྑ͍ • ݕࡧɺूܭ͸ऑ͍ • ௿͍ϨΠςϯγ

  52. DynamoDBͷϢʔεέʔε • KVSͱͯ͠ • ޿ࠂ΍ήʔϜͳͲͷߦಈཤྺDBͱͯ͠ • ϞόΠϧΞϓϦͷόοΫΤϯυͱͯ͠
 - ϞόΠϧΞϓϦ͔Β௚઀ࢀরͰ͖ΔDBͱͯ͠

  53. http://www.slideshare.net/AmazonWebServicesJapan/ 20150805-aws-blackbeltdynamodb

  54. ഑৴αʔόʔઃܭ ֆΛೖΕΔɻ

  55. ഑৴αʔόʔઃܭ

  56. Ͳ͏΍ͬͯɺDynamoDBʹ
 ഑৴σʔλΛೖΕ͍ͯΔ͔

  57. None
  58. ݩʑͷ૝ఆ

  59. DynamoDB
 ॻ͖ࠐΈΩϟύγςΟෆ଍

  60. SleepೖΕͳ͕ΒϦτϥΠ

  61. SleepೖΕͳ͕ΒϦτϥΠ

  62. None
  63. Write࣌ͷӡ༻ํ๏ • 1෼ʹҰ౓Lambda͕ىಈ͢ΔΑ͏ʹεέ δϡʔϦϯάͯ͠SQS͕ಈ͘Α͏ʹ͢Δ • ୠ͠ɺLambda͸5෼ʹҰ౓ͷ
 εέδϡʔϦϯά͔͠࡞Εͳ͍

  64. ΠϕϯτιʔεΛ
 5ͭ࡞ͬͯղܾ

  65. 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 * * * ? *)
  66. None
  67. ҋͬΆ͍

  68. ঘɺࠓ͸ղܾࡁͰͨ͠

  69. rate(1 minutes)

  70. None
  71. None
  72. DynamoDBΛӡ༻͢Δ্Ͱ
 ؾΛ͚ͭΔ͜ͱ

  73. ΩϟύγςΟϢχοτ

  74. ΩϟύγςΟϢχοτͱ͸ʁ • ͬ͘͟Γݴ͏ͱͲΕ͚ͩॻ͖ࠐΊΔ͔ɺ
 ͲΕ͚ͩಡΈࠐΊΔ͔ΛܾΊΔ΍ͭ

  75. ΩϟύγςΟϢχοτͱ͸ʁ • ߴΊʹઃఆ͢Δͱ͓͕͔͔ۚΔɻ • ௿Ίʹઃఆͯ͠ΩϟύγςΟϢχοτҎ্
 ࢖༻͢Δͱॲཧʹࣦഊ͢Δ • ಡΈࠐΈɺॻ͖ࠐΈݸผʹઃఆ͢Δ

  76. None
  77. ͋Εɺ௒͑ͯΔͷʹ࢖͑ͯΔʁ

  78. ͳͥ͜Μͳ͜ͱ͕ى͜Δͷ͔ʁ

  79. όʔετΩϟύγςΟ • ར༻͞Εͳ͔ͬͨύʔςΟʔγϣϯͷΩϟύ γςΟΛաڈ300ඵ·ͰϦβʔϒ͞ΕΔ͘͠ Έɻ • όʔεττϥϑΟοΫʹ଱͑ΒΕΔɻ

  80. None
  81. DynamoDBͷಡΈࠐΈྔ͕
 ಡΊͳ͍໰୊

  82. ࠓճͷ഑৴αʔόʔͷઃܭͩ ͱɺϦΫΤετ͕૿͑Ε͹૿ ͑Δ΄ͲɺDynamoDBͷෛՙ ΋૿͍͑ͯ͘༧ఆ

  83. ReadରࡦҊ • ༧ΊଟΊʹΩϟύγςΟϢχοτΛઃఆͯ͠ ͓͘ • DynamoDBͷReadʹࣦഊͨ͠Β༧Ί༻ҙͯ͠ ͓͍ͨɺσϑΥϧτ޿ࠂΛग़͢ • DynamoDBͷΩϟύγςΟϢχοτΛಈతʹ มߋ

  84. DynamoDBͷ
 AutoScaleΛ͠Α͏

  85. None
  86. None
  87. LambdaͰղܾ

  88. http://dev.classmethod.jp/etc/auto- scaling-dynamodb-by-lambda/

  89. None
  90. 88888888888888888

  91. None
  92. ͬͯ͘͠͡·͢

  93. Ͳ͕͍ͬͯ͘͜͠͡Δ͔ʁ

  94. αϒγεςϜͷҰ෦Λ
 ϦϦʔεޙ͙͢ʹ
 ࡞Γ௚͍ͯ͠Δ

  95. None
  96. ͜ͷ։ൃɺϦϦʔε༧ఆ͕
 3िؒ৳ͼ·ͨ͠

  97. None
  98. ࠷௿ݶӡ༻͢Δ্Ͱ
 ຊ౰͸ඞཁͳ͔ͬͨ ΋ͷୡ

  99. ࠷ॳʹ࡞ͬͨγεςϜߏ੒ਤ

  100. None
  101. ࠷ॳ͔Β͜ΕΛ࡞Ζ͏ͱͨ͠

  102. ݁ՌతʹϦϦʔε͕
 3िؒ৳ͼͨ

  103. ϦϦʔε͕৳ͼͨݪҼ • ࠷ॳ͔Β࡞Ζ͏ͱͨ͠γεςϜ͕େ͖͗ͨ͢ • ٻΊ͍ͯͨੑೳ͕ߴ͗ͯ͢ɺ༨ܭʹ
 ࣌ؒΛ࢖ͬͯ͠·ͬͨɻ • ςετΛॻ͍ͯͳ͔ͬͨͷͰɺσάϨ͕
 සൃͯ͠͠·ͬͨ •

    ؅ཧը໘ͷ։ൃʹ༧૝Ҏ্ͷ͕͔͔࣌ؒͬͨ
  104. ϦϦʔε͕৳ͼͨݪҼ • ࠷ॳ͔Β࡞Ζ͏ͱͨ͠γεςϜ͕େ͖͗ͨ͢ • খ͘͞࡞Ε͹Α͔ͬͨ

  105. ϦϦʔε͕৳ͼͨݪҼ • ٻΊ͍ͯͨੑೳ͕ߴ͗ͯ͢ɺ༨ܭʹ
 ࣌ؒΛ࢖ͬͯ͠·ͬͨɻ • ͦͷੑೳ͕ࠓຊ౰ʹඞཁ͔ ֬ೝ͠Α͏

  106. ϦϦʔε͕৳ͼͨݪҼ • ςετΛॻ͍ͯͳ͔ͬͨͷͰɺσάϨ͕
 සൃͯ͠͠·ͬͨ • ࠷௿ݶͷςετ͸ॻ͜͏

  107. ϦϦʔε͕৳ͼͨݪҼ • ؅ཧը໘ͷ։ൃʹ༧૝Ҏ্ͷ͕͔͔࣌ؒͬͨ • શ෦࡞ΔΜ͡Όͳ͘ɺ
 ӡ༻ͰΧόʔͰ͖Δ΋ͷ͸
 ͋Δఔ౓Χόʔ͠Α͏

  108. ඞཁͳ࣌ʹ
 ඞཁͳػೳɺੑೳ͕
 ͋Ε͹͍͍

  109. Ձ஋Λૣ͘ಧ͚Α͏

  110. ͋ͬͨΒ͍͍ͳػೳ

  111. ͳͯ͘΋͍͍ػೳ

  112. ·ͱΊ • Ձ஋Λૣ͘ಧ͚ΔͨΊʹɺ
 ࠓඞཁͳ΋ͷ͚ͩΛ࡞͍ͬͯ͜͏ • ։ൃ͠ͳͯ͘΋ӡ༻Ͱ͖Δ΋ͷʹ͍ͭͯ͸
 ࡞Βͣɺӡ༻ͯ͠ΈΑ͏