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
850
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.3k
Gatsby.jsとCloud Functionsで毎週自動でコンテンツが更新され続けるフレームワーク比較サイトを作った話 / gotanda_js_13
kikunantoka
1
2.4k
Gatsby.jsとCloud Functionsで毎週自動でコンテンツが更新され続けるフレームワーク比較サイトを作った話 / frontend_night_1
kikunantoka
3
1.8k
サービスがゼロからN億円規模になるまに実践した7つのやっていき / 7_yatteiki_battle_conference_u30_2019
kikunantoka
1
1.4k
Gatsby.jsとNetlifyとの付き合い方 / gatsby-js-and-netlify
kikunantoka
3
640
Gatsby.jsで導入事例をバシバシ読めるSPAなLPを作った話 / gatsby-js-for-biz-lp
kikunantoka
2
740
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
Gradle×GitHub_ActionsでCI時間を約50%短縮 ジョブ分割の設計と落とし穴 / Cutting CI Time by ~50% with Gradle and GitHub Actions: Job-Splitting Design and Pitfalls
takatty
0
440
Generative UI × A2UI で AI エージェントを作った話 AI-DLC も使ってみた!
kmiya84377
1
250
Kaggle未経験社員をメダリストに育てる「AIドラゴン桜」
lycorptech_jp
PRO
0
630
AI駆動開発でなんでもハンズオン環境をつくってみた
yoshimi0227
0
160
サプライチェーン攻撃への備えについて考えている #湘なんか
stefafafan
3
2.4k
人が担う「価値」とは?これからの「QA」とは / Human Value and the Future of Quality Assurance
bitkey
PRO
0
110
イベントストーミングとKiroの仕様駆動開発で実現する要件の認識合わせプロセス
syobochim
7
780
自作エディターをOSSにして分かった、一人に刺さる開発が世界を動かす理由
shinyasaita
1
440
Claude Codeですべての日常業務を爆速化しよう!
minorun365
PRO
16
14k
キャリア25年目にしてTypeScript に出会うまで - 「型」を通じて振り返るプログラミング言語遍歴 / Meeting TypeScript After 25 Years in Tech - Looking Back at My Programming Language Journey Through "Types"
bitkey
PRO
2
290
RubyでRuby拡張を書いたらRubyより35倍速になったってどういうこと??
kazuho
3
650
『家族アルバム みてね』における インシデント対応との向き合い方 / Approach incident response in Family Album
kohbis
2
230
Featured
See All Featured
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
390
Typedesign – Prime Four
hannesfritz
42
3k
A Modern Web Designer's Workflow
chriscoyier
698
190k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.7k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
RailsConf 2023
tenderlove
30
1.4k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.6k
Testing 201, or: Great Expectations
jmmastey
46
8.2k
Building Applications with DynamoDB
mza
96
7k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.9k
Side Projects
sachag
455
43k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
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 •