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
20万RPMを捌くRailsアプリケーションの作り方
Search
kikunantoka
December 08, 2018
Technology
0
810
20万RPMを捌くRailsアプリケーションの作り方
kikunantoka
December 08, 2018
Tweet
Share
More Decks by kikunantoka
See All by kikunantoka
個人開発しているサービスのインフラをAWSからGCPに載せ替えた話 💪 / kojin_kaihatsu_night_3
kikunantoka
0
1.2k
Gatsby.jsとCloud Functionsで毎週自動でコンテンツが更新され続けるフレームワーク比較サイトを作った話 / gotanda_js_13
kikunantoka
1
2.4k
Gatsby.jsとCloud Functionsで毎週自動でコンテンツが更新され続けるフレームワーク比較サイトを作った話 / frontend_night_1
kikunantoka
3
1.6k
サービスがゼロからN億円規模になるまに実践した7つのやっていき / 7_yatteiki_battle_conference_u30_2019
kikunantoka
1
1.3k
Gatsby.jsとNetlifyとの付き合い方 / gatsby-js-and-netlify
kikunantoka
3
600
Gatsby.jsで導入事例をバシバシ読めるSPAなLPを作った話 / gatsby-js-for-biz-lp
kikunantoka
2
670
Gatsby.jsで導入事例をバシバシ読めるSPAなLPを作った話 / gatsby-js-for-biz-lp
kikunantoka
1
1.8k
今日から始める Flood.io / fuka-taisaku-night-01
kikunantoka
0
320
MVPに絞ったら個人開発でもちゃんとリリースできた話
kikunantoka
1
530
Other Decks in Technology
See All in Technology
[ JAWS-UG 東京 CommunityBuilders Night #2 ]SlackとAmazon Q Developerで 運用効率化を模索する
sh_fk2
3
450
新規プロダクトでプロトタイプから正式リリースまでNext.jsで開発したリアル
kawanoriku0
1
160
💡Ruby 川辺で灯すPicoRubyからの光
bash0c7
0
120
Firestore → Spanner 移行 を成功させた段階的移行プロセス
athug
1
490
250905 大吉祥寺.pm 2025 前夜祭 「プログラミングに出会って20年、『今』が1番楽しい」
msykd
PRO
1
980
普通のチームがスクラムを会得するたった一つの冴えたやり方 / the best way to scrum
okamototakuyasr2
0
100
実践!カスタムインストラクション&スラッシュコマンド
puku0x
0
480
20250913_JAWS_sysad_kobe
takuyay0ne
2
230
企業の生成AIガバナンスにおけるエージェントとセキュリティ
lycorptech_jp
PRO
2
190
エンジニアリングマネージャーの成長の道筋とキャリア / Developers Summit 2025 KANSAI
daiksy
1
290
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
10
75k
OCI Oracle Database Services新機能アップデート(2025/06-2025/08)
oracle4engineer
PRO
0
170
Featured
See All Featured
Reflections from 52 weeks, 52 projects
jeffersonlam
352
21k
Git: the NoSQL Database
bkeepers
PRO
431
66k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6k
Being A Developer After 40
akosma
90
590k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
139
34k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.1k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
131
19k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
Optimising Largest Contentful Paint
csswizardry
37
3.4k
BBQ
matthewcrist
89
9.8k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3k
Building Better People: How to give real-time feedback that sticks.
wjessup
368
19k
Transcript
20ສRPMΛࡹ͘ RailsΞϓϦέʔγϣϯͷ࡞Γํ גࣜձࣾΪϑςΟ ٠ ࢙و Rails Developers Meetup 2018 Day
4 Nouvelle Vague on 2018/12/08
ࣗݾհ about: name: Fumitaka Kikukawa twitter: @kikunantoka job: engineer work_at:
giftee Inc. // giftee is a good company.
ࣗݾհ
ࣗݾհ https://nakamy.com
ձࣾ֓ཁ
ձࣾ֓ཁ
ࣄۀ༰
ࣄۀ༰
ࣄۀ༰
औΓѻ͍ͬͯΔΪϑτ • gifteeͰ Starbucks ͷίʔώʔ ଃΕ·͢
ίʔώʔεϙϯαʔ • Starbucks ͷίʔώʔΛΈͳ͞ΜʹଃΒ͍͖ͤͯͨͩ·ͨ͠
୲͍ͯ͠ΔϓϩμΫτ
୲͍ͯ͠ΔϓϩμΫτ ʢࣾͰ($1ͱུ͞Εͩ͢ʜʣ HJGUFFΠϯελϯτΟϯGPS5XJUUFSͷڧΈᶃ நબ͔Βܠͷఏڙ·ͰҰؾ௨؏Ͱ͝ఏڙ நબγεςϜ ʢΠϯελϯτΟϯʣ σδλϧΪϑτͷఏڙ ʢछྨҎ্ͷܠʣ ϦΞϧλΠϜʹநબɺ ͦͷͰܠΛ༩
LINEऔΓѻ͍ͬͯ·͢ HJGUFFΠϯελϯτΟϯGPS-*/&ͷڧΈᶃ ©2018 gi)ee Inc. all rights reserved J நબ͔Βܠͷఏڙ·ͰҰؾ௨؏Ͱ͝ఏڙ
நબγεςϜ ʢΠϯελϯτΟϯʣ σδλϧΪϑτͷఏڙ ʢछྨҎ্ͷܠʣ ϦΞϧλΠϜʹநબɺ ͦͷͰܠΛ༩
ΊͬͪΌΞΫηεདྷΔ • ༑ͩͪ 2300ສͷΞΧϯτͰΩϟϯϖʔϯΛ࣮ࢪͨ݁͠Ռ ʊਓਓਓਓਓਓਓਓਓਓਓʊ ʼɹ࠷େ 30ສRPMɹʻ ʉY^Y^Y^Y^Y^Y^Y^Y^ʉ
20ສ RPMΛࡹ͘ RailsΞϓϦέʔγϣϯͷ࡞Γํ גࣜձࣾΪϑςΟ ٠ ࢙و Rails Developers Meetup 2018
Day 4 Nouvelle Vague on 2018/12/08 30ສ
͍͑ͨ͜ͱ • ΞϓϦέʔγϣϯίʔυͷ͍͖ͬͯ • Πϯϑϥͷ͍͖ͬͯ • νʔϜ։ൃͷ͍͖ͬͯ
ΞϓϦέʔγϣϯίʔυͷ ͍͖ͬͯ
ෛՙݕূΛͯ͠ϘτϧωοΫΛऔΓআ͘ • Flood.io • GATLING, JMETER , ruby-jmeter ͳͲ
ෛՙݕূΛͯ͠ϘτϧωοΫΛऔΓআ͘ • New Relic • ϘτϧωοΫͷಛఆ
ෛՙݕূΛͯ͠ϘτϧωοΫΛऔΓআ͘ • ੩తϑΝΠϧCDN৴͢Δ • σʔλ͕૿͑Δ͜ͱʹΑͬͯੑೳྼԽ͠ͳ͍͔ • εϩʔΫΤϦΛ͍͛ͯͳ͍͔ • ϩοΫॲཧͷൣғ͕͗͢ͳ͍͔ •
σουϩοΫ͍ͯ͠ͳ͍͔ • ແବͳΠϯελϯεΛੜ͍ͯ͠ͳ͍͔
ෛՙݕূΛͯ͠ϘτϧωοΫΛऔΓআ͘ • DB ͷ Pool Puma ͷ Thread ɺWorker
ద͔ • DB ͷ Pool -> Puma ͷεϨου • Puma ͷ Worker -> CPUͷίΞ • Puma ͷ Thread -> CPU༻ͱ૬ஊ
Πϯϑϥͷ ͍͖ͬͯ
εέʔϧΞοϓͰ͖ΔΑ͏ʹ͓ͯ͘͠ • Elastic Beanstalk
εέʔϧΞοϓͰ͖ΔΑ͏ʹ͓ͯ͘͠ • Amazon Aurora • ؾ߹͍ͰRDS for MySQL͔ΒҠߦͨ͠ • ϑΣΠϧΦʔόʔػೳΛ͏͜ͱͰɺΠϯελϯελΠϓ
ͷมߋ࣌ͷμϯλΠϜ͕5ඵఔʹ • ॻ͖ࠐΈIOPS͔Βͷ։์
࠷৽ͷΠϯελϯελΠϓΛ͏ ໊લ W$16 3". $16ΫϨδοτ࣌ؒ ྉۚ࣌ؒ UTNBMM
64% UTNBMM 64% • ίεύ͕ྑ͍ • Puma ͷ Worker Λ 2 ʹͰ͖Δ -> 2ഒͷεϨου
WebαʔόΛཱͯ·͘Ε͍͍͍ͬͯ͏Ͱͳ͍ • db.r4.16xlargeͷ߹ • 32 Threads x 2 Workers •
1͋ͨΓ 64 Threads • 6000 / 64 = 93.75 • 92͙Β͍͕ݶքʂ
νʔϜ։ൃͷ ͍͖ͬͯ
ͪΌΜͱਓΛೖΕΔ • 1ਓͩͱӡ༻ਏ͍ • 2ਓ͍Εɺਏ͍͜ͱʹɺتͼ2ഒʹ • ͓ۚΛՔ͙ • Λ্͛Δ
ൿͷλϨΛແ͍ͯ͘͘͠ • ϝϯόʔ͕ೖͬͨλΠϛϯάͰrubocop.ymlΛݟͨ͠ • Railsʹ΄΅४ڌͨ͠ • rubocop-rails_config gemΛͬͨ • rubocop
--auto-gen-config ͱ rubocop -a Ͱ͍ͯ͘͠
ͳΜͪΌͬͯεΫϥϜΛಋೖ͢Δ • ͓ޓ͍ͷλεΫͷՄࢹԽ • TrelloͰཧ • Agile ToolsΛೖΕΔ͜ͱͰϕϩγςΟܭଌͰ͖Δ
ڞ௨ೝࣝΛ૿͍ͯ͘͠ • ྠಡΛߦ͍ͬͯΔ
ίϚʔγϟϧ • We are hiring!!! - Ұॹʹಇؒ͘Λืूதʂ ձһສਓಥഁʂ ࠃ/PͷΧδϡΞϧΪϑταʔϏε
ίϚʔγϟϧ • MeetupΓ·͢ʂ - https://techplay.jp/event/711266 •