今日から始める Flood.io / fuka-taisaku-night-01

A79762150f8a3c6015ec11c4f494a371?s=47 kikunantoka
February 06, 2019

今日から始める Flood.io / fuka-taisaku-night-01

- ギフティでの負荷対策の重要性
- Flood.io について
- Flood.io の活用
- 30万RPM を耐えるためにやったこと

A79762150f8a3c6015ec11c4f494a371?s=128

kikunantoka

February 06, 2019
Tweet

Transcript

  1. ࠓ೔͔Β࢝ΊΔ Flood.io גࣜձࣾΪϑςΟ ٠઒ ࢙و ෛՙରࡦ Night #1 @ΪϑςΟ on

    2018/02/06
  2. ࣗݾ঺հ about: name: Fumitaka Kikukawa twitter: @kikunantoka job: engineer work_at:

    giftee Inc. // giftee is a good company. url: https://kikunantoka.com
  3. ࣗݾ঺հ

  4. ࣗݾ঺հ https://nakamy.com

  5. ఻͍͑ͨ͜ͱ • ΪϑςΟͰͷෛՙରࡦͷॏཁੑ • Flood.io ʹ͍ͭͯ • Flood.io ͷ׆༻ •

    30ສRPM Λ଱͑ΔͨΊʹ΍ͬͨ͜ͱ
  6. ΪϑςΟͰͷෛՙରࡦ ͷॏཁੑ

  7. ࣄۀ಺༰

  8. ࣄۀ಺༰

  9. ࣄۀ಺༰

  10. giftee for Buisness

  11. ୲౰͍ͯ͠ΔϓϩμΫτ ʢࣾ಺Ͱ($1ͱུ͞Εͩ͢ʜʣ HJGUFFΠϯελϯτ΢ΟϯGPS5XJUUFSͷڧΈᶃ நબ͔Βܠ඼ͷఏڙ·ͰҰؾ௨؏Ͱ͝ఏڙ நબγεςϜ ʢΠϯελϯτ΢Οϯʣ σδλϧΪϑτͷఏڙ ʢछྨҎ্ͷܠ඼ʣ ϦΞϧλΠϜʹநબɺ ͦͷ৔Ͱܠ඼Λ෇༩

  12. LINEೝূͷύλʔϯ΋ఏڙ HJGUFFΠϯελϯτ΢ΟϯGPS-*/&ͷڧΈᶃ ©2018 gi)ee Inc. all rights reserved J நબ͔Βܠ඼ͷఏڙ·ͰҰؾ௨؏Ͱ͝ఏڙ

    நબγεςϜ ʢΠϯελϯτ΢Οϯʣ σδλϧΪϑτͷఏڙ ʢछྨҎ্ͷܠ඼ʣ ϦΞϧλΠϜʹநબɺ ͦͷ৔Ͱܠ඼Λ෇༩
  13. ΊͬͪΌΞΫηεདྷΔ • ༑ͩͪ਺ 2300ສͷΞΧ΢ϯτͰΩϟϯϖʔϯΛ࣮ࢪͨ݁͠Ռ ʊਓਓਓਓਓਓਓਓਓਓਓʊ ʼɹ࠷େ 30ສRPMɹʻ ʉY^Y^Y^Y^Y^Y^Y^Y^ʉ

  14. Flood.io ʹ͍ͭͯ

  15. Flood.io ͱ͸ • Ϋϥ΢υϕʔεͷϩʔυςεταʔϏε

  16. Flood.io ͱ͸ • Selenium, JMeter ( + ruby-jmeter) , Gatling

    • ޷͖ͳςετπʔϧΛ࢖͏͜ͱ͕Ͱ͖Δ • طʹGatlingͷςετίʔυ͕͋ͬͨͷͰɺGatlingΛ࠾༻
  17. Flood.io ͱ͸ • Ձ֨ • 50 Node Hours Ͱ 33,000ԁఔ౓ʢैྔׂҾ͋Γʣ

  18. Flood.io ͷྑ͍఺ • Ϋϥ΢υ্Ͱؾܰʹϩʔυςετ͕Ͱ͖Δ • ϊʔυͷεέʔϧΞοϓ͕؆୯ • ݁Ռ͕ϏδϡΞϥΠζ͞ΕΔ • Web্Ͱ݁Ռͱςετέʔεͷ؅ཧ͕Ͱ͖Δ

    • ςετ݁Ռ͸γΣΞ༻ͷϦϯΫͰڞ༗Ͱ͖Δ
  19. Flood.io ͷѱ͍఺ • ϩάͷอ༗ظ͕ؒ1ϲ݄ఔ౓ • ςετέʔεͱΤϥʔݪҼͷηοτͰ؅ཧ͍ͨ͠৔߹ʹෆ ศ

  20. σϞ

  21. Flood.io ͷ׆༻

  22. New Relic ͰϘτϧωοΫΛಛఆ • Flood.io ͰෛՙΛ͔͚ͨ࣌ͷ༷ࢠΛϞχλϦϯά͢Δ

  23. ෛՙݕূΛ܁Γฦ͢ • ϩʔυςετΛ͢Δ • ϘτϧωοΫ͕ݟ͔ͭΔ • ϘτϧωοΫΛվળ͢Δ • Λ܁Γฦ͢

  24. ෛՙݕূΛ܁Γฦ͢ • ϩοΫॲཧʹΑͬͯɺλΠϜΞ΢τ • ϩοΫॲཧͷൣғͷվળ • ίωΫγϣϯϓʔϧ͕଍Γͳ͘ͳΔ • DBͷઃఆ஋ͷमਖ਼ •

    RDSʹ઀ଓͰ͖ͳ͘ͳΔ • ΠϯελϯελΠϓͷมߋ
  25. ϘτϧωοΫʹͳΓ΍͍͢ϙΠϯτ • σʔλ͕૿͑Δ͜ͱʹΑͬͯੑೳྼԽ͠ͳ͍͔ • εϩʔΫΤϦΛ౤͍͛ͯͳ͍͔ • ϩοΫॲཧͷൣғ͕޿͗͢ͳ͍͔ • σουϩοΫ͍ͯ͠ͳ͍͔ •

    ແବͳΠϯελϯεΛੜ੒͍ͯ͠ͳ͍͔ • ੩తϑΝΠϧ͸CDN഑৴͢Δ
  26. ஫ҙ఺ • AWS΁ࣄલʹϩʔυςετ͢ΔࢫΛ఻͓͑ͯ͘ • ಉҰIP͔ΒҰఆ਺Ҏ্ΞΫηε͕͋Δͱ߈ܸͱΈͳ͞ΕΔ • AWS LoftͷαϙʔτΤϯδχΞ΋ਃ੥͸ग़ͨ͠΄͏͕ྑ͍ ͱͷݟղ

  27. 30ສRPM Λ଱͑ΔͨΊʹ ΍ͬͨ͜ͱ

  28. εέʔϧΞοϓͰ͖ΔΑ͏ʹ͓ͯ͘͠ • Elastic Beanstalk

  29. εέʔϧΞοϓͰ͖ΔΑ͏ʹ͓ͯ͘͠ • Amazon Aurora • RDS for MySQL͔ΒҠߦͨ͠ • ϑΣΠϧΦʔόʔػೳΛ࢖͏͜ͱͰɺΠϯελϯελΠϓ

    ͷมߋ࣌ͷμ΢ϯλΠϜ͕5ඵఔ౓ʹ • ॻ͖ࠐΈIOPS͔Βͷ։์
  30. DBͷઃఆΛݟ௚͢ • DB ͷ Pool ਺΍ Puma ͷ Thread ਺ɺWorker

    ਺͸ద੾͔ • DB ͷ Pool ਺ -> Puma ͷεϨου਺ • Puma ͷ Worker ਺ -> CPUͷίΞ਺ • Puma ͷ Thread ਺ -> CPU࢖༻཰ͱ૬ஊ
  31. ࠷৽ͷΠϯελϯελΠϓΛ࢖͏ ໊લ W$16 3". $16ΫϨδοτ࣌ؒ ྉۚ࣌ؒ UTNBMM   

    64% UTNBMM    64% • ίεύ͕ྑ͍ • Puma ͷ Worker ਺Λ 2 ʹͰ͖Δ -> 2ഒͷεϨου਺ • ͨͩ͠ɺAWSଆͰϦιʔε͕଍Γͳ͘ͳΔϦεΫ͕͋Δ
  32. WebαʔόΛཱͯ·͘Ε͹͍͍͍ͬͯ͏࿩Ͱ͸ͳ͍ • db.r4.16xlargeͷ৔߹ • 32 Threads x 2 Workers •

    1୆͋ͨΓ 64 Threads • 6000 / 64 = 93.75 • 92୆͙Β͍͕ݶքʂ
  33. ͪΌΜͱਓΛೖΕΔ • 1ਓͩͱӡ༻ਏ͍ • 2ਓ͍Ε͹ɺਏ͍͜ͱ͸൒෼ʹɺتͼ͸2ഒʹ • ͓ۚΛՔ͙ • ੠Λ্͛Δ

  34. ίϚʔγϟϧ • We are hiring!!! - Ұॹʹಇ͘஥ؒΛืूதʂ ձһ਺ສਓಥഁʂ ࠃ಺/PͷΧδϡΞϧΪϑταʔϏε