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

広告配信サーバーの設計について / Speee Engineer Meeting 2016-06-22

広告配信サーバーの設計について / Speee Engineer Meeting 2016-06-22

yuma iwasaki

July 04, 2016
Tweet

More Decks by yuma iwasaki

Other Decks in Programming

Transcript

  1. 
 ഑৴αʔόʔઃܭ
 ʹ͍ͭͯ 2016-07-04 Speee Engineer Meeting @suthio

  2. ΞδΣϯμ • Πϯλʔωοτ޿ࠂʹ͍ͭͯ • ഑৴αʔόʔઃܭ • ·ͱΊ

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

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

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

  9. None
  10. None
  11. ు͖ͦ͏ɻ

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

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

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

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

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

  18. None
  19. None
  20. Ϣʔβʔ͸ແҙࣝʹ
 ޿ࠂΛແࢹ͍ͯ͠Δ

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

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

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

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

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

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

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

  28. CONFIDENTIAL CONFIDENTIAL CONFIDENTIAL ネイティブアドの種類 ᶃΠϯϑΟʔυܕ ᶄϖΠυαʔνܕ ᶇωΠςΟϒΞυཁૉΛ࣋ͭ ΠϯΞυܕ ᶅϨίϝϯυ΢ΟδΣοτܕ ᶆϓϩϞʔτϦεςΟϯάܕ

    ᶈΧελϜܕ ৯΂ϩά LINEελϯϓ Above the Law ※IABʢInteractive Advertising Bureauʣج४ʹΑΔ ωΠςΟϒΞυ
  29. http://markezine.jp/article/detail/21916

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

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

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

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

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

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

  37. ࠷ॳͷઃܭ

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

    ಋೖ࣌͸σʔλྔͷ໿2ഒͷϝϞϦ͕ඞཁ
  40. ࠷ॳͷઃܭ • masterRedisΛ༻ҙͯ͠ϨϓϦέʔγϣϯ • slaveRedis͸ϩʔΧϧʹ࣋ͭ

  41. None
  42. ໰୊͕ൃੜ

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

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

  45. ผͷ࣮૷Λߟ͑ͨ

  46. None
  47. DynamoDBͱ͸ʁ • ׬શϚωʔδυܕͷ
 NoSQLͷσʔλϕʔεαʔϏε • UZOUͷ഑৴Ͱ͸KVSͱͯ͠࢖༻͍ͯ͠Δ

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

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

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

  51. UZOUͰͷ഑৴αʔόʔઃܭ ֆΛೖΕΔɻ

  52. UZOUͰͷ഑৴αʔόʔઃܭ

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

  54. ݩʑͷ૝ఆ

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

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

  57. ͱ͔΍ͬͯͨΒ৘ऑ

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

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

  61. 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 * * * ? *)
  62. None
  63. ҋͬΆ͍

  64. ঘɺࠓ͸ղܾࡁ

  65. rate(1 minutes)

  66. ݱࡏͷ഑৴αʔόʔ • 1୆౰ͨΓɺඵؒ500ΞΫηεࡹ͚Δ • DynamoDBʹ͸1ΞΫηε౰ͨΓɺ10ms

  67. DynamoDBΛӡ༻͢Δ্Ͱ
 ؾΛ͚ͭΔ͜ͱ

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

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

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

  71. None
  72. ͋Εɺ௒͑ͯΔͷʹ࢖͑ͯΔʁ

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

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

  75. None
  76. DynamoDBͷಡΈࠐΈྔ͕
 ಡΊͳ͍໰୊

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

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

  79. DynamoDBͷ
 AutoScalaΛ͠Α͏

  80. None
  81. None
  82. LambdaͰղܾ

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

  84. Ծઆɺݕূ

  85. Ծઆ1

  86. ݟͯΔهࣄʹΑΓྨࣅͨ͠ ޿ࠂɺهࣄͩͬͨΒΫϦοΫ ͞Ε΍͘͢ͳΔΜ͡Όͳ͍͔ʁ

  87. Ͳ͏΍Β߹͍ͬͯΔΑ͏ͩ

  88. ࡉ͔͘ݕূɺݕূ