20万RPMを捌くRailsアプリケーションの作り方

A79762150f8a3c6015ec11c4f494a371?s=47 kikunantoka
December 08, 2018

 20万RPMを捌くRailsアプリケーションの作り方

A79762150f8a3c6015ec11c4f494a371?s=128

kikunantoka

December 08, 2018
Tweet

Transcript

  1. 20ສRPMΛࡹ͘ RailsΞϓϦέʔγϣϯͷ࡞Γํ גࣜձࣾΪϑςΟ ٠઒ ࢙و Rails Developers Meetup 2018 Day

    4 Nouvelle Vague on 2018/12/08
  2. ࣗݾ঺հ about: name: Fumitaka Kikukawa twitter: @kikunantoka job: engineer work_at:

    giftee Inc. // giftee is a good company.
  3. ࣗݾ঺հ

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

  5. ձࣾ֓ཁ

  6. ձࣾ֓ཁ

  7. ࣄۀ಺༰

  8. ࣄۀ಺༰

  9. ࣄۀ಺༰

  10. औΓѻ͍ͬͯΔΪϑτ • gifteeͰ͸ Starbucks ͷίʔώʔ ΋ଃΕ·͢

  11. ίʔώʔεϙϯαʔ • Starbucks ͷίʔώʔΛΈͳ͞ΜʹଃΒ͍͖ͤͯͨͩ·ͨ͠

  12. ୲౰͍ͯ͠ΔϓϩμΫτ

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

  14. LINE΋औΓѻ͍ͬͯ·͢ HJGUFFΠϯελϯτ΢ΟϯGPS-*/&ͷڧΈᶃ ©2018 gi)ee Inc. all rights reserved J நબ͔Βܠ඼ͷఏڙ·ͰҰؾ௨؏Ͱ͝ఏڙ

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

  16. 20ສ RPMΛࡹ͘ RailsΞϓϦέʔγϣϯͷ࡞Γํ גࣜձࣾΪϑςΟ ٠઒ ࢙و Rails Developers Meetup 2018

    Day 4 Nouvelle Vague on 2018/12/08 30ສ
  17. ఻͍͑ͨ͜ͱ • ΞϓϦέʔγϣϯίʔυͷ΍͍͖ͬͯ • Πϯϑϥͷ΍͍͖ͬͯ • νʔϜ։ൃͷ΍͍͖ͬͯ

  18. ΞϓϦέʔγϣϯίʔυͷ ΍͍͖ͬͯ

  19. ෛՙݕূΛͯ͠ϘτϧωοΫΛऔΓআ͘ • Flood.io • GATLING, JMETER , ruby-jmeter ͳͲ

  20. ෛՙݕূΛͯ͠ϘτϧωοΫΛऔΓআ͘ • New Relic • ϘτϧωοΫͷಛఆ

  21. ෛՙݕূΛͯ͠ϘτϧωοΫΛऔΓআ͘ • ੩తϑΝΠϧ͸CDN഑৴͢Δ • σʔλ͕૿͑Δ͜ͱʹΑͬͯੑೳྼԽ͠ͳ͍͔ • εϩʔΫΤϦΛ౤͍͛ͯͳ͍͔ • ϩοΫॲཧͷൣғ͕޿͗͢ͳ͍͔ •

    σουϩοΫ͍ͯ͠ͳ͍͔ • ແବͳΠϯελϯεΛੜ੒͍ͯ͠ͳ͍͔
  22. ෛՙݕূΛͯ͠ϘτϧωοΫΛऔΓআ͘ • DB ͷ Pool ਺΍ Puma ͷ Thread ਺ɺWorker

    ਺͸ద੾͔ • DB ͷ Pool ਺ -> Puma ͷεϨου਺ • Puma ͷ Worker ਺ -> CPUͷίΞ਺ • Puma ͷ Thread ਺ -> CPU࢖༻཰ͱ૬ஊ
  23. Πϯϑϥͷ ΍͍͖ͬͯ

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

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

    ͷมߋ࣌ͷμ΢ϯλΠϜ͕5ඵఔ౓ʹ • ॻ͖ࠐΈIOPS͔Βͷ։์
  26. ࠷৽ͷΠϯελϯελΠϓΛ࢖͏ ໊લ W$16 3". $16ΫϨδοτ࣌ؒ ྉۚ࣌ؒ UTNBMM   

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

    1୆͋ͨΓ 64 Threads • 6000 / 64 = 93.75 • 92୆͙Β͍͕ݶքʂ
  28. νʔϜ։ൃͷ ΍͍͖ͬͯ

  29. ͪΌΜͱਓΛೖΕΔ • 1ਓͩͱӡ༻ਏ͍ • 2ਓ͍Ε͹ɺਏ͍͜ͱ͸൒෼ʹɺتͼ͸2ഒʹ • ͓ۚΛՔ͙ • ੠Λ্͛Δ

  30. ൿ఻ͷλϨΛແ͍ͯ͘͘͠ • ϝϯόʔ͕ೖͬͨλΠϛϯάͰrubocop.ymlΛݟ௚ͨ͠ • Railsʹ΄΅४ڌͨ͠ • rubocop-rails_config gemΛ࢖ͬͨ • rubocop

    --auto-gen-config ͱ rubocop -a Ͱ௚͍ͯ͘͠
  31. ͳΜͪΌͬͯεΫϥϜΛಋೖ͢Δ • ͓ޓ͍ͷλεΫͷՄࢹԽ • TrelloͰ؅ཧ • Agile ToolsΛೖΕΔ͜ͱͰϕϩγςΟ΋ܭଌͰ͖Δ

  32. ڞ௨ೝࣝΛ૿΍͍ͯ͘͠ • ྠಡΛߦ͍ͬͯΔ

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

  34. ίϚʔγϟϧ • Meetup΍Γ·͢ʂ - https://techplay.jp/event/711266 •