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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
kikunantoka
December 08, 2018
Technology
840
0
Share
20万RPMを捌くRailsアプリケーションの作り方
kikunantoka
December 08, 2018
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.7k
サービスがゼロからN億円規模になるまに実践した7つのやっていき / 7_yatteiki_battle_conference_u30_2019
kikunantoka
1
1.4k
Gatsby.jsとNetlifyとの付き合い方 / gatsby-js-and-netlify
kikunantoka
3
630
Gatsby.jsで導入事例をバシバシ読めるSPAなLPを作った話 / gatsby-js-for-biz-lp
kikunantoka
2
730
Gatsby.jsで導入事例をバシバシ読めるSPAなLPを作った話 / gatsby-js-for-biz-lp
kikunantoka
1
1.9k
今日から始める Flood.io / fuka-taisaku-night-01
kikunantoka
0
350
MVPに絞ったら個人開発でもちゃんとリリースできた話
kikunantoka
1
560
Other Decks in Technology
See All in Technology
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
3
2.1k
やさしいとこから始めるGitHubリポジトリのセキュリティ
tsubakimoto_s
3
2.2k
Even G2 クイックスタートガイド(日本語版)
vrshinobi1
0
200
AIドリブン開発の実践知 ― AI-DLC Unicorn Gym実施から見えた可能性と課題
mixi_engineers
PRO
0
110
バックオフィスPJのPjMをコーポレートITが担うとうまくいく3つの理由
yueda256
1
270
Databricks Lakehouse Federationで 運用負荷ゼロのデータ連携
nek0128
0
110
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
5
1.3k
会社紹介資料 / Sansan Company Profile
sansan33
PRO
16
410k
【AWS】CloudTrail LakeとCloudWatch Logs Insightsの使い分け方針
tsurunosd
0
130
推し活エージェント
yuntan_t
1
790
主催・運営として"場をつくる”というアウトプットのススメ
_mossann_t
0
100
Cursor Subagentsはいいぞ
yug1224
2
140
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.2k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.3k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
120
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.1k
Odyssey Design
rkendrick25
PRO
2
560
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
250
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.9k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
200
BBQ
matthewcrist
89
10k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.1k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.4k
Claude Code のすすめ
schroneko
67
220k
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 •